0

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?

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
The Beat
  • 150
  • 9
  • How you handle un controlled shutdown with Sql server? – Vivek Jul 04 '12 at 11:52
  • Hi Vivek, persisting in every On_idle using custom monitoring tables out of WF4 persistence can be reloaded again once the system starts. – The Beat Jul 05 '12 at 12:49
  • Have you added your own tables apart from WF tables provided for WF persistence? The basic idea is “Devart.Data.Oracle.WorkflowFoundation.dll” works equally like SQL server persistence using oracle as database. It’s a silly suggestion that do a small POC with Devart and oracle before actual technology shift. Devart one month trial version is free. – Vivek Jul 05 '12 at 13:05
  • Hi Vivek, I added them not for replacing SQL or Devart ones but for other purposes (monitoring, etc..), so, to my eyes, Devart is now working as well as SQLServer but it was a bug in the LockExpiration Time. After I manually solve that, all was correct. – The Beat Jul 05 '12 at 13:48
  • Congrats :).. voted +1 for your answer. – Vivek Jul 05 '12 at 13:52

2 Answers2

2

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.

The Beat
  • 150
  • 9
2

I have one important addition to the answer of "The Beat": the error with the missing brackets got only fixed in one place of two! Specifically, there is a method "ExtendLock" in the script "OracleInstanceStoreLogic.sql" which still has

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

(We have Devart version 7.8.287.0 at the time of writing, and the bug is still there.) This definitely caused problems with our workflows which went away after adding the brackets.

I've just filed a bug report to Devart.

Carsten Führmann
  • 3,119
  • 4
  • 26
  • 24
  • We will post here when the issue is fixed in "OracleInstanceStoreLogic.sql" which is supplied with dotConnect for Oracle installation. – Devart Aug 02 '13 at 15:18
  • 1
    New version of dotConnect for Oracle 7.9 is released! For more information, please refer to http://forums.devart.com/viewtopic.php?f=1&t=27875 . – Devart Sep 06 '13 at 07:46