Search code examples
c#.net-4.0persistenceworkflow-foundation-4devart

Persistence in wf4 WorkflowApplication: SQL Server vs ORACLE DevArt


We have a 24x7 application that deals with dozens of WF4 instances.

We successfully implemented a persist & recovery strategy using SQL Instance Store persisting OnIdle, waiting for that status in the controlled shutdown and loading back in the recovery.

We needed to move to ORACLE and we have used DevArt Instance Store and we have some issues with the same code.

So far we are still persisting OnIdle but now we had to unload at controlled shutdown in order to be able to load in the recovery.

Our fear comes when we think about "not-so-gently" shutdowns that may appear.

What about the persisted instances without being unloaded if they cannot reach controlled shutdown method? How to recover them? Anyone have faced the same situation?


Solution

  • Found it,

    It can be done with ORACLE Devart Instance Store. The problem was a bug in the DevArt dotConnect package of OracleInstanceStoreLogic that rocketed the locking expiration time up to 2037 disallowing to load again the instance.

    Instead of

    newLockExpiration := sysdate + p_lockTimeout / 24*60*60;

    should be

    newLockExpiration := sysdate + p_lockTimeout / (24*60*60);

    I already reported the issue to the DevArt guys in order to fix it in the next update.