-
Notifications
You must be signed in to change notification settings - Fork 2k
Streaming support for service invocation (Core) #5170
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
Conversation
This is a slightly reduced version of dapr#4903 that implements streaming only in: - Communications between dapr sidecars (via the gRPC local channel) - HTTP app channel (from Dapr to apps) - Responses from direct messages and actor invocations over HTTP APIs It does not add full streaming support to service invocation, as a few things are missing: - Nothing is changing on gRPC APIs for now, which lack streaming support - HTTP API server does not read request bodies as streams, due to buggy support in fasthttp. This will require removing fasthttp per dapr#4979 Related issues: dapr#3103 (partial fix) and also dapr#4866 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Codecov Report
@@ Coverage Diff @@
## master #5170 +/- ##
==========================================
- Coverage 65.61% 65.32% -0.29%
==========================================
Files 130 133 +3
Lines 13451 13986 +535
==========================================
+ Hits 8826 9137 +311
- Misses 3986 4154 +168
- Partials 639 695 +56
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
Let's merge this right AFTER code freeze for 1.9, please. |
/ok-to-test |
Dapr E2E testCommit ref: 09eedd4 ✅ Infrastructure deployed
✅ Build succeeded for linux/amd64
✅ Build succeeded for windows/amd64
❌ Tests failed on linux/amd64Please check the logs for details on the error. ❌ Tests failed on windows/amd64Please check the logs for details on the error. |
/ok-to-test |
1 similar comment
/ok-to-test |
Dapr E2E testCommit ref: 0e6820d ✅ Build succeeded for linux/amd64
✅ Infrastructure deployed
✅ Build succeeded for windows/amd64
❌ Tests failed on linux/amd64Please check the logs for details on the error. ❌ Tests failed on windows/amd64Please check the logs for details on the error. |
Dapr E2E testCommit ref: 0e6820d ✅ Build succeeded for linux/amd64
✅ Infrastructure deployed
✅ Build succeeded for windows/amd64
❌ Tests failed on linux/amd64Please check the logs for details on the error. ❌ Tests failed on windows/amd64Please check the logs for details on the error. |
Tests are passing but there's an issue with the pipelines (#5174) that causes them to be reported as failing. |
…core Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
…core Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
…core Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
@ItalyPaleAle Would you expect that this change might reduce latency for large payloads? If so, any benchmarks? Thanks. |
Yes, this will reduce latency for large payloads. The larger the payload, the better the latency reduction. You can see a couple of GIFs of before/after in the original PR: #4903 (comment) (the GIFs were purposely slowed down to show the impact better). The impact will be bigger on the TTFB (Time To First Byte), but it should also reduce the TTLB (Time To Last Byte) because of the less buffering.
Not yet :) |
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
…core Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
After talking to @artursouza today, we're going to change strategy with this PR, which has been stale for too long. At a high level, adding support for streaming with HTTP requests/responses requires changing 4 things in Dapr:
Current status is:
This PR, trying to include both 2 and 3 (and part 4, before it was split out in #5330), is pretty massive and hard to review. Also, every so often changes in the runtime cause major merge conflicts, and after those, lots of things break. In fact, things are broken right now after 5330 was merged, and I've already spent 7 hours trying to get the tests to pass, unsuccessfully. Part of the issues are caused by fasthttp, which is fairly buggy (e.g. The new plan is:
Although the full streaming support as shown in the GIF in #4903 will require all 4 parts to be done, every step should help improving the experience for end-users gradually! |
Backported from dapr#5170 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
This pull request has been automatically marked as stale because it has not had activity in the last 60 days. It will be closed in 7 days if no further activity occurs. Please feel free to give a status update now, ping for review, or re-open when it's ready. Thank you for your contributions! |
👋🤖 |
Closing as this is now superseeded.
Still waiting on #4979 to complete the feature E2E. |
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Initiate Dapr shutdown after expiry of grace period - Issue 5481 (dapr#5562) * Kick off shutdown after expiry of grace period Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * update shutdown with grace period. Add tests for pubsub actors and bindings Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * fix linting and windows incompatibility Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * fixed tests on windows. SIGTERM sending fails on windows. So invoke shutdown for windows tests Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * review comments incorporated Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * review comments incorporated Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * removed comment Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * update branch and add pubsub order check Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * Fixed trace initiation and shutdown. Updated trace Registration interface to return Tracer Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * reverting timeout pushed in test and moving trace shutdown to seperate method, moving trace shutdown to after api shutdown and removing go routine Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> * re-trigger pipeline Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> Signed-off-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> Co-authored-by: Akhila Chetlapalle <akhila@Akhilas-MacBook-Pro.local> Co-authored-by: Yaron Schneider <schneider.yaron@live.com> Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Loong Dai <long.dai@intel.com> Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Misc refactorings extracted from dapr#5170 (dapr#5609) Changes to the resiliency.NewRunner (dapr#5645) Remove dapr local replacement for pluggable apps (dapr#5642) * Remove dapr local replacement for pluggable apps Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Pin v0.0.8 on k6 operator Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Set actor stress tests thresholds based on previous run (dapr#5657) Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Fix ping method invoked before Init method for pluggable components (dapr#5659) Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> feature: add context to lock&pubsub API (dapr#5640) * feature: add context to lock&pubsub API Signed-off-by: seachen <seachen@tencent.com> * feature: add context to lock&pubsub API Signed-off-by: seachen <seachen@tencent.com> * Updated pinned components-contrib Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * upgrade sigs.k8s.io/controller-runtime to v0.14.1 Signed-off-by: seachen <seachen@tencent.com> * fixed golangci-lint Signed-off-by: seachen <seachen@tencent.com> Signed-off-by: seachen <seachen@tencent.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Update protoc version (dapr#5663) Extracted from dapr#5648 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Misc test fixes (dapr#5664) * Misc test fixes 1. Fixes some (not all) race conditions in tests for pkg/runtime 2. Improvements to test platform and the actorfeatures test to make testing locally (outside of K8s) easier 3. Some more logging in E2E test apps Extracted from dapr#5648 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Tailscale needs a bit more resources or it can crash with OOM Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Revert change to test per review feedback. However, this re-introduces a race condition (test fails `go test -race`) that will need to be fixed Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> optimize bulkpub resp processing (dapr#5498) * refactor code: bulk pub res from component only contains failed entries Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * fixing dependency. fixing unit test. Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * fix error response in gRPC bulk publish API Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * fix pluggable comps go.mod Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * change to point to correct contrib commit Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * fix dependency for components-contrib Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * update contrib to latest commit Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * address review comments. Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> * remove new line Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Register new Cloudflare KV state store and Queues binding (dapr#5632) * Register new Cloudflare KV state store and Queues binding See dapr/components-contrib#2363 for the new components Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Naming: workerskv Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Mod tidy Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Yaron Schneider <schneider.yaron@live.com> fix error message typo (dapr#5681) Signed-off-by: yaron2 <schneider.yaron@live.com> Signed-off-by: yaron2 <schneider.yaron@live.com> Replace `go.uber.org/atomic` and `github.com/pkg/errors` with standard library packages (dapr#5678) * Replace `go.uber.org/atomic` and `github.com/pkg/errors` with standard library packages The packages are now forbidden by a linter rule Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixed E2E tests failing Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Yaron Schneider <schneider.yaron@live.com> Do not start Dapr Watchdog runnable unless it's enabled (dapr#5689) Currently, the Dapr Watchdog runnable is added to the manager whether the watchdog is enabled or not. This forces the Dapr Operator service to request leadership election in all cases, even if the disable-leader-election flag is set. Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> More realistic metric for actor id stress tests (dapr#5687) Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Co-authored-by: Artur Souza <asouza.pro@gmail.com> Bump github.com/fasthttp/router from 1.4.13 to 1.4.14 (dapr#5666) Bumps [github.com/fasthttp/router](https://github.com/fasthttp/router) from 1.4.13 to 1.4.14. - [Release notes](https://github.com/fasthttp/router/releases) - [Commits](fasthttp/router@v1.4.13...v1.4.14) --- updated-dependencies: - dependency-name: github.com/fasthttp/router dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Artur Souza <asouza.pro@gmail.com> Streaming support in `InternalInvokeRequest` / `InternalInvokeResponse` (dapr#5648) * WIP - Updated pkg/messaging to make InvokeMethodRequest and InvokeMethodResponse replayable - Updated protos Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * WIP: custom io.MultiReader with io.Closer Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * WIP Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * 💄 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * More WIP Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Use a pool for buffers in replayableRequest too Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Enabling replays where necessary Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * 💄 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixes in code and tests Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * More fixes Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixed the remaining unit tests Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Not yer time for CallLocalStream Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * These protos are unused for now Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * More currently-unused code Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Various fixes Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Update protoc version Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Update protos Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Updated version here too Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Remove unused proto import Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Mini tweaks Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixes & other improvements-tests should now pass Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * More unit tests Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixes a possible panic Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Misc fixes Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Changes to actors and to allow the test app to run in self-hosted Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixes Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * More fixes Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Some fixes for race conditions in unit tests Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * DRY Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Update protoc version Extracted from dapr#5648 Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Changed per review feedback Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Added unit test Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Changed per review feedback Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Misc tweaks Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com> Fixed: replay buffer not resized (dapr#5697) * Fixed: replay buffer not resized Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Add unit test Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Bump github.com/prometheus/common from 0.37.0 to 0.39.0 (dapr#5694) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.37.0 to 0.39.0. - [Release notes](https://github.com/prometheus/common/releases) - [Commits](prometheus/common@v0.37.0...v0.39.0) --- updated-dependencies: - dependency-name: github.com/prometheus/common dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Artur Souza <asouza.pro@gmail.com> Fix call to fetch subscriptions over gRPC but not implemented. (dapr#5652) * Fix call to fetch subscriptions over gRPC but not implemented. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> * Guarantee non-null subscriptions when not implemented on gRPC. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com> Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Add resiliency to bulk publish API (dapr#5646) remove unsupported k8s version, update kind action (dapr#5649) Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Signed-off-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Allow passing Dapr trust bundle flags via Helm charts (dapr#5470) * allow to pass sentry issuer related flags into charts for each components Signed-off-by: Marco <bardelli.marco@gmail.com> * Update according to feedback into dapr#5470 Signed-off-by: Marco <bardelli.marco@gmail.com> * quote added flags Signed-off-by: Marco <bardelli.marco@gmail.com> * improve explanation in README and remove too generic not strictly needed args Signed-off-by: Marco Bardelli <bardelli.marco@gmail.com> Signed-off-by: Marco <bardelli.marco@gmail.com> Signed-off-by: Marco Bardelli <bardelli.marco@gmail.com> Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Artur Souza <asouza.pro@gmail.com> Fixes metric grouping for CPU usage graphs. (dapr#5525) "Total CPU Usage" graph is displaying `container_cpu_usage_seconds_total` but it is not grouping it by application and is instead using the `pod` field as its discriminating field. Each application is re-deployed daily and receives a new pod-id. As this metric graph uses the `pod` id in its legend, the same application ends up in represented as a series of disconnected metrics. This PR fixes the metric to grouping distinct "pods" under the same by "application id" using some metric-math. This in turn will allow us to observe how a given application behaves over time. Fixes dapr#5524 Signed-off-by: Tiago Alves Macambira <tmacam@burocrata.org> Signed-off-by: Tiago Alves Macambira <tmacam@burocrata.org> Co-authored-by: Loong Dai <long.dai@intel.com> Co-authored-by: Artur Souza <asouza.pro@gmail.com> Allow enabling preview features at build-time (dapr#5677) * Allow enabling preview features at build-time Added the `ENABLED_FEATURES` env var to the Makefile to define a (comma-separated) list of features that are always enabled, regardless of what's in the Configuration spec. The `Resiliency` feature was added to the list of always-enabled features for now (replacing the previous "hack" to have it always enabled - see dapr#5523). Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Fixed unit tests Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Features in unit tests Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com> Co-authored-by: Artur Souza <asouza.pro@gmail.com> Fix profile port Performance tests for pubsub http (dapr#5683) * Add pubsub perf test for multiples message size and delayed requests Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Add pubsub test on dapr_test mk Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Support appID parameter Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Preallocate VUs Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * se in memory broker for pubsub http tests perf Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Set start time and use shared array Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Fix line formating Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Using realistic thresholds for actor type stress test (dapr#5710) Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> return error on duplicated entry IDs in gRPC bulk publish (dapr#5672) Add metrics labels regex rules (dapr#5716) * add metrics labels regex rules Signed-off-by: yaron2 <schneider.yaron@live.com> * linter Signed-off-by: yaron2 <schneider.yaron@live.com> * update header to correct year Signed-off-by: yaron2 <schneider.yaron@live.com> * linter Signed-off-by: yaron2 <schneider.yaron@live.com> Signed-off-by: yaron2 <schneider.yaron@live.com> Deprecation notice for gRPC service invocation API (dapr#5324) * Deprecation notice for gRPC service invocation API Signed-off-by: sunzhaochang <zhchsun1992@gmail.com> * Add deprecation notices automatically when generating release notes Signed-off-by: sunzhaochang <zhchsun1992@gmail.com> * Update api.go Signed-off-by: Yaron Schneider <schneider.yaron@live.com> * Update api.go Signed-off-by: Yaron Schneider <schneider.yaron@live.com> Signed-off-by: sunzhaochang <zhchsun1992@gmail.com> Signed-off-by: Yaron Schneider <schneider.yaron@live.com> Co-authored-by: Yaron Schneider <schneider.yaron@live.com> Resiliency Support for Bulk Subscribe (dapr#5603) * Add filter for resiliency policy Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Delete unrequired Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Add Resiliency Support via Accumulator and misc refactorings Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Fix linting Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Incorporate review comments Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Fix filter in bulkpub_resiliency Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Add cap assertions Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Add locks Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Add locks Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * Incorporate review comments Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> * contenttype correction Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com> Co-authored-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> fix flaky test (dapr#5723) Signed-off-by: yaron2 <schneider.yaron@live.com> Signed-off-by: yaron2 <schneider.yaron@live.com> fix flaky test sync issue (dapr#5728) Signed-off-by: yaron2 <schneider.yaron@live.com> Signed-off-by: yaron2 <schneider.yaron@live.com> Misc refactorings and fixes to shutdown sequence (dapr#5729) This PR contains misc refactorings extracted from the "firewall" branch, including some fixes to the shutdown sequence. Two user-facing changes: 1. Fixed: cannot stop daprd if it's waiting for the app to come online (often happens if the app crashed while using the Dapr CLI) 2. Can force shutdown (aborting any graceful shutdown sequence) by sending a second SIGTERM/SIGINT. Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Fix pluggable component withblock usage on tests (dapr#5724) * Fix pluggable component withblock usage on tests Signed-off-by: Marcos Candeia <marrcooos@gmail.com> * Add grpc server listener Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Signed-off-by: Marcos Candeia <marrcooos@gmail.com> Make Resiliency stable (dapr#5732) * Make Resiliency stable Remove the "Resiliency" feature flag and all the code paths where we biforcated based on whether Resiliency was enabled or not Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> * Remove feature flag from Makefile Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Initialize metrics prior to loading resiliency Resiliency was being loaded before the actual metric views/fields were being init. This caused the Resiliency init metric to be lost. This commit moves the init up a bit to go before Resiliency. dapr#5711 Signed-off-by: halspang <halspang@microsoft.com>
This PR is the "core" part #4903 which implements support for streaming sidecar-to-sidecar communication.
Unlike what #4903 attempted to do, this has a slightly narrower scope. In particular, it implements streaming support in:
It does not add full streaming support to service invocation, as a few things are missing:
At a high level, this PR includes:
(If the callee app doesn't support CallLocalStream (e.g. it's on an older version of Dapr), this gracefully falls back to using CallLocal. Because we don't officially support clusters running mixed Dapr version, however, this is only meant to ensure smooth upgrades, and a warning is shown.)
The most important contribution from this PR is the addition of a new gRPC data structure
common.v1.StreamPayload
which underpins streaming capabilities for sidecar-to-sidecar communication and for other, future uses of streaming in Dapr. See the "Implementation details" section below for more info.Related issues
#3103 (partially fixed by this PR)
#4866
Implementation details
This PR creates a new gRPC method that is used for sidecar-to-sidecar communication.
Currently, sidecar-to-sidecar communication uses the
CallLocal
RPC:This RPC is not removed and is retained for backwards compatibility (e.g. when Dapr 1.8 invokes Dapr vNext), however it is not used otherwise.
A new RPC is added:
The request and response objects are defined as:
In the protos above,
InternalInvokeRequest
andInternalInvokeResponse
are the existing protos, that are used by the unaryCallLocal
RPC. In the streamed version, they are wrapped in a proto together with aStreamPayload
object.How it works:
CallLocalStream
on the target sidecar and establishes the gRPC connection and the streaming RPC.Each chunk is a message of type
InternalInvokeRequestStream
orInternalInvokeResponseStream
sent over the RPC, where:InternalInvokeRequest
orInternalInvokeResponse
with the required keys present.payload
, but that is not required.payload
and MUST NOT contain any other property.payload
withcomplete
set totrue
. That message is assumed to be the last one from the sender and no more messages are to be sent in the stream after that.The amount of data contained in
payload.data
is variable and it's up to the discretion of the sender. In this PR, chunks are at most 4KB in size, although senders may send smaller chunks if they wish. Receivers must not assume that messages will contain any specific number of bytes in the payload.Note that it's possible for senders to send a single message in the stream. If the data is small and could fit in a single chunk, senders MAY choose to include a
payload
withcomplete=true
in the first message. In this case, the entire message contains both anInternalInvokeRequest
/InternalInvokeResponse
with the required keys present AND apayload
with data (if any) andcomplete=true
. Receivers should assume that single message to be the entire communication from the sender.