Timer: Add callback users can override to cleanup on cancellation
Refs: https://github.com/netty/netty/pull/14571
I think it would be nice to have this in Pekko too
Which API are you thinking of here? Where do we have timers that support cancellation?
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.
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?
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 :(