You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Akka CircuitBreaker should transition from the Closed state to the Open state when a call fails. However, in Akka.js the CircuitBreaker appears to fail to transition state from Closed to Open with an IllegalStateException.
java.lang.IllegalStateException: exception in sameThreadExecutionContext
at $c_jl_IllegalStateException.$c_jl_Throwable.fillInStackTrace__jl_Throwable(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:43697:14)
at $c_jl_IllegalStateException.$c_jl_Throwable.init___T__jl_Throwable__Z__Z(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:43805:10)
at java.lang.IllegalStateException.<init>(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:70673:58)
at akka.dispatch.ExecutionContexts$sameThreadExecutionContext$.reportFailure(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:57643:43)
at scala.concurrent.impl.CallbackRunnable.executeWithValue(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:55834:27)
at scala.concurrent.impl.Promise$KeptPromise$Kept.onComplete(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:62151:104)
at scala.concurrent.impl.Promise$KeptPromise$Failed.onComplete(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:88820:3)
at akka.pattern.CircuitBreaker$State.callThrough(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:4522:133)
at akka.pattern.CircuitBreaker$Closed$.invoke(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:78842:10)
at com.github.mliarakos.CircuitBreakerSpec.failedCall(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:120301:159)
Caused by: java.lang.IllegalStateException: exception in sameThreadExecutionContext
at $c_jl_IllegalStateException.$c_jl_Throwable.fillInStackTrace__jl_Throwable(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:43697:14)
at $c_jl_IllegalStateException.$c_jl_Throwable.init___T__jl_Throwable__Z__Z(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:43805:10)
at java.lang.IllegalStateException.<init>(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:70673:58)
at akka.dispatch.ExecutionContexts$sameThreadExecutionContext$.reportFailure(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:57643:43)
at scala.concurrent.impl.CallbackRunnable.run(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:55806:27)
at $c_Lakka_dispatch_BatchingExecutor$Batch.$c_Lakka_dispatch_BatchingExecutor$AbstractBatch.processBatch__Lakka_dispatch_BatchingExecutor$AbstractBatch__V(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:109512:46)
at akka.dispatch.BatchingExecutor$Batch.run(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:111476:10)
at akka.dispatch.BatchingExecutor.execute(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:8003:16)
at akka.dispatch.ExecutionContexts$sameThreadExecutionContext$.execute(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:57646:3)
at scala.concurrent.impl.CallbackRunnable.executeWithValue(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:55826:21)
Caused by: scala.scalajs.js.JavaScriptException: TypeError: this.currentStateCallMeDirectly$und$eq__O__ is not a function
at akka.pattern.CircuitBreaker.transition(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:36256:23)
at akka.pattern.CircuitBreaker$Closed$.callFails(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:78850:12)
at {anonymous}()(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:4504:18)
at scala.scalajs.runtime.AnonFunction1.apply(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:56903:23)
at scala.concurrent.impl.CallbackRunnable.run(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:55798:23)
at $c_Lakka_dispatch_BatchingExecutor$Batch.$c_Lakka_dispatch_BatchingExecutor$AbstractBatch.processBatch__Lakka_dispatch_BatchingExecutor$AbstractBatch__V(akkajs-circuit-breaker/target/scala-2.12/akkajs-circuit-breaker-test-fastopt.js:109512:46)
... 4 more
It looks like the underlying issue is that currentStateCallMeDirectly is not defined properly during the state transition. The property is initially defined as an IR patch in PatternIrPatch and is changed using the Unsafe macros.
The text was updated successfully, but these errors were encountered:
thanks a lot for the bug report @mliarakos I will try to find some time to look into it. This shows that there is some magic into the initialization, and should be fixed.
The Akka CircuitBreaker should transition from the Closed state to the Open state when a call fails. However, in Akka.js the CircuitBreaker appears to fail to transition state from Closed to Open with an IllegalStateException.
To reproduce the issue checkout the akkajs-circuit-breaker project. The stack trace is:
It looks like the underlying issue is that
currentStateCallMeDirectly
is not defined properly during the state transition. The property is initially defined as an IR patch in PatternIrPatch and is changed using the Unsafe macros.The text was updated successfully, but these errors were encountered: