diff --git a/akka-stream/src/main/scala/akka/stream/impl/fusing/GraphInterpreter.scala b/akka-stream/src/main/scala/akka/stream/impl/fusing/GraphInterpreter.scala index b8e32a957f..6dae4b87c5 100644 --- a/akka-stream/src/main/scala/akka/stream/impl/fusing/GraphInterpreter.scala +++ b/akka-stream/src/main/scala/akka/stream/impl/fusing/GraphInterpreter.scala @@ -248,12 +248,6 @@ private[stream] object GraphInterpreter { private[stream] def currentInterpreterOrNull: GraphInterpreter = _currentInterpreter.get()(0).asInstanceOf[GraphInterpreter] - /** - * INTERNAL API - */ - private[stream] def setCurrentInterpreter(gi: GraphInterpreter) = - _currentInterpreter.get()(0) = gi - } /** @@ -502,8 +496,9 @@ private[stream] final class GraphInterpreter( */ def execute(eventLimit: Int): Unit = { if (Debug) println(s"$Name ---------------- EXECUTE (running=$runningStages, shutdown=${shutdownCounter.mkString(",")})") - val previousInterpreter = currentInterpreterOrNull - setCurrentInterpreter(this) + val currentInterpreterHolder = _currentInterpreter.get() + val previousInterpreter = currentInterpreterHolder(0) + currentInterpreterHolder(0) = this try { var eventsRemaining = eventLimit while (eventsRemaining > 0 && queueTail != queueHead) { @@ -518,7 +513,7 @@ private[stream] final class GraphInterpreter( eventsRemaining -= 1 } } finally { - setCurrentInterpreter(previousInterpreter) + currentInterpreterHolder(0) = previousInterpreter } if (Debug) println(s"$Name ---------------- $queueStatus (running=$runningStages, shutdown=${shutdownCounter.mkString(",")})") // TODO: deadlock detection