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

Don't activate blueprint until the entire file has been received #5297

Closed
jleibs opened this issue Feb 26, 2024 · 0 comments · Fixed by #5529
Closed

Don't activate blueprint until the entire file has been received #5297

jleibs opened this issue Feb 26, 2024 · 0 comments · Fixed by #5529
Assignees
Labels
🟦 blueprint The data that defines our UI

Comments

@jleibs
Copy link
Member

jleibs commented Feb 26, 2024

Although this is primarily intended to facilitate receiving streams from the SDK this might also simplify (#5294).

The store-hub already maintains a single active blueprint per recording id, but the logic for when / how it's activated needs to change.

A blueprint can be sent via any of Spawn, Serve, or Connect (work to be done in: #4167), or manually via file-open.

The new design is that when a blueprint is sent, regardless of origin, it will replace the currently active blueprint.

The challenge is that we don't want to activate the blueprint until we have received the whole thing. This is important for cases of avoiding mutating the blueprint with heuristics or user-edits while it's still being received which could lead to bizarre/corrupt state (side-note: we need CRDT 😭).

Possible implementations

  • The fastest thing to do here could be to introduce a new LogMsg enum variant in the stream along the lines of "ActivateBlueprint" that is sent in the stream once all of the blueprint parts have been sent.
  • A counter-point raised in discussion is that growing this enum means a future burden of all the custom serialization/deserialization logic for it, cross-language API routing, etc. We already have mechanisms to send generic arrow-encoded data over a permutation of (store_id, store_kind, app_id, entity_path, component). Depending on where and how we want this data to be surfaced, an approach such as reserving a special "Control plane" data destination. RecordingId or StoreKind seem like good candidates.

Related issues:

@jleibs jleibs added the 🟦 blueprint The data that defines our UI label Feb 26, 2024
emilk added a commit that referenced this issue Mar 15, 2024
emilk added a commit that referenced this issue Mar 18, 2024
### What
* Closes #5297

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/5529/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/5529/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/5529/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!

- [PR Build Summary](https://build.rerun.io/pr/5529)
- [Docs
preview](https://rerun.io/preview/d2d0b7e00a7ad3c8ef5ced1744605977f302760c/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/d2d0b7e00a7ad3c8ef5ced1744605977f302760c/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🟦 blueprint The data that defines our UI
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants