Troubleshooting
Problem
Multiple threads waiting on the com.ibm.icu.util.Calendar.getInstance object in IBM Sterling Selling and Fulfillment Suite causes the JVM to crash.
Symptom
The javacores will show thread blocked at com.ibm.icu.util.Calendar.getInstance
at com.ibm.icu.util.Calendar.getInstance(Calendar.java:1618)
- locked [0x00000007065dc470] (a java.lang.Class for com.ibm.icu.util.Calendar)
at com.yantra.yfc.util.YFCCalendarWrapper.newCalendar(YFCCalendarWrapper.java:31)
at com.yantra.yfc.util.YFCCalendarWrapper.newCalendar(YFCCalendarWrapper.java:35)
at com.yantra.yfc.util.YFCTimeZone. (YFCTimeZone.java:77)
Cause
- OMS is using the older version icu4j.jar as part of the application or an older version of the jar is loaded by the application server classloader.
- Existence of an older jar in the application server classpath
Diagnosing The Problem
During findInventory API call when the product has to evaluate promise options (ReqShipDates), each thread would need to acquire lock and one of them would be holding the lock for longer time.
For performance reason, the Calender.getInstance function is made not to be synchronized. Therefore, threads cannot be blocked due to this code block.
Resolving The Problem
To resolve:
- Verify if the Sterling in-built icu4j jar is of version 49_1 or above in the <Sterling Application Directory>/jar/icu4j directory.
If you see an older version being used, upgrade Sterling Application to the latest version. - If there exists an older jar in the application server classpath which overrides the application jar, then In such case, remove the older version of the jar.
Was this topic helpful?
Document Information
Modified date:
16 June 2018
UID
swg21987829