-
Notifications
You must be signed in to change notification settings - Fork 520
Non-blocking out-of-core stream utilities #2347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.