=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:
parent
52f30a8043
commit
6743d90e52
2 changed files with 44 additions and 45 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue