pekko icon indicating copy to clipboard operation
pekko copied to clipboard

Timer: Add callback users can override to cleanup on cancellation

Open He-Pin opened this issue 1 year ago • 4 comments

Refs: https://github.com/netty/netty/pull/14571

I think it would be nice to have this in Pekko too

He-Pin avatar Dec 13 '24 09:12 He-Pin

Which API are you thinking of here? Where do we have timers that support cancellation?

raboof avatar Dec 13 '24 10:12 raboof

I mean when a ByteBuf/Resource is submitted to Pekko's scheduler with scheduleOnce, but then the task is canceled, then a callback may be need to release the related resource or return it to the pool.

This is some kind of resource management, and in the current implementation of the pekko stream, we lack the support for this too, where in rxjava/reactor-core , when an element is been dropped, an onDrop callback is been called.

He-Pin avatar Dec 13 '24 10:12 He-Pin

Gotcha, indeed scheduleOnce already returns a Cancellable which has a cancel() and an isCancelled, but doesn't allow 'listening' to the cancellation.

It doesn't look super easy to provide a way to 'listen' to the cancellation without sacrificing performance (or only sacrifices performance if someone is actually listening), but it might be worth a try.

Alternatively, or as a first step, perhaps we could provide a 'wrapper' that allows listening to the cancellation, but only if the cancellation happens through that wrapper?

raboof avatar Dec 13 '24 11:12 raboof

Once the Netty one is merged, I will take a look at pekko's too, we found this because there is a OOM/LEAK in our traffic dispatcher :(

He-Pin avatar Dec 13 '24 12:12 He-Pin