-
Notifications
You must be signed in to change notification settings - Fork 451
[C++ repro] Logging lots of image looses data #9818
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
Comments
Adding a Adding |
Just a point of clarification, in case it is helpful: each image should be logged 4 times (representing the actual application logging various permutations), 3 prior to |
That looks correct! I'm assuming you used |
Yes, exactly. |
I was able to reproduce completion of all logs with Would it be reasonable to provide a mechanism for flushing the |
Well, it was very much my expectation that |
Thank you so much @ExpertOfNil 🙏! Your repro pointed out a very subtle difference in our C++ SDK and made us realized that our logging level was wrong. For the You can follow along with that line of development here: Until we have the full fix, I would suggest bumping up the |
### Related * Closes #9818. ### What > [!IMPORTANT] > This PR also changes the way `RecordingStream` is free'd in the C/C++ API. Before we called `stream.disconnect`, which unnecessarily replaced the current sink with a _buffered_ sink that would be immediately dropped afterwards. Not only did this cause spam in the log outputs, it also lead to race conditions upon (log) application shutdown. This PR makes it more explicit why we drop data during flushing, by bumping the log messages to `warn!`. It also improves the message by pointing the users to `flush_timeout`. We also bump the default timeout from two seconds to now 3 seconds. It's worth taking note that explicitly calling `flush_blocking` from our SDKs should be able to opt-out of this timeout, to ensure all data is sent. This will be tracked here: * #9845.
### Related * Closes #9818. ### What > [!IMPORTANT] > This PR also changes the way `RecordingStream` is free'd in the C/C++ API. Before we called `stream.disconnect`, which unnecessarily replaced the current sink with a _buffered_ sink that would be immediately dropped afterwards. Not only did this cause spam in the log outputs, it also lead to race conditions upon (log) application shutdown. This PR makes it more explicit why we drop data during flushing, by bumping the log messages to `warn!`. It also improves the message by pointing the users to `flush_timeout`. We also bump the default timeout from two seconds to now 3 seconds. It's worth taking note that explicitly calling `flush_blocking` from our SDKs should be able to opt-out of this timeout, to ensure all data is sent. This will be tracked here: * #9845.
User-provided C++ repro highlight loss of logged data.
Expected: all data is logged, 50 frames on the timeline
Actual: partial data, only ~33 frames
Repro repo: https://github.com/ExpertOfNil/rerun_cpp_mve
Discord thread: https://discord.com/channels/1062300748202921994/1364955449602084874
Slack thread: https://rerunio.slack.com/archives/C041NHU952S/p1745826038111429
The text was updated successfully, but these errors were encountered: