In unit test the following deadlock appeared between a config synchronization and data publishing of a controller:
============================
"pool-1-thread-22":
waiting to lock monitor 0x00007f21f4489208 (object 0x00000000f2f0df88, a org.openbase.bco.dal.remote.detector.PresenceDetector),
which is held by "pool-2-thread-7"
"pool-2-thread-7":
waiting to lock monitor 0x00007f21b400f1e8 (object 0x00000000f2f0d648, a org.openbase.jul.schedule.SyncObject),
which is held by "pool-1-thread-7"
"pool-1-thread-7":
waiting to lock monitor 0x00007f21ac02e778 (object 0x00000000f2f0caf0, a org.openbase.jul.schedule.SyncObject),
which is held by "pool-2-thread-7"
Java stack information for the threads listed above:
===================================================
"pool-1-thread-22":
at org.openbase.bco.dal.remote.detector.PresenceDetector.updateMotionState(PresenceDetector.java:180)
- waiting to lock <0x00000000f2f0df88> (a org.openbase.bco.dal.remote.detector.PresenceDetector)
at org.openbase.bco.dal.remote.detector.PresenceDetector.lambda$new$0(PresenceDetector.java:98)
at org.openbase.bco.dal.remote.detector.PresenceDetector$$Lambda$192/727250772.update(Unknown Source)
at org.openbase.jul.pattern.AbstractObservable.lambda$notifyObservers$0(AbstractObservable.java:276)
at org.openbase.jul.pattern.AbstractObservable$$Lambda$71/1678368632.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"pool-2-thread-7":
at org.openbase.jul.extension.rsb.com.AbstractConfigurableController.getConfig(AbstractConfigurableController.java:178)
- waiting to lock <0x00000000f2f0d648> (a org.openbase.jul.schedule.SyncObject)
at org.openbase.bco.dal.control.layer.unit.AbstractUnitController.filterDataForUser(AbstractUnitController.java:1206)
at org.openbase.bco.authentication.lib.com.AbstractAuthenticatedConfigurableController.updateDataToPublish(AbstractAuthenticatedConfigurableController.java:114)
at org.openbase.jul.extension.rsb.com.AbstractControllerServer.notifyChange(AbstractControllerServer.java:623)
- locked <0x00000000f2f0caf0> (a org.openbase.jul.schedule.SyncObject)
at org.openbase.jul.extension.protobuf.BuilderSyncSetup.unlockWrite(BuilderSyncSetup.java:193)
at org.openbase.jul.extension.protobuf.ClosableDataBuilder.close(ClosableDataBuilder.java:52)
at org.openbase.bco.dal.control.layer.unit.location.LocationControllerImpl$1.update(LocationControllerImpl.java:109)
at org.openbase.bco.dal.control.layer.unit.location.LocationControllerImpl$1.update(LocationControllerImpl.java:103)
at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:257)
- locked <0x00000000f2f0e040> (a org.openbase.jul.pattern.AbstractObservable$2)
at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:189)
at org.openbase.bco.dal.remote.detector.PresenceDetector.updatePresenceState(PresenceDetector.java:171)
- locked <0x00000000f2f0df88> (a org.openbase.bco.dal.remote.detector.PresenceDetector)
at org.openbase.bco.dal.remote.detector.PresenceDetector.access$100(PresenceDetector.java:53)
at org.openbase.bco.dal.remote.detector.PresenceDetector$1.expired(PresenceDetector.java:90)
at org.openbase.jul.schedule.Timeout.lambda$internal_start$0(Timeout.java:183)
at org.openbase.jul.schedule.Timeout$$Lambda$34/264675188.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"pool-1-thread-7":
at org.openbase.jul.extension.rsb.com.AbstractControllerServer.validateInitialization(AbstractControllerServer.java:801)
- waiting to lock <0x00000000f2f0caf0> (a org.openbase.jul.schedule.SyncObject)
at org.openbase.jul.extension.rsb.com.AbstractControllerServer.isActive(AbstractControllerServer.java:434)
at org.openbase.jul.extension.rsb.com.AbstractConfigurableController.applyConfigUpdate(AbstractConfigurableController.java:104)
- locked <0x00000000f2f0d648> (a org.openbase.jul.schedule.SyncObject)
at org.openbase.bco.dal.control.layer.unit.AbstractUnitController.applyConfigUpdate(AbstractUnitController.java:375)
at org.openbase.bco.dal.control.layer.unit.AbstractAggregatedBaseUnitController.applyConfigUpdate(AbstractAggregatedBaseUnitController.java:101)
- locked <0x00000000f2f0c8b0> (a org.openbase.bco.dal.control.layer.unit.location.LocationControllerImpl)
at org.openbase.bco.dal.control.layer.unit.AbstractUnitController$1.update(AbstractUnitController.java:174)
at org.openbase.bco.dal.control.layer.unit.AbstractUnitController$1.update(AbstractUnitController.java:168)
at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:257)
- locked <0x00000000ff400c88> (a org.openbase.jul.pattern.AbstractObservable$2)
at org.openbase.jul.pattern.AbstractObservable.notifyObservers(AbstractObservable.java:189)
at org.openbase.jul.extension.rsb.com.AbstractRemoteClient.applyDataUpdate(AbstractRemoteClient.java:1484)
at org.openbase.jul.extension.rsb.com.AbstractRemoteClient.applyEventUpdate(AbstractRemoteClient.java:1099)
- locked <0x00000000ff400ce0> (a org.openbase.jul.schedule.SyncObject)
at org.openbase.jul.extension.rsb.com.AbstractRemoteClient.access$1000(AbstractRemoteClient.java:73)
at org.openbase.jul.extension.rsb.com.AbstractRemoteClient$SyncTaskCallable.call(AbstractRemoteClient.java:1817)
at org.openbase.jul.extension.rsb.com.AbstractRemoteClient$SyncTaskCallable.call(AbstractRemoteClient.java:1681)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
In unit test the following deadlock appeared between a config synchronization and data publishing of a controller: