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:
- Have non zero value of Number of Nodes to consider for multiStopTransfer.
- Disable cache of multiStopTransfer by setting following in customer overrides file.
yfs.YSCMultiStopTransferCacheManager.skipcache=true
Was this topic helpful?
Document Information
Modified date:
11 February 2020
UID
swg21964018