Hi all,
I would really appreciate your support.
From time to time our nightly process gets blocked, the explanation is clear, while trying to import an ImpEx a lock occurs and any later ImpEx become locked anyway.
Find below a sample dump:
task scheduler
"task-scheduler-9" prio=5 tid=0x70 nid=0x46 TIMED_WAITING - stats: cpu=10150 blk=-1 wait=-1
java.lang.Thread.State: TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.ensureResultProcessorStarted(MultiThreadedImpExImportReader.java:738)
- locked de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader@4aad9ec1
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.readLine(MultiThreadedImpExImportReader.java:185)
at de.hybris.platform.impex.jalo.Importer.doImport(Importer.java:254)
at de.hybris.platform.impex.jalo.Importer.importNextInternal(Importer.java:757)
at de.hybris.platform.impex.jalo.Importer.importNext(Importer.java:738)
at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.doImport(ImpExImportJob.java:290)
at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.performJob(ImpExImportJob.java:247)
at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.performCronJob(ImpExImportJob.java:114)
at de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1301)
at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:819)
at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:738)
at de.hybris.platform.cronjob.jalo.Job.perform(Job.java:639)
at de.hybris.platform.servicelayer.cronjob.impl.DefaultCronJobService.performCronJob(DefaultCronJobService.java:137)
at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importData(DefaultImportService.java:57)
at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importData(DefaultImportService.java:174)
at de.hybris.platform.acceleratorservices.dataimport.batch.task.AbstractImpexRunnerTask.processFile(AbstractImpexRunnerTask.java:86)
at com.XXX.integration.dataimport.batch.task.AbstractXXXImpexImportTask.access$2(AbstractXXXImpexImportTask.java:1)
at com.XXX.integration.dataimport.batch.task.AbstractXXXImpexImportTask$1.execute(AbstractXXXImpexImportTask.java:57)
at com.XXX.integration.dataimport.batch.task.AbstractXXXImpexImportTask$1.execute(AbstractXXXImpexImportTask.java:1)
at de.hybris.platform.servicelayer.session.impl.DefaultSessionService.executeInLocalView(DefaultSessionService.java:88)
ImpExReaderWorker
"ImpExReaderWorker" prio=5 tid=0x839 nid=0x347 BLOCKED owned by task-scheduler-9 Id=70 - stats: cpu=310351 blk=-1 wait=-1
java.lang.Thread.State: BLOCKED
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.getValueLineQueue(MultiThreadedImpExImportReader.java:539)
- waiting to lock de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader@4aad9ec1
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.waitForEmptyValueLineQueue(MultiThreadedImpExImportReader.java:864)
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.execute(MultiThreadedImpExImportReader.java:603)
at de.hybris.platform.impex.jalo.ImpExReader.execute(ImpExReader.java:3093)
at de.hybris.platform.impex.jalo.ImpExReader.processCodeLine(ImpExReader.java:2998)
at de.hybris.platform.impex.jalo.ImpExReader.readLine(ImpExReader.java:1918)
at de.hybris.platform.impex.jalo.imp.ImpExImportReader.readLine(ImpExImportReader.java:498)
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.readLineFromWorker(MultiThreadedImpExImportReader.java:311)
at de.hybris.platform.impex.jalo.imp.ImpExReaderWorker.perform(ImpExReaderWorker.java:44)
at de.hybris.platform.impex.jalo.imp.ImpExWorker.run(ImpExWorker.java:87)
at de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
Locked synchronizers: count = 0
ImpExResultProcessWorker
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.fetchNextWorkerResult(MultiThreadedImpExImportReader.java:421)
at de.hybris.platform.impex.jalo.imp.ImpExResultProcessWorker.perform(ImpExResultProcessWorker.java:42)
at de.hybris.platform.impex.jalo.imp.ImpExWorker.run(ImpExWorker.java:87)
at de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
Every ImpExWorker
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at de.hybris.platform.util.DefaultWorkerValueQueue.take(DefaultWorkerValueQueue.java:133)
at de.hybris.platform.impex.jalo.imp.MultiThreadedImpExImportReader.fetchNextValueLine(MultiThreadedImpExImportReader.java:410)
at de.hybris.platform.impex.jalo.imp.ImpExWorker.perform(ImpExWorker.java:148)
at de.hybris.platform.impex.jalo.imp.ImpExWorker.run(ImpExWorker.java:87)
at de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)