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

Migrate SDK comms to gRPC #8838

Merged
merged 96 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
b5f0334
Make `re_grpc_client` a non-optional dependency
jprochazk Jan 26, 2025
086595c
send stream error through smart channel
jprochazk Jan 27, 2025
daf8278
expose grpc client/server in re_sdk
jprochazk Jan 27, 2025
f10370c
Refactor `re_grpc_server` serve impl
jprochazk Jan 27, 2025
c46af8b
Remove feature gate on `re_sdk::GrpcSink`
jprochazk Jan 27, 2025
459d12d
Ensure `tokio` is always available
jprochazk Jan 27, 2025
a03cf18
Expose `grpc` variants for all `connect` and `spawn` in Python SDK
jprochazk Jan 27, 2025
894cc4f
Expose gRPC `spawn`/`connect` in rust `RecordingStream`
jprochazk Jan 27, 2025
c4257b3
Expose gRPC `connect`/`spawn` in C/C++
jprochazk Jan 27, 2025
8bd2f09
Allow setting IP when serving grpc
jprochazk Jan 27, 2025
c33e8ef
Host gRPC server by default
jprochazk Jan 27, 2025
7c9e742
Dedupe variable
jprochazk Jan 28, 2025
2a23554
Change error message
jprochazk Jan 28, 2025
95c9848
Refactor server entrypoint IP address parsing
jprochazk Jan 28, 2025
46563c4
Spawn with grpc by default
jprochazk Jan 28, 2025
5f62b43
Connect to `gRPC` on web by default
jprochazk Jan 28, 2025
cd4ee69
Update quick start connect example
jprochazk Jan 28, 2025
4e36f33
Fix missing header decls (spawn, connect)
jprochazk Jan 28, 2025
3a586b7
Fix comment
jprochazk Jan 28, 2025
875b57b
Run `py-fmt`
jprochazk Jan 28, 2025
742d5aa
Remove unused dependencies
jprochazk Jan 28, 2025
a2ac62f
Merge branch 'main' into jan/migrate-grpc
jprochazk Jan 28, 2025
eff83f2
Remove all remaining usage of `re_ws_comms`
jprochazk Jan 29, 2025
0cb22dd
Remove `re_ws_comms`
jprochazk Jan 29, 2025
300e684
Make `MessageProxyAddress` public
jprochazk Jan 29, 2025
c83cc7e
Remove `re_sdk_comms` usage from `re_sdk`
jprochazk Jan 29, 2025
7b0ab51
Add `FromStr` for `MemoryLimit`
jprochazk Jan 29, 2025
e213737
Update `rerun` entrypoint/command parser
jprochazk Jan 29, 2025
74707f3
Remove `re_sdk_comms` from `re_viewer`
jprochazk Jan 29, 2025
352a674
Remove `re_sdk_comms` from C/C++
jprochazk Jan 29, 2025
0a0ebf7
Expose url parse error
jprochazk Jan 29, 2025
bd1c4aa
Remove `connect_tcp` from Python SDK
jprochazk Jan 29, 2025
2a12676
Add back `connect` and `spawn`
jprochazk Jan 29, 2025
4ff359b
Revert quick start spawn example
jprochazk Jan 29, 2025
b25a08d
Update custom callback example
jprochazk Jan 29, 2025
12b3199
Update extend viewer example
jprochazk Jan 29, 2025
730853a
Update custom view example
jprochazk Jan 29, 2025
e600551
Update usages of `connect` and `spawn`
jprochazk Jan 29, 2025
8585f46
Delete `re_sdk_comms`
jprochazk Jan 29, 2025
c972194
Update link checker config
jprochazk Jan 29, 2025
3f2296b
Fix python lints
jprochazk Jan 29, 2025
ac0bf39
Update script helpers to pass http url instead of plain addr
jprochazk Jan 29, 2025
510ccd6
Add `MessageEvent` web-sys feature
jprochazk Jan 29, 2025
70c6e95
Remove `WebSocket` endpoint category
jprochazk Jan 29, 2025
e1cb37d
Format
jprochazk Jan 29, 2025
10710b2
Fix some rust lints
jprochazk Jan 29, 2025
640e4d2
Merge branch 'main' into jan/migrate-grpc
jprochazk Jan 29, 2025
5b87b54
Remove `WsClient` and `TcpServer` channel sources
jprochazk Jan 29, 2025
bf08d1d
Update some docs to mention `gRPC` instead of `TCP`
jprochazk Jan 29, 2025
d0f1dfd
Fix message proxy client not responding to flush during connect
jprochazk Jan 29, 2025
eb7505b
Run `cpp-fmt`
jprochazk Jan 29, 2025
571ed2f
Back to 9876 as the default port
jprochazk Jan 29, 2025
8c4cb99
Merge branch 'main' into jan/migrate-grpc
jprochazk Jan 30, 2025
f5671bc
Remove WebSocket data source
jprochazk Jan 30, 2025
43f310c
Merge branch 'main' into jan/migrate-grpc
jprochazk Jan 30, 2025
c0ae6d1
Python: Bring back `connect` and `connect_tcp` as deprecated
jprochazk Jan 30, 2025
22b966f
Rust: Deprecate `connect_tcp`
jprochazk Jan 30, 2025
fd76dba
C/C++: Bring back `connect`/`connect_tcp` as deprecated
jprochazk Jan 30, 2025
236ba06
Rust: Bring back `connect` as deprecated on `RecordingStream`
jprochazk Jan 30, 2025
266124a
Fix compile error
jprochazk Jan 30, 2025
4bf3244
C/C++: Fix tests after changes, add new test for grpc connection
jprochazk Jan 30, 2025
1950414
Run fmt
jprochazk Jan 30, 2025
a74bb23
Update data source parser to handle grpc
jprochazk Jan 30, 2025
3d4e245
Remove `spawn_grpc` in favor of just `spawn`
jprochazk Jan 30, 2025
274dce3
Remove mention of `TcpSink`
jprochazk Jan 30, 2025
ce965dd
Fix `connect` usage
jprochazk Jan 30, 2025
34531cc
Exclude fake link
jprochazk Jan 30, 2025
2cdd657
Update sdk with default port/url
jprochazk Jan 30, 2025
51c3c10
Fix manual assert
jprochazk Jan 30, 2025
6c9d47c
Add deprecation warning for `rr_recording_stream_connect`
jprochazk Jan 30, 2025
357f243
Try to fix cpp formatting
jprochazk Jan 30, 2025
b357ad0
Merge branch 'main' into jan/migrate-grpc
jprochazk Feb 4, 2025
1f9e519
Merge branch 'main' into jan/migrate-grpc
jprochazk Feb 5, 2025
fbd79fd
temp
jprochazk Feb 4, 2025
0ea7dbc
Merge branch 'main' into jan/migrate-grpc
jprochazk Feb 9, 2025
e7eb688
join parse url tests
jprochazk Feb 9, 2025
293415e
fix lint
jprochazk Feb 9, 2025
1d32363
remove unused dep
jprochazk Feb 10, 2025
04a8e77
dont fail on first test case
jprochazk Feb 10, 2025
0d8313f
do not gc blueprint
jprochazk Feb 10, 2025
155808b
Merge branch 'main' into jan/migrate-grpc
jprochazk Feb 10, 2025
9ba5ae3
use proper response/request types instead of empty
jprochazk Feb 10, 2025
7ff0cd5
rename signal -> server_shutdown_signal
jprochazk Feb 10, 2025
ac8e93b
update comment
jprochazk Feb 10, 2025
1bd3eca
Update crates/top/re_sdk/src/lib.rs
jprochazk Feb 10, 2025
c6c44a1
improve docs for re_grpc_server
jprochazk Feb 10, 2025
47d856d
fix after rename
jprochazk Feb 10, 2025
94e0ad5
use const_format for default connect url
jprochazk Feb 10, 2025
e1bd084
reintroduce flush_timeout
jprochazk Feb 10, 2025
730943c
fix missing flush timeout in doctest
jprochazk Feb 10, 2025
e028513
busy-wait for timeout in grpc sink flush
jprochazk Feb 10, 2025
7438f53
lower flush timeout in cpp tests
jprochazk Feb 10, 2025
b38c2ba
Merge branch 'main' into jan/migrate-grpc
jprochazk Feb 10, 2025
7cd49d5
reintroduce flush_timeout_sec for py connect apis
jprochazk Feb 10, 2025
3b18ec4
fmt
jprochazk Feb 10, 2025
3a4bdcc
fix doc
jprochazk Feb 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,9 +194,7 @@ Update instructions:
| re_data_source | Handles loading of Rerun data from different sources |
| re_grpc_client | Communicate with the Rerun Data Platform over gRPC |
| re_grpc_server | Host an in-memory Storage Node |
| re_sdk_comms | TCP communication between Rerun SDK and Rerun Server |
| re_web_viewer_server | Serves the Rerun web viewer (Wasm and HTML) over HTTP |
| re_ws_comms | WebSocket communication library (encoding, decoding, client, server) between a Rerun server and Viewer |

