reactor/reactor-core

Improve Flux.timeout efficiency

Open

#2 845 ouverte le 21 nov. 2021

Voir sur GitHub
 (17 commentaires) (3 réactions) (0 assignés)Java (1 164 forks)batch import
area/performancefor/user-attentionhelp wanted

Métriques du dépôt

Stars
 (4 748 stars)
Métriques de merge PR
 (Merge moyen 16j 15h) (25 PRs mergées en 30 j)

Description

Current implementation uses parallel scheduler by default which is in essence a ScheduledThreadPoolExecutor which has the task queue guarded by ReentrantLock, which means two trips through said lock per signal on average

After looking at Netty's https://github.com/netty/netty/blob/4.1/handler/src/main/java/io/netty/handler/timeout/IdleStateHandler.java there appears to be a way to do fewer timeout task reschedules if you let go of the idea illustrated by the current marble diagrams (new signal cancels the previous timeout task)

WDYT? this really prevents Flux.timeout from being useful with high-frequency publishers which may occasionally stall

suggestion inspired by https://gitter.im/reactor/reactor?at=61968a44197fa95a1c7adf05

Guide contributeur