bookkeeper icon indicating copy to clipboard operation
bookkeeper copied to clipboard

[feat] Add observability to OutOfMemoryErrors when OutOfMemoryPolicy is FallbackToHeap

Open lhotari opened this issue 1 year ago • 1 comments

FEATURE REQUEST

Currently when direct memory allocation fails with OutOfMemoryError, the default OutOfMemoryPolicy is FallbackToHeap and the exception is catched silently:

https://github.com/apache/bookkeeper/blob/b372e9031e3f43adc831947332a6852680e750db/bookkeeper-common-allocator/src/main/java/org/apache/bookkeeper/common/allocator/impl/ByteBufAllocatorImpl.java#L174-L187

It would be great to be able to observe this condition. Pulsar uses ByteBufAllocatorImpl also for Pulsar client and it's hard to detect that Netty direct buffer direct access isn't properly configured unless there's a way to observe the condition. Netty direct memory buffer access is explained in Pulsar client's "Java client Performance considerations", https://pulsar.apache.org/docs/4.0.x/client-libraries-java-setup/#java-client-performance .

After there's a counter in ByteBufAllocatorImpl, it would be possible to implement a metric in Pulsar client.

lhotari avatar Dec 05 '24 08:12 lhotari

I guess having a metric for heapBuffer allocations would also be a way to notice the rate of heapBuffer allocations.

lhotari avatar Dec 05 '24 08:12 lhotari