### Build support

Expand Down
128 changes: 33 additions & 95 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1503,6 +1503,26 @@ dependencies = [
"tiny-keccak",
]

[[package]]
name = "const_format"
version = "0.2.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd"
dependencies = [
"const_format_proc_macros",
]

[[package]]
name = "const_format_proc_macros"
version = "0.2.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]

[[package]]
name = "const_soft_float"
version = "0.1.4"
Expand Down Expand Up @@ -1740,6 +1760,7 @@ dependencies = [
"parking_lot",
"re_crash_handler",
"re_error",
"re_grpc_server",
"rerun",
"serde",
"tokio",
Expand Down Expand Up @@ -1767,8 +1788,9 @@ version = "0.23.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_crash_handler",
"re_sdk_comms",
"re_grpc_server",
"re_viewer",
"tokio",
]

[[package]]
Expand Down Expand Up @@ -1805,12 +1827,6 @@ dependencies = [
"syn 2.0.87",
]

[[package]]
name = "data-encoding"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"

[[package]]
name = "data-url"
version = "0.3.1"
Expand Down Expand Up @@ -2405,29 +2421,15 @@ dependencies = [
"pin-project-lite",
]

[[package]]
name = "ewebsock"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "679247b4a005c82218a5f13b713239b0b6d484ec25347a719f5b7066152a748a"
dependencies = [
"document-features",
"js-sys",
"log",
"tungstenite",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
]

[[package]]
name = "extend_viewer_ui"
version = "0.23.0-alpha.1+dev"
dependencies = [
"mimalloc",
"re_crash_handler",
"re_sdk_comms",
"re_grpc_server",
"re_viewer",
"tokio",
]

[[package]]
Expand Down Expand Up @@ -5996,7 +5998,6 @@ dependencies = [
"re_log_types",
"re_smart_channel",
"re_tracing",
"re_ws_comms",
]

[[package]]
Expand Down Expand Up @@ -6172,6 +6173,7 @@ dependencies = [
name = "re_grpc_server"
version = "0.23.0-alpha.1+dev"
dependencies = [
"parking_lot",
"re_build_info",
"re_byte_size",
"re_chunk",
Expand All @@ -6181,6 +6183,7 @@ dependencies = [
"re_log_types",
"re_memory",
"re_protos",
"re_smart_channel",
"re_tracing",
"re_types",
"tokio",
Expand Down Expand Up @@ -6495,6 +6498,7 @@ name = "re_sdk"
version = "0.23.0-alpha.1+dev"
dependencies = [
"ahash",
"const_format",
"crossbeam",
"document-features",
"itertools 0.13.0",
Expand All @@ -6512,36 +6516,20 @@ dependencies = [
"re_chunk_store",
"re_data_loader",
"re_grpc_client",
"re_grpc_server",
"re_log",
"re_log_encoding",
"re_log_types",
"re_memory",
"re_sdk_comms",
"re_smart_channel",
"re_types_core",
"re_web_viewer_server",
"re_ws_comms",
"similar-asserts",
"thiserror 1.0.65",
"tokio",
"webbrowser",
]

[[package]]
name = "re_sdk_comms"
version = "0.23.0-alpha.1+dev"
dependencies = [
"ahash",
"crossbeam",
"document-features",
"rand",
"re_build_info",
"re_log",
"re_log_encoding",
"re_log_types",
"re_smart_channel",
"thiserror 1.0.65",
]

[[package]]
name = "re_selection_panel"
version = "0.23.0-alpha.1+dev"
Expand Down Expand Up @@ -7110,7 +7098,6 @@ dependencies = [
"re_memory",
"re_query",
"re_renderer",
"re_sdk_comms",
"re_selection_panel",
"re_smart_channel",
"re_time_panel",
Expand All @@ -7131,7 +7118,6 @@ dependencies = [
"re_viewer_context",
"re_viewport",
"re_viewport_blueprint",
"re_ws_comms",
"rfd",
"ron",
"serde",
Expand Down Expand Up @@ -7267,26 +7253,6 @@ dependencies = [
"tiny_http",
]

[[package]]
name = "re_ws_comms"
version = "0.23.0-alpha.1+dev"
dependencies = [
"anyhow",
"bincode",
"document-features",
"ewebsock",
"parking_lot",
"polling",
"re_format",
"re_log",
"re_log_types",
"re_memory",
"re_smart_channel",
"re_tracing",
"thiserror 1.0.65",
"tungstenite",
]

[[package]]
name = "redox_syscall"
version = "0.4.1"
Expand Down Expand Up @@ -7491,20 +7457,20 @@ dependencies = [
"re_error",
"re_format",
"re_format_arrow",
"re_grpc_server",
"re_log",
"re_log_encoding",
"re_log_types",
"re_memory",
"re_sdk",
"re_sdk_comms",
"re_smart_channel",
"re_tracing",
"re_types",
"re_video",
"re_viewer",
"re_web_viewer_server",
"re_ws_comms",
"similar-asserts",
"tokio",
"unindent",
]

Expand All @@ -7520,7 +7486,6 @@ dependencies = [
"re_log",
"re_memory",
"rerun",
"tokio",
]

[[package]]
Expand Down Expand Up @@ -7572,6 +7537,7 @@ dependencies = [
"re_chunk_store",
"re_dataframe",
"re_grpc_client",
"re_grpc_server",
"re_log",
"re_log_encoding",
"re_log_types",
Expand All @@ -7581,7 +7547,6 @@ dependencies = [
"re_sorbet",
"re_video",
"re_web_viewer_server",
"re_ws_comms",
"tokio",
"tokio-stream",
"tonic",
Expand Down Expand Up @@ -9315,27 +9280,6 @@ version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5902c5d130972a0000f60860bfbf46f7ca3db5391eddfedd1b8728bd9dc96c0e"

[[package]]
name = "tungstenite"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"
dependencies = [
"byteorder",
"bytes",
"data-encoding",
"http 1.1.0",
"httparse",
"log",
"rand",
"rustls 0.23.18",
"rustls-pki-types",
"sha1",
"thiserror 1.0.65",
"utf-8",
"webpki-roots 0.26.6",
]

[[package]]
name = "twox-hash"
version = "1.6.3"
Expand Down Expand Up @@ -9506,12 +9450,6 @@ dependencies = [
"tiny-skia-path",
]

[[package]]
name = "utf-8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"

[[package]]
name = "utf16_iter"
version = "1.0.5"
Expand Down
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,14 @@ re_dataframe = { path = "crates/store/re_dataframe", version = "=0.23.0-alpha.1"
re_entity_db = { path = "crates/store/re_entity_db", version = "=0.23.0-alpha.1", default-features = false }
re_format_arrow = { path = "crates/store/re_format_arrow", version = "=0.23.0-alpha.1", default-features = false }
re_grpc_client = { path = "crates/store/re_grpc_client", version = "=0.23.0-alpha.1", default-features = false }
re_grpc_server = { path = "crates/store/re_grpc_server", version = "=0.23.0-alpha.1", default-features = false }
re_protos = { path = "crates/store/re_protos", version = "=0.23.0-alpha.1", default-features = false }
re_log_encoding = { path = "crates/store/re_log_encoding", version = "=0.23.0-alpha.1", default-features = false }
re_log_types = { path = "crates/store/re_log_types", version = "=0.23.0-alpha.1", default-features = false }
re_query = { path = "crates/store/re_query", version = "=0.23.0-alpha.1", default-features = false }
re_sdk_comms = { path = "crates/store/re_sdk_comms", version = "=0.23.0-alpha.1", default-features = false }
re_sorbet = { path = "crates/store/re_sorbet", version = "=0.23.0-alpha.1", default-features = false }
re_types = { path = "crates/store/re_types", version = "=0.23.0-alpha.1", default-features = false }
re_types_core = { path = "crates/store/re_types_core", version = "=0.23.0-alpha.1", default-features = false }
re_ws_comms = { path = "crates/store/re_ws_comms", version = "=0.23.0-alpha.1", default-features = false }

# crates/top:
re_sdk = { path = "crates/top/re_sdk", version = "=0.23.0-alpha.1", default-features = false }
Expand Down Expand Up @@ -177,6 +176,7 @@ clean-path = "0.2"
colored = "2.1"
comfy-table = { version = "7.0", default-features = false }
console_error_panic_hook = "0.1.6"
const_format = "0.2"
convert_case = "0.6"
criterion = "0.5"
crossbeam = "0.8"
Expand Down
5 changes: 2 additions & 3 deletions crates/store/re_data_source/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ all-features = true
default = ["grpc"]

## Enable the gRPC Rerun Data Platform data source.
grpc = ["dep:re_grpc_client"]
grpc = ["re_grpc_client/redap"]


[dependencies]
re_data_loader.workspace = true
re_grpc_client.workspace = true
re_log_encoding = { workspace = true, features = [
"decoder",
"stream_from_http",
Expand All @@ -36,14 +37,12 @@ re_log_types.workspace = true
re_log.workspace = true
re_smart_channel.workspace = true
re_tracing.workspace = true
re_ws_comms = { workspace = true, features = ["client"] }

anyhow.workspace = true
itertools.workspace = true
rayon.workspace = true

# Optional dependencies:
re_grpc_client = { workspace = true, optional = true }

[build-dependencies]
re_build_tools.workspace = true
Loading
Loading