Troubleshooting
Problem
Attempts to run ManageTaskQueue application programming interfaces (API) configured in an integration server in multi-thread mode results in the error YFC0009 in IBM Sterling Order Management.
Symptom
Steps to reproduce:
- Create a service, service1 to put messages into JMS queue.
- Create a second service service2 to pick this messages and call manageTaskQueue API with multiple Initial threads( for example 5 threads)
- Run service2 to call manageTaskQueue API through integration server
You get receive exception YFC0009.
Cause
The manageTaskQueue API doesn't acquire a lock, when 2 or more threads are trying to update the same record.
Diagnosing The Problem
When multiple threads are working on same record, the threads start with same lockid. One thread will update the lockid, but other threads will not know. Other thread assumes the lockid to be same as set initially. Other thread will try to update the initial lockid (which it reads when it started processing), then other thread will fail with error YFC0009.
Resolving The Problem
YFC0009 can be avoided by making sure each thread acquires a lock on the record, making sure that only one thread is working on the record at one time.
To achieve a locking behavior for this API:
Pass an additional attribute SelectMethod with value WAIT <TaskQueue SelectMethod="WAIT"........... /> in the input of the API.
Was this topic helpful?
Document Information
Modified date:
16 June 2018
UID
swg21676761