Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Normal
Description
I validated this via a unit test that slowed the ability of the log to drain to the filesystem. The compressed commit log will keep allocating buffers pending compression until it OOMs.
I have a fix that am not very happy with because the whole signal a thread to allocate a segment that depends on a resource that may not be available results in some obtuse usage of CompleatableFuture to rendezvous available buffers with CommitLogSegmentManager thread waiting to finish constructing a new segment. The CLSM thread is in turn signaled by the thread(s) that actually wants to write to the next segment, but aren't able to do it themselves.