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

Flow control for async message consumers #74

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

mablay
Copy link

@mablay mablay commented Jun 17, 2020

Hi,

first of all thanks for providing rosbag.js it really made my day ☀️

I'm dealing with rosbag files that exceed my heap space and want to perform async operations on the messages.
Since (IMHU) calling bag.readMessages provides no means to slow down the producer I have to choose between dropping messages or running out of heap.

As a resolve I added flow control via bag.iterateMessages. It does almost exactly the same thing as bag.readMessages but it acts as async generator. That means the consumer can (if desired) halt and resume the reading process.
In order to avoid code redundancies and minimise code changes, I rewired readMessages to invoke iterateMessages maintaining its original behavior.

Documentation and one additional test case is included in this PR.

If I overlooked existing functionality that already provides flow control, please let me know, so that I can use that instead.

I also bumped the node engine version to 10+ because the existing test cases failed at lower versions.

Regards, Marc

Copy link
Contributor

@janpaul123 janpaul123 left a comment

Choose a reason for hiding this comment

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

This makes a lot of sense to me. Thanks also for the test and the other cleanup. @brianc or @MatthewSteel can I get another review from one of you just to be sure?

Btw, also feel free to join our Slack if you want to chat more! cruise-automation/webviz#461

@mablay mablay closed this Jun 18, 2020
@mablay mablay reopened this Jun 18, 2020
mablay and others added 8 commits July 23, 2020 21:00
This union type adds complexity and isn't necessary. Also add the
value, which is parsed for constants but doesn't appear in the
type defintion. This will allow us to match the typedef in Webviz.

Test plan: only flow type change
Bumping node engine to >= v10.0.0 since existing test cases fail at lower versions.
Usage: see bag.test.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants