Skip to content

Conversation

ItalyPaleAle
Copy link
Contributor

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:

  • 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:

At a high level, this PR includes:

  • Changed the way sidecars invoke one another to use streams. The new method ServiceInvocation.CallLocalStream is a variant of ServiceInvocation.CallLocal that uses streams rather than making unary calls. Internally, this uses a buffer of up to 4KB, so messages that are smaller than that (and that are received in a single chunk by the runtime) are transferred in a single block. This should allow having no performance impact for small payloads (compared to unary RPCs).
    (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.)
  • When the sidecar invokes the apps using the HTTP channel, the data is now sent to the app as a stream. Apps can begin receiving data as soon as the runtime gets it.
  • The HTTP API server responds to requests for service and actor invocation by sending the data as a stream. However, due to bugs in fasthttp (see Migrate HTTP server from fasthttp to net/http #4979), the HTTP API server still reads all incoming requests' bodies without using streams.

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:

// Invokes a method of the specific service.
rpc CallLocal (InternalInvokeRequest) returns (InternalInvokeResponse) {}

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:

// Invokes a method of the specific service using a stream of data.
rpc CallLocalStream (stream InternalInvokeRequestStream) returns (stream InternalInvokeResponseStream) {}

The request and response objects are defined as:

// InternalInvokeRequestStream is a variant of InternalInvokeRequest used in streaming RPCs.
message InternalInvokeRequestStream {
  // Request details.
  // This does not contain any data in message.data.
  InternalInvokeRequest request = 1;

  // Chunk of data.
  StreamPayload payload = 2;
}

// InternalInvokeResponseStream is a variant of InternalInvokeResponse used in streaming RPCs.
message InternalInvokeResponseStream {
  // Response details.
  // This does not contain any data in message.data.
  InternalInvokeResponse response = 1;

  // Chunk of data.
  StreamPayload payload = 2;
}

// Chunk of data sent in a streaming request or response.
message StreamPayload {
  // Data sent in the chunk.
  google.protobuf.Any data = 1;

  // Set to true if this is the last chunk.
  bool complete = 2;
}

In the protos above, InternalInvokeRequest and InternalInvokeResponse are the existing protos, that are used by the unary CallLocal RPC. In the streamed version, they are wrapped in a proto together with a StreamPayload object.

Note that, although the RPC uses bi-directional streaming, it still behaves like a unary call, in the sense that once the connection has been established, first the sender sends the entire request, and then it reads the entire response from the receiver. We use streams to be able to send data in chunks, but the sidecars do not maintain a persistent stream that is used to exchange multiple messages or where communication is constantly bi-directional.

How it works:

  1. The caller sidecar invokes CallLocalStream on the target sidecar and establishes the gRPC connection and the streaming RPC.
  2. The caller sidecar sends the data in chunks (see below for details on how chunking works).
  3. The target sidecar can begin processing the message (i.e. send it to the target app) as soon as the first chunk is received.
  4. Once the full payload has been sent, the target sidecar waits for the response from the app (which is read as a stream).
  5. The target sidecar sends the response in chunks to the caller sidecar, with the first chunk sent as soon as it's available.

Each chunk is a message of type InternalInvokeRequestStream or InternalInvokeResponseStream sent over the RPC, where:

  • The first message in the stream MUST contain an InternalInvokeRequest or InternalInvokeResponse with the required keys present.
  • The first message in the stream MAY contain a payload, but that is not required.
  • Subsequent messages (any message except the first in the stream) MUST contain a payload and MUST NOT contain any other property.
  • The last message in the stream MUST contain a payload with complete set to true. 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 with complete=true in the first message. In this case, the entire message contains both an InternalInvokeRequest/InternalInvokeResponse with the required keys present AND a payload with data (if any) and complete=true. Receivers should assume that single message to be the entire communication from the sender.

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
Copy link

codecov bot commented Sep 14, 2022

Codecov Report

Merging #5170 (404aa62) into master (1047dfd) will decrease coverage by 0.28%.
The diff coverage is 56.52%.

@@            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     
Impacted Files Coverage Δ
pkg/actors/actors_mock.go 0.00% <0.00%> (ø)
pkg/runtime/cli.go 1.65% <0.00%> (ø)
utils/host.go 38.46% <ø> (ø)
utils/resolvconf.go 75.86% <ø> (ø)
utils/streams/teereadcloser.go 0.00% <0.00%> (ø)
pkg/grpc/api_local.go 31.89% <31.89%> (ø)
pkg/actors/actors.go 57.70% <44.28%> (-1.04%) ⬇️
pkg/messaging/direct_messaging.go 45.92% <48.69%> (+26.87%) ⬆️
pkg/http/server.go 62.73% <50.00%> (ø)
pkg/channel/http/http_channel.go 67.30% <55.55%> (-0.40%) ⬇️
... and 22 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@artursouza artursouza added this to the v1.10 milestone Sep 14, 2022
@artursouza
Copy link
Contributor

Let's merge this right AFTER code freeze for 1.9, please.

@artursouza
Copy link
Contributor

/ok-to-test

@dapr-bot
Copy link
Collaborator

dapr-bot commented Sep 14, 2022

Dapr E2E test

🔗 Link to Action run

Commit ref: 09eedd4

✅ Infrastructure deployed

Cluster Resource group name Azure region
Linux Dapr-E2E-dapre2eab7b0b42b2l westus3
Windows Dapr-E2E-dapre2eab7b0b42b2w westus3

✅ Build succeeded for linux/amd64

  • Image tag: dapre2eab7b0b42b2l
  • Test image tag: dapre2eab7b0b42b2l

✅ Build succeeded for windows/amd64

  • Image tag: dapre2eab7b0b42b2w
  • Test image tag: dapre2eab7b0b42b2w

❌ Tests failed on linux/amd64

Please check the logs for details on the error.

❌ Tests failed on windows/amd64

Please check the logs for details on the error.

@artursouza
Copy link
Contributor

/ok-to-test

1 similar comment
@artursouza
Copy link
Contributor

/ok-to-test

@dapr-bot
Copy link
Collaborator

dapr-bot commented Sep 14, 2022

Dapr E2E test

🔗 Link to Action run

Commit ref: 0e6820d

✅ Build succeeded for linux/amd64

  • Image tag: dapre2e4085ff4c6cl
  • Test image tag: dapre2e4085ff4c6cl

✅ Infrastructure deployed

Cluster Resource group name Azure region
Linux Dapr-E2E-dapre2e4085ff4c6cl westus3
Windows Dapr-E2E-dapre2e4085ff4c6cw westus3

✅ Build succeeded for windows/amd64

  • Image tag: dapre2e4085ff4c6cw
  • Test image tag: dapre2e4085ff4c6cw

❌ Tests failed on linux/amd64

Please check the logs for details on the error.

❌ Tests failed on windows/amd64

Please check the logs for details on the error.

@dapr-bot
Copy link
Collaborator

dapr-bot commented Sep 14, 2022

Dapr E2E test

🔗 Link to Action run

Commit ref: 0e6820d

✅ Build succeeded for linux/amd64

  • Image tag: dapre2eef24c25d27l
  • Test image tag: dapre2eef24c25d27l

✅ Infrastructure deployed

Cluster Resource group name Azure region
Linux Dapr-E2E-dapre2eef24c25d27l westus3
Windows Dapr-E2E-dapre2eef24c25d27w westus3

✅ Build succeeded for windows/amd64

  • Image tag: dapre2eef24c25d27w
  • Test image tag: dapre2eef24c25d27w

❌ Tests failed on linux/amd64

Please check the logs for details on the error.

❌ Tests failed on windows/amd64

Please check the logs for details on the error.

@ItalyPaleAle
Copy link
Contributor Author

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>
@tony-clarke-amdocs
Copy link

@ItalyPaleAle Would you expect that this change might reduce latency for large payloads? If so, any benchmarks? Thanks.

@ItalyPaleAle
Copy link
Contributor Author

@tony-clarke-amdocs

Would you expect that this change might reduce latency for large payloads?

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.

If so, any benchmarks?

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>
@ItalyPaleAle ItalyPaleAle marked this pull request as draft October 19, 2022 04:05
@ItalyPaleAle
Copy link
Contributor Author

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:

  1. Change the API server to process requests in a streaming way when possible
  2. Change all internals of the runtime to work with streams. Biggest part is the pkg/messaging/v1 package which in the current runtime is dealing with byte slices only (classes are InvokeMethodRequest and InvokeMethodResponse). Changes in those classes of course have the consequence of requiring widespread changes throughout the runtime.
  3. Change the sidecar-to-sidecar communication to send data in chunks using a stream-based gRPC: from CallLocal to CallLocalStream
  4. Change the HTTP channel to send data to the client in a streaming way.

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. make test-race in this PR right now fails due to a race condition in fasthttp itself).

