Skip to content

Add reader and manifest abstractions for osiris_log #194

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

Draft
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

the-mikedavis
Copy link
Collaborator

This adds two new abstractions into osiris_log which provide hooks necessary for #184.

The simpler one is osiris_log_reader: open/1, pread/3, sendfile/4 and close/1. The default implementation reads directly from the passed segment file with the functions from file. A tiered storage reader would use the default implementation in osiris_log_reader for local files and otherwise read from the remote tier.

Then there is osiris_log_manifest which abstracts over whatever data structure is used to find positions within the log for readers. The default implementation is in osiris_log (in order to minimize the diff of this change) and it lists and sorts segment and index files from the stream's directory. While the manifest concept is meant to enable finding locations in the remote tier, this abstraction could also be used to swap out the current directory listing approach to do something like consult a file instead.

The manifest behaviour also has a callback for handling events: currently a segment file being rolled and a chunk being written. The manifest can use these events as hooks to update the backing data structure. This part isn't used by the default implementation.

@the-mikedavis the-mikedavis force-pushed the md/log-reader-and-manifest branch from 3e1045f to 71d7870 Compare August 1, 2025 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants