-
Notifications
You must be signed in to change notification settings - Fork 79
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
Support bidirectional streaming on websockets #1111
Support bidirectional streaming on websockets #1111
Conversation
also has first draft of working binding to handle dispatch
Pruning dead code too
d2cfc8a
to
61791e7
Compare
61791e7
to
da4e412
Compare
grpc-api/src/main/java/io/deephaven/grpc_api/browserstreaming/BrowserStreamInterceptor.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/browserstreaming/BrowserStreamInterceptor.java
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/util/GrpcServiceOverrideBuilder.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/util/GrpcServiceOverrideBuilder.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/util/GrpcServiceOverrideBuilder.java
Outdated
Show resolved
Hide resolved
web/client-api/src/main/java/io/deephaven/web/client/api/WorkerConnection.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/browserstreaming/BrowserStream.java
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/browserstreaming/BrowserStream.java
Outdated
Show resolved
Hide resolved
web/client-api/src/main/java/io/deephaven/web/client/api/barrage/stream/BiDiStream.java
Outdated
Show resolved
Hide resolved
* lots of unsynchronized observers * grrrreat! * bad null check in browser stream * slim down some generics
grpc-api/src/main/java/io/deephaven/grpc_api/console/ConsoleServiceGrpcImpl.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/arrow/ArrowFlightUtil.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/runner/DeephavenApiServerModule.java
Outdated
Show resolved
Hide resolved
James has pointed out that we need a mechanism to inform the client that individual requests for completion items have failed, without failing the stream. We also need a way to match requests and responses on the stream in case they race, and suppress CompletionCancelled errors from the log. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good, only small issues.
grpc-api/src/main/java/io/deephaven/grpc_api/browserstreaming/BrowserStream.java
Outdated
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/browserstreaming/BrowserStreamInterceptor.java
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/console/ConsoleServiceGrpcImpl.java
Show resolved
Hide resolved
grpc-api/src/main/java/io/deephaven/grpc_api/console/ConsoleServiceGrpcImpl.java
Outdated
Show resolved
Hide resolved
web/client-api/src/main/java/io/deephaven/ide/shared/IdeSession.java
Outdated
Show resolved
Hide resolved
web/client-api/src/main/java/io/deephaven/web/client/api/WorkerConnection.java
Outdated
Show resolved
Hide resolved
A helper tag that will allow outstanding branches to merge from main with respect to the large style guide code application
A helper tag that will allow outstanding branches to merge from main with respect to the large style guide code application
6c21de1
Fetch/h2-based grpc-web clients do not support bidirectional streaming at this time, but the websocket client we are using from https://github.com/improbable-eng/grpc-web/ does. This lets us keep a single websocket open instead of making many calls. The client has support now to abstract how a bidirectional stream is created, either by a single websocket, or by a pair of fetch calls.
Additionally, autocomplete was seeing problems that appeared related to the server-side grpc handling payloads out of order. These methods have been consolidated into a single bidirectional stream to ensure ordering is sane. The server now has support to only implement a bidirectional stream once, and mark the "open"/"next" rpc methods as part of that, and automatically have their requests enqueued to be handled serially.
Other improvements got slipped into this work as well, such as only interacting with autocomplete from the gRPC service and never from DB, so that dependency was cut (as well as the dependency on gRPC utils, which only existed to get jsr305 annotations into various projects).
The client is incomplete in this patch, we plan on continuing this work as part of #730.
Fixes #929
Fixes #834
Fixes #1049