Non-blocking out-of-core stream utilities#2347
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #2347 +/- ##
============================================
+ Coverage 72.26% 72.29% +0.02%
- Complexity 46736 46786 +50
============================================
Files 1503 1505 +2
Lines 177262 177396 +134
Branches 34836 34853 +17
============================================
+ Hits 128104 128248 +144
+ Misses 39488 39475 -13
- Partials 9670 9673 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Thanks @janniklinde for the initiative creating these primitives. Could you please look into resolving the merge conflicts with the new eviction logic we merged in yesterday? Furthermore, I ran a few experiments with |
|
Hi @janniklinde - it's a great redesign! :) thanks |
…e callback handling Remove unnecessary TODO Merge OOCEvicitionManager support into CachingStream Update CachingStream.java Create subscribable abstractions for OOC streams without affecting LocalTaskQueue Remove unnecessary implement
6caaaf0 to
e55a6b7
Compare
|
I have now resolved the conflicts @mboehm7. Additionally, I reverted (most) of the changes of Further, I added two abstractions |
|
Thanks @janniklinde for the improved patch. During the merge I only removed unnecessary imports and made some overwritten methods synchronized (which might have caused the flaky tests). |
This patch introduces common OOC stream processing functions such as
mapOOC(in, out, mapper)andjoinOOC(in1, in2, out, mapper, joinOn). It transitions to a non-blocking, item based scheduling model to eliminate blocking on dequeue operations. To support this, a subscriber system forLocalTaskQueuehas been implemented.To enable parallel processing of
ResettableStream, a newCachingStream(replacingResettableStream) and correspondingPlaybackStreamare introduced. This design decouples cache storage from playback, allowing multiple concurrent playbacks over a shared stream. When aCachingStreamis used,getStreamHandle()now returns a newPlaybackStreamif aCachingStreamis present.