Details
-
Fix
-
Status: Released (View Workflow)
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
Current Stuation
- The History Service uses a caching mechanism to reduce database transactions.
- The History Service creates its own cache objects based on the following JS7 objects:
- Workflows
- each workflow used is added to the cache and remains in the cache.
- Orders
- an order and possible child orders (Fork/Join Instruction) are added to the cache and are removed when an order is terminated (OrderCancelled, OrderFinished, OrderBroken).
- orders that are not completed and are e.g. in a failed, suspended state, remain in the cache:
- child orders (Fork instruction) are not removed from the cache, which can cause an OutOfMemory exception.
- an order and possible child orders (Fork/Join Instruction) are added to the cache and are removed when an order is terminated (OrderCancelled, OrderFinished, OrderBroken).
- Order Steps/Jobs
- Workflows
Desired Behavior
- The History Service should have a robust caching mechanism.
- In addition to the correct add/remove operations from the History Cache, the History Service should start a routine every hour to clean up cached Workflows/Orders/Order Steps that are still present but no longer in use (garbage collection).
Test Instructions
- Create and start a workflow (use Fork/Join Instruction)
- Check the logs/service-history.log file and look for [cached workflows=<n>,orders=<n>,steps=<n>] at the end of each history line
- Expected result:
- Finished/Cancelled/Broken Orders with all child orders and steps should be removed from the History Cache immediately.
- Failed/Suspended Orders and Workflows should be removed after 1 hour
- Expected result: