Skip to content

Fix action locking issue that causes an invalid transition from rejected to aborted #68

@DivineThreepwood

Description

@DivineThreepwood

Once the registration test count of the testPowerStateServicePerformance is increased from 100 to 1000 we run into an invalid transition from rejected to abording. Investigate test and fix issue.

The remote connection gets lost since the controller seems to be to busy.

21:35:55.042 [pool-1-thread-93] WARN  o.o.b.d.r.l.u.PowerSwitchRemote Remote connection to Controller[/location-1/powerswitch/powerswitch-1] lost!
21:35:59.729 [pool-1-thread-97] ERROR o.o.b.d.c.a.ActionImpl Can not finalize ActionImpl[action-normal-8ebaf922|POWER_STATE_SERVICE|{"value": "ON"}|powerswitch-ea87da4a|user-bco-f19a7c8d(SYSTEM)|INITIATING] it seems the execution has stuck.
21:35:59.735 [pool-1-thread-97] WARN  o.o.b.d.c.a.ActionImpl Can not change the state to ABORTING of an already rejected action!
21:35:59.736 [pool-1-thread-97] WARN  o.o.b.d.c.a.ActionImpl 
=== Stacktrace ===
org.openbase.jul.exception.StackTracePrinter.printStackTrace(StackTracePrinter.java:72)
org.openbase.bco.dal.control.action.ActionImpl.updateActionState(ActionImpl.java:763)
org.openbase.bco.dal.control.action.ActionImpl.updateActionStateWhileHoldingWriteLock(ActionImpl.java:744)
org.openbase.bco.dal.control.action.ActionImpl.abort(ActionImpl.java:559)
org.openbase.bco.dal.lib.action.SchedulableAction.abort(SchedulableAction.java:64)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.reschedule(AbstractUnitController.java:1080)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.scheduleAction(AbstractUnitController.java:858)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.applyAction(AbstractUnitController.java:675)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.internalApplyActionAuthenticated(AbstractUnitController.java:1278)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.lambda$applyActionAuthenticated$5(AbstractUnitController.java:1226)
org.openbase.bco.authentication.lib.AuthenticatedServiceProcessor.authenticatedAction(AuthenticatedServiceProcessor.java:135)
org.openbase.bco.authentication.lib.AuthenticatedServiceProcessor.authenticatedAction(AuthenticatedServiceProcessor.java:90)
org.openbase.bco.authentication.lib.AuthenticatedServiceProcessor.authenticatedAction(AuthenticatedServiceProcessor.java:69)
org.openbase.bco.dal.control.layer.unit.AbstractUnitController.applyActionAuthenticated(AbstractUnitController.java:1244)
jdk.internal.reflect.GeneratedMethodAccessor760.invoke(Unknown Source)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:568)
kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
org.openbase.jul.communication.mqtt.RPCMethod.invoke(RPCMethod.kt:223)
org.openbase.jul.communication.mqtt.RPCServerImpl.handleRemoteCall(RPCServerImpl.kt:141)
org.openbase.jul.communication.mqtt.RPCServerImpl.activate$lambda-2$lambda-1(RPCServerImpl.kt:65)
com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:303)
com.hivemq.client.internal.mqtt.MqttAsyncClient$CallbackSubscriber.onNext(MqttAsyncClient.java:288)
com.hivemq.client.rx.FlowableWithSingle$SingleFutureSubscriber.onNext(FlowableWithSingle.java:406)
com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber$Default.tryOnNextActual(FlowableWithSingleCombine.java:235)
com.hivemq.client.internal.rx.operators.FlowableWithSingleCombine$SplitSubscriber.tryOnNext(FlowableWithSingleCombine.java:200)
io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:649)
io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
==================
21:35:59.739 [pool-1-thread-97] INFO  o.o.j.p.JPVerbose Verbose is enabled!
21:35:59.742 [pool-1-thread-97] INFO  o.o.b.d.c.l.u.PowerSwitchController ActionImpl[action-normal-bdc604a5|POWER_STATE_SERVICE|{"value": "OFF"}|powerswitch-ea87da4a|user-bco-f19a7c8d(SYSTEM)|REJECTED] was postponed because of ActionImpl[action-termination-economy-0b796e97|POWER_STATE_SERVICE|{"value": "OFF"}|powerswitch-ea87da4a|user-bco-f19a7c8d(SYSTEM)|SUBMISSION] and added to the scheduling queue of PowerSwitchController[POWER_SWITCH[PW Power Plug Device]] at position 36.
21:35:59.745 [pool-1-thread-989] INFO  o.o.b.d.c.l.u.PowerSwitchController PW Power Plug Device is updated from off to off.
21:35:59.745 [pool-1-thread-97] ERROR o.o.b.a.l.AuthenticatedServerManager ═══⚀ Request timestamp [21.7.2022 - 21:35:54:89] differs more than 5 seconds from server time [21.7.2022 - 21:35:59:743]
21:35:59.746 [pool-1-thread-97] ERROR o.o.b.a.l.AuthenticatedServerManager =====================================
21:35:59.749 [pool-1-thread-97] ERROR o.o.b.a.l.AuthenticatedServerManager Request timestamp [21.7.2022 - 21:35:54:89] differs more than 5 seconds from server time [21.7.2022 - 21:35:59:743]
org.openbase.bco.authentication.lib.exception.SessionExpiredException: Request timestamp [21.7.2022 - 21:35:54:89] differs more than 5 seconds from server time [21.7.2022 - 21:35:59:743]
	at org.openbase.bco.authent

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions