IBM Support

Multi Stop Functionality is causing performance issue

Troubleshooting


Problem

Using multistop functionality leads to performance issues and throws Out of memory error in IBM Sterling Order Management.

Symptom

Out of memory at following code or JVM threads are stuck at following code.

java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.LinkedList.listIterator(LinkedList.java:866)
    at java.util.AbstractList.listIterator(AbstractList.java:299)
    at java.util.AbstractList.equals(AbstractList.java:519)
    at com.yantra.ysc.business.path.YSCPath.equals(YSCPath.java:179)
    at com.yantra.omp.business.YFSMultiStopTransferManager.containsPath(YFSMultiStopTransferManager.java:263)
    at com.yantra.omp.business.YFSMultiStopTransferManager.populateAllPathCache(YFSMultiStopTransferManager.java:253)
    at com.yantra.omp.business.YFSMultiStopTransferManager.addPathToAllPathMap(YFSMultiStopTransferManager.java:237)
    at com.yantra.omp.business.YFSMultiStopTransferManager.populatePathFromCache(YFSMultiStopTransferManager.java:291)
    at com.yantra.omp.business.YFSMultiStopTransferManager.depthFirstSearchForGraph(YFSMultiStopTransferManager.java:162)
    at com.yantra.omp.business.YFSMultiStopTransferManager.depthFirstSearchForGraph(YFSMultiStopTransferManager.java:172)
    at com.yantra.omp.business.YFSMultiStopTransferManager.depthFirstSearchForGraph(YFSMultiStopTransferManager.java:172)
    at com.yantra.omp.business.YFSMultiStopTransferManager.execute(YFSMultiStopTransferManager.java:86)

Cause

Number of nodes configured for Multi Stop is set as 0. This configuration means there is no restriction on number of nodes in multi stop path during multi stop transfer.

Diagnosing The Problem

When number of nodes configured for Multi Stop is set as 0. Then during availability call, product might go in big loop based on the nodes available for multi stop transfer and transfer configuration. Product internally maintains the cache in multistoptransfer, hence cache size of this might cross the available memory when product goes in big loop. This will result in out of memory. Before out of memory comes that particular JVM will get stuck.

Collect the thread dumps and check if threads are stuck at com.yantra.omp.business.YFSMultiStopTransferManager.containsPath(YFSMultiStopTransferManager.java:263)

Resolving The Problem

Steps to resolve:

  1. Have non zero value of Number of Nodes to consider for multiStopTransfer.

  2. Disable cache of multiStopTransfer by setting following in customer overrides file.
    yfs.YSCMultiStopTransferCacheManager.skipcache=true

[{"Product":{"code":"SS6PEW","label":"Sterling Order Management"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Maintenance","Platform":[{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"9.3","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Document Information

Modified date:
11 February 2020

UID

swg21964018