The new plan is:

  1. Split out part 3 (change the sidecar-to-sidecar communication to use CallLocalStream) into a separate PR for 1.10, ideally behind a feature flag. I will do it in the near future.
  2. Work on 1, fixing Migrate HTTP server from fasthttp to net/http #4979 (I could use help with this :) )
  3. When fasthttp is out and we hopefully have a more stable implementation with net/http, complete part 2, probably taking from this PR.

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!

@ItalyPaleAle ItalyPaleAle mentioned this pull request Dec 6, 2022
ItalyPaleAle added a commit to ItalyPaleAle/dapr that referenced this pull request Dec 6, 2022
Backported from dapr#5170

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
artursouza pushed a commit that referenced this pull request Dec 15, 2022
@dapr-bot
Copy link
Collaborator

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!

@dapr-bot dapr-bot added the stale Issues and PRs without response label Dec 18, 2022
@ItalyPaleAle
Copy link
Contributor Author

👋🤖

@dapr-bot dapr-bot removed the stale Issues and PRs without response label Dec 19, 2022
@ItalyPaleAle
Copy link
Contributor Author

Closing as this is now superseeded.

Still waiting on #4979 to complete the feature E2E.

mcandeia pushed a commit to mcandeia/dapr that referenced this pull request Jan 11, 2023
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>
@artursouza artursouza removed this from the v1.10 milestone Feb 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants