IBM Support

Running ManageTaskQueue application programming interfaces throws error YFC0009 in Sterling Order Management

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:

  1. Create a service, service1 to put messages into JMS queue.

  2. Create a second service service2 to pick this messages and call manageTaskQueue API with multiple Initial threads( for example 5 threads)

  3. 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.

[{"Product":{"code":"SS6PEW","label":"Sterling Order Management"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"--","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Document Information

Modified date:
16 June 2018

UID

swg21676761