Write to cache entries read but not served to Consumers #102
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a POC PR to solve apache#16421
the problem that it is trying to solve is that when you are using batching the consumer receives N entries, containing M messages (with M >> N), then it exhaust quickly its permits and at the next dispatcher round the dispatcher loads too many messages from storage (BK or TieredStorage).
there is a bunch of entries that are read but cannot be dispatched, so we are wasting precious reads.
my latest change adds back to the "cache" the entries that have not been dispatched, so that at the second round the entries are still in the cache and we save from reading from tiered storage (or even BK!) again the same data.
This will be a good improvement also for non offloaded shared subscription.
the change applies only to Shared Subscriptions