=str speed up Async callback

Previously there was quite some contention on adding and removing promises. Now
we only cleanup after a (currently hard-coded) number of 256 executed promises.

A smaller number still showed contention in the SendQueueBenchmark.queue
benchmark.
This commit is contained in:
Johannes Rudolph 2017-12-06 11:01:52 +01:00
parent 52f30a8043
commit 6743d90e52
2 changed files with 44 additions and 45 deletions

View file

@ -445,10 +445,18 @@ import scala.util.control.NonFatal
activeStage = logic
try {
handler(evt)
if (promise.isDefined) promise.get.success(Done)
if (promise.isDefined) {
val p = promise.get
p.success(Done)
logic.onFeedbackDispatched()
}
} catch {
case NonFatal(ex)
if (promise.isDefined) promise.get.failure(ex)
if (promise.isDefined) {
val p = promise.get
promise.get.failure(ex)
logic.onFeedbackDispatched()
}
logic.failStage(ex)
}
afterStageHasRun(logic)