Skip to content
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

feat: Support cleaning up spare examples correctly in read_span_flatbuffer() #4684

Merged
merged 12 commits into from
Feb 15, 2024

Conversation

lokitoth
Copy link
Member

Consumers of VW as a library can provide their own event pools, etc. Previous parsers were always able to predict when an even would be needed ahead of time, so would only allocate when necessary. This was done by relying on a single incoming event preallocation to let the external host deallocate in the case of nothing to be parsed.

This does not work for the FB parser due to how it handles re-entrancy, and we do not want to spend the time re-architecting it to avoid this. The fix, in this case, is to expand the API to include a callback to return spare events back to the host's event pool.

lokitoth and others added 5 commits February 14, 2024 14:12
Consumers of VW as a library can provide their own event pools, etc. Previous parsers were always able to predict when an even would be needed ahead of time, so would only allocate when necessary. This was done by relying on a single incoming event preallocation to let the external host deallocate in the case of nothing to be parsed.

This does not work for the FB parser due to how it handles re-entrancy, and we do not want to spend the time re-architecting it to avoid this. The fix, in this case, is to expand the API to include a callback to return spare events back to the host's event pool.
The C++ compiler on our image of Ubuntu 2004 cannot properly pick up Offset<> => Offset<void>. Make this explicit.
When re-using the flatbuffer parser across multiple invocations, the parser state could become invalid (retain references to deleted objects)

* Add more tests for bad inputs
* Add comments about what is going on in read_span_flatbuffer
* Add some comments about the re-entrant logic in parse_examples
* Fix a place where the parser was returning the semantically incorrect error code
The code to generate bad namespaces in examples was interacting poorly with auto.
Copy link
Member

@rajan-chari rajan-chari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Thanks Jacob.

@lokitoth lokitoth merged commit 305a795 into VowpalWabbit:master Feb 15, 2024
114 checks passed
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