After months of work we finally got our first workflow into production around January. Since then it's been used by the business owners with little issue. Suddenly, though, we're being told of an error that they now realize has been randomly happening since our initial deployment and our team is struggling to figure out what the cause is.
Background:
- The K2 database and our own K2ApplicationData database reside on the same server. We technically have two servers, though, and K2 actually connects via a listener that load balances between the two.
- Our process sends an email with a link to a form that allows the customer to complete their task. When the task is completed by the user, we use a SmartObject to update a table entry in the K2ApplicationData database. If the task is not completed by the user within 30 days the task is automatically completed and we use the same SmartObject to update a table entry in the K2ApplicationData database. These table entries simply update a Status field, setting the value from "In Process" to either "Accepted" or "Expired".
- Because of the above functionality, when a task is complete the table entry in the K2ApplicationData database must be set to either "Accepted" or "Expired". A completed task or task older than 30 days that still shows as "In Process" means we have an issue.
Our issue is that a small percentage of tasks have been completed however their entry in the K2ApplicationData database is still set to "In Process".
Why? How can this happen? The K2 and K2ApplicationData database are on the same server, so if one is down then both are down, right? This means we can't update the task in K2, setting it to complete, but not access the K2ApplicationData database. Even if we could wouldn't there be some "cannot connect" error somewhere? No errors have been found in the logs, the error profiles or presented to the user. I've talked with our DBA and he says an UPDATE command sent to the K2ApplicationData database cannot silently fail.
Due to the nature of the workflow the update to the K2ApplicationData database must complete before K2 considers the task complete, and looking at the logs of all these tasks that step completed without error.
Any ideas? Could it be related to how we have our SQL environment setup?
Thanks