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

Scheduler: Building Block & Control Plane Service #7716

Closed
wants to merge 417 commits into from

Conversation

cicoyle
Copy link
Contributor

@cicoyle cicoyle commented May 3, 2024

This PR adds the relevant code for:

  1. a new Scheduler Building Block
  2. a new Scheduler Control Plane Service

This PR follows this official proposal, however we did implement bidirectional streaming between the Scheduler and Daprd Sidecar (the proposal will be updated to reflect this change).

This is an end to end solution where an app is able to schedule a job to the daprd sidecar and perform basic crud operations with the job. The daprd sidecar sends the job to the Scheduler control plane service, which then stores the job in its embedded etcd. At trigger time, the scheduler will send the job back to the daprd sidecar where the sidecar will send the triggered job along to the app.

This includes work to replace the actor reminder subsystem, by scheduling the actor reminders in the Scheduler control plane service embedded etcd.

Perf numbers will be provided soon.

There were several individuals involved in making this work happen - thank you to all 🚀

Issue reference

1.14 release P0
Here is the issue tracking the work. There are a few remaining items that will be completed before the release date.

Checklist

Please make sure you've completed the relevant tasks for this PR, out of the following list:

ItalyPaleAle and others added 28 commits May 24, 2024 09:06
* Chore: update artifact actions

The `master` tag was pointing to a very old build that sometimes failed (the "master" branch is now "main"). More appropriately pointing to a version now. Also, changed to avoid compressing artifacts that are already compressed.

In the process, also updated other actions including setup-go, which comes with its own caching for Go deps so we don't need the custom cache tasks

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fix Windows artifact publishing

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* More small tweaks

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 <asouza.pro@gmail.com>
Co-authored-by: Loong Dai <long.dai@intel.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
…apr#7318)

* Cherry-pick dapr#7029

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* WIP: Add config options to Helm chart and configure injector

Co-authored-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

* Pass Actors/Reminders options to daprd

Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

* Fixed passing actor service

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Also pass remindersService configuration

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* go.mod change

Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

* Revert

Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

* Revert

Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

* placement address corection in tpl

Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

* Auto-loading of placement and reminders providers

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Small fixes

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fixed bug in injector

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Added log

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Add headers

Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>

---------

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Deepanshu Agarwal <deepanshu.agarwal1984@gmail.com>
Co-authored-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
…uilding block (dapr#7390)

* E2E tests for the crypto building block

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fixed build with subtlecrypto

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

---------

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Tune actor app health check to become healthy sooner

Signed-off-by: joshvanl <me@joshvanl.dev>

* Reset failure count to 0 on a healthy actor app health check

Signed-off-by: joshvanl <me@joshvanl.dev>

* Move wait group to just before go routine

Signed-off-by: joshvanl <me@joshvanl.dev>

* Change failure threshold `int32` -> `int`

Signed-off-by: joshvanl <me@joshvanl.dev>

* Fix actors health checker

Signed-off-by: joshvanl <me@joshvanl.dev>

* Returns `errors.Join` for actors `Close` procedure

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Updating protos

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* enable recursive terminate/purge

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Updating dtf-go

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* updating contrib

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Correct proto generated files

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* update comment

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* implementing getOrchestrationRuntimeState

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Adding unit tests

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* make modtidy-all

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Adding recursive option in query parameter

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Adding integration test for workflow

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* fix bug in Creating sub-orchestrations

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Setting recursive/terminate purge to default and adding tests for same

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* linter fixes

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Removing fix from this PR

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* renaming  to

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* linter fixes

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

---------

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Co-authored-by: Loong Dai <long.dai@intel.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
* Updated pinned components-contrib

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fixed integration tests

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* downgrade json-patch due to breaking change

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Updated json-patch to 5.8.1

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>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Removes vnodes from placement table message

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds vnodes calculation on the sidecar

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Removes log line

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Backwards compatibility for  placement tables without vnodes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Update

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Fixes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Account for daprd at 1.13 and placement at < 1.13

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Missed var

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds unit tests

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Cleaning up

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Fixes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Small optimisation

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds caching for vnodes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Update pkg/placement/hashing/consistent_hash.go

Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>

* Fixes after review

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds unit test for the Virtual nodes cache

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* lint fix

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Update tests

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Fixes linter errors

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds tests for actor service properly handling the old and new version of placement tables

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* small improvement

Signed-off-by: Elena Kolevska <elena@kolevska.com>

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: yaron2 <schneider.yaron@live.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Mark actors healthy on no app channel or actor entities

Mark actors as always healthy when there is no app channel or their have
been no actor entities (actor types) provided by the application config
endpoint. This is important for enabling actor related APIs such as
workflows, which don't rely on the application implementing actors
itself.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Adds integration tests for actor healthz endpoints

Most importantly, ensuring that actors are marked as always healthy when
the both the application healthz endpoint is disabled, and the
application reports no actor entities.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Remove uneeded app health check store

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update tests/integration/suite/actors/healthz/endpoint/noapp.go

Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Update tests/integration/suite/actors/healthz/endpoint/noappentities.go

Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* append app token to outgoing calls, if it is provided

Signed-off-by: Ryan Kelly <gatedlogic@live.com>

* use declare and assign syntax

Signed-off-by: Ryan Kelly <gatedlogic@live.com>

---------

Signed-off-by: Ryan Kelly <gatedlogic@live.com>
Co-authored-by: Ryan Kelly <gatedlogic@live.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* WIP

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Bunch of fixes in tests

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* More test fixes

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* More test fixes

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* More tweaks

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* More test fixes

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fixes and improvements to code legibility

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Use a lock around internalActors property

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* 💄

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Fixed last test

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Changed per review feedback: use a single struct for reminders and timers

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* WIP: use factory for internal actors

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Improve APIs for internal actors

Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>

* Updated comment

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: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Co-authored-by: Loong Dai <long.dai@intel.com>
Account for Windows specific host connection errors in the mtls
standalone disable test. This makes parity with the kubernetes test.

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
…vel` (dapr#7400)

Updates the placement API Level gRPC context key from `ApiLevel` to
`dapr-placement-api-level`. Although collisions are highly unlikely, it
could be considered more "correct" and best practice to namespace our
application specific metadata keys.

This isn't a breaking change as this key hasn't been part of a release
yet.

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
…apr#7041)

* Injector: Change daprd projected token audience to sentry SPIFFE ID

Signed-off-by: joshvanl <me@joshvanl.dev>

* Linting

Signed-off-by: joshvanl <me@joshvanl.dev>

* Change SidecarConfig to use string type for SentrySPIFFEID

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Cascade terminate/Purge Workflow Support (dapr#7340)

* Updating protos

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* enable recursive terminate/purge

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Updating dtf-go

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* updating contrib

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Correct proto generated files

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* update comment

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* implementing getOrchestrationRuntimeState

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Adding unit tests

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* make modtidy-all

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Adding recursive option in query parameter

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Adding integration test for workflow

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* fix bug in Creating sub-orchestrations

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Setting recursive/terminate purge to default and adding tests for same

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* linter fixes

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* Removing fix from this PR

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* renaming  to

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

* linter fixes

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>

---------

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Co-authored-by: Loong Dai <long.dai@intel.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Viktor Subota <viktor.subota@c.delinea.com>

* Add priorityClassName parameter to Helm chart

Signed-off-by: Viktor Subota <viktor.subota@c.delinea.com>

* Add priorityClassName to README doc

Signed-off-by: Viktor Subota <viktor.subota@c.delinea.com>

---------

Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>
Signed-off-by: Viktor Subota <viktor.subota@c.delinea.com>
Co-authored-by: Shivam Kumar <shivamkm07@gmail.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Co-authored-by: Loong Dai <long.dai@intel.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Co-authored-by: Viktor Subota <viktor.subota@c.delinea.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Fix vnode response to placement clients.

Fixes vnode response to placement clients to be backwards compatible.
Makes the API level check based on cluster level, rather than on a per
request basis. Remove placement API level gRPC context metadata.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Fix method used in int sa grpc test

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
…e caller (dapr#7406)

* Prevent invalid traceparent ("00-00000...") from being returned to the caller

Signed-off-by: Karsten Wintermann <58027075+KarstenWintermann@users.noreply.github.com>

* OpenTelemetry trace context not transmitted when using rawPayload with Kafka
Fixes dapr#7372

Signed-off-by: Karsten Wintermann <58027075+KarstenWintermann@users.noreply.github.com>

---------

Signed-off-by: Karsten Wintermann <58027075+KarstenWintermann@users.noreply.github.com>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* fix skew tests

Signed-off-by: yaron2 <schneider.yaron@live.com>

* Add patch file for e2e error condition.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Movie skew E2E patch to the right folder.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

---------

Signed-off-by: yaron2 <schneider.yaron@live.com>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Remove the unnecessary `time.Sleep`s slowing the workflow int test by
20s. Resolves the data race by using an `atomic.Bool` for shared state.

Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Updates controller-runtime, remove WriteSVIDToDir

PR updates go modules, specifically controller-runtime to v0.16.3 so
that the webhook server can be configured to use TLS options. This
removes the need for the operator to write the SVID to disk and maintain
it in memory.

PR removes the WriteSVIDToDir option from security.

Operator cache has been updated to use new controller-runtime types.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update deprecated funcs

Signed-off-by: joshvanl <me@joshvanl.dev>

* Replace deprecated function in test/runner

Signed-off-by: joshvanl <me@joshvanl.dev>

* Fix Kubernetes integration process

Signed-off-by: joshvanl <me@joshvanl.dev>

* Include int framework operator v2alpha1 API endpoint with subscription
v2

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
* Temporary override to have Redis to handle event metadata.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* E2E test change to reproduce HTTP header conflict in pubsub.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* E2E test for content-length conflict with gRPC subscriber.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Hotfix to avoid content-length header conflict in HTTP and gRPC.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Revert "Temporary override to have Redis to handle event metadata."

This reverts commit 20b60a0.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

---------

Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Shivam Kumar <shivamkm07@gmail.com>
Co-authored-by: Mukundan Sundararajan <65565396+mukundansundar@users.noreply.github.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
andrejpk and others added 25 commits May 24, 2024 11:11
* Switch to OTel ParentSampler for correct sampling behavior

Signed-off-by: Andrej Kyselica <andrejky@microsoft.com>

* fix formatting

Signed-off-by: Andrej Kyselica <andrejky@microsoft.com>

* fix lint error

Signed-off-by: Andrej Kyselica <andrej@kyselica.com>

---------

Signed-off-by: Andrej Kyselica <andrejky@microsoft.com>
Signed-off-by: Andrej Kyselica <andrej@kyselica.com>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
Co-authored-by: Loong Dai <long.dai@intel.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Samantha Coyle <sam@diagrid.io>
Co-authored-by: Loong Dai <long.dai@intel.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: kindknow <iturf@sina.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Subscriptions: Declarative Go Generic Loader

Following Components and HTTPEndpoints, creates a generic disk &
kubernetes loader for Subscriptions. Removes the adhok loaders from
existing runtime pubsub packages. This is required for adding
Subscriptions to the hot reloader reconciler and making a more
consistent & testable manifest loader package.

The disk loader loads both `v1alpha1` and `v2alpha1` Subscriptions,
converting `v1alpha1` to `v2alpha1` on successful load. Since the
operator returns only `v2alpha1` Subscriptions (Kubernetes API converts
`v1alpha1` to `v2alpha1`), the Kubernetes loader only loads `v2alpha1`.

`APIVersion() string` func has been added to the generic `meta.Resource`
interface type to allow for the generic loader to determine between
resource versions, supporting differentiating `v1alpha1` and `v2alpha1`
Subscription resource versions.

To ensure backwards compatibility of the previous disk Subscription
loader, the generic disk loader now tracks the order in which manifests
are loaded. This ensures that, even though `v1alpha1` and `v2alpha1`
Subscriptions use separate loaders, their file position order is
preserved once `v1alpha1` Subscriptions are converted to `v2alpha1`.
Subscription backwards compatibility of parsing & ingestion priority is
covered by existing extensive integration tests.

Notice that _ZERO_ of the comprehensive subscription integration tests
have been modified, proving no behaviour change has occurred for loading
and actuating Subscriptions.

Explanation of integration test changes:
- daprd/hotreload/selfhosted/crypto: loader now mandates `apiVersion` on
  disk manifests which is more correct. Previous behaviour ignoring this
  field should be considered a bug. Since we use Kubernetes resource
  API schema, `apiVersion` is (and has been) _always_ required.
- framework/process/grpc/operator/server.go: returning non-nil gRPC
  object for mocked operator Subscription RPC call prevents underlying
  gRPC library unmarshal nil errors- more correct than previous
  implementation.

Part of [Subscription hot-reloading](dapr#7139).

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update errS to patherrs to avoid confusion

Signed-off-by: joshvanl <me@joshvanl.dev>

* Updates sub import to use bare version string

Signed-off-by: joshvanl <me@joshvanl.dev>

* Remove unneeded code comment

Signed-off-by: joshvanl <me@joshvanl.dev>

* Change test manifests to have unique names

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Fixes warning “Running http and grpc server on single port. This is not recommended for production.”

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Suffixes data dirs with instance id

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds space quota parameter

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Sets default quota to 2GB

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds compaction parameters

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Updates helm charts

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Adds namespace to data dir name. Renames etcdID to just ID.

Signed-off-by: Elena Kolevska <elena@kolevska.com>

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Hot Reload: Subscription

Adds support for Subscription Hot Reloading.

If the Hot Reloading preview feature is enabled, create, update and
delete events to declarative Subscriptions will be reflected in the
Subscriptions runtime without needing to restart the Dapr runtime. Works
in both self-hosted and Kubernetes modes.

Note that, because topic routes and not indexed by Subscription
resources, all Subscriptions will be cancelled and topic routes re-built
and re-subscribed when a Subscription event occurs. A possible
improvement would to only cancel all topic route subscriptions which are
related to the Subscription pubsub or include an index of the
Subscription which a topic is routed for, however this is out of scope
of this change. Support for per topic route cancellation will be needed
for on-demand bi-directional subscriptions.

In-flight messages are not effected by Subscription hot reloading.

Branched from dapr#7582

Closes dapr#7139

Signed-off-by: joshvanl <me@joshvanl.dev>

* Load all Subscriptions before reloading on boot

Signed-off-by: joshvanl <me@joshvanl.dev>

* Adds unit tests for subscription client side scope filtering

Signed-off-by: joshvanl <me@joshvanl.dev>

* Linting

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
* Operator: Component server side scope filtering

Today, daprd's will receive Component from the operator, regardless of
whether they are scoped for that Component or not. This means that
clients do receive components (including its associated secrets) that
they are not scoped for.

Updates Operator API ComponentUpdate to perform service side Component
Scope filtering based on the authenticated client App ID. When a
Component is de-scoped, daprd will receive a DELETE for the previous
Component manifest. When a Component is scoped-in, daprd will receive an
CREATE for the new Component manifest.

Updates Operator API ListComponents to perform service side Component
Scope filtering based on the authenticated client App ID.

Uses updated events batcher which ensures queue items are sent in order.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Add 2 daprds for operator informer tests

Signed-off-by: joshvanl <me@joshvanl.dev>

* Fix control plane trust domain

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update github.com/dapr/kit to master

Signed-off-by: joshvanl <me@joshvanl.dev>

* go mod tidy

Signed-off-by: joshvanl <me@joshvanl.dev>

* Fix incorrect pointer manifest compare

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Co-authored-by: Yaron Schneider <schneider.yaron@live.com>
* able to send triggered job back to app via the app channel from daprd sidecar using both grpc and http protocols

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* change sidecar receiving job to debug level to still validate the scheduler stream

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* grpc test

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* wip

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* some cleanup

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* update test framework grpc app to add the OnJobEventFn and update test to use it. grpc appcallback test passes

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* wip http test

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* added http working test. need to make lint

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* update tests with stub for interface func for triggerJob to app now since its in the app channel interface

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* defer release of ch

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* go-etcd-cron

Signed-off-by: joshvanl <me@joshvanl.dev>

* Fix multi-scheduler int test

Signed-off-by: joshvanl <me@joshvanl.dev>

* Review comments

Signed-off-by: joshvanl <me@joshvanl.dev>

* Rename schedule app job type to job

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
* restore test file diff, keep chart chagnes

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* fix read-only err

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Disk Loader: Scope filtering

Adds scope filtering to the disk manifest loader.

Though this doesn't have any security benefits, it does mean manifests
are filtered much sooner in the runtime when running in self-hosted mode
and prevents logging/errors downstream in modules like the hot reloading
reconciler.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update internal disk loader unit test with Options param

Signed-off-by: joshvanl <me@joshvanl.dev>

* Pass appID to hotreload disk loader for scope filtering

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* first commit

Signed-off-by: yaron2 <schneider.yaron@live.com>

* add tests

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>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Pin latest contrib with Go 1.22

Signed-off-by: Bernd Verst <github@bernd.dev>

* Fix mysterious linter issue

Signed-off-by: Bernd Verst <github@bernd.dev>

* Downgrade cosmosdb

Signed-off-by: Bernd Verst <github@bernd.dev>

* Update go.mod

Signed-off-by: Bernd Verst <github@bernd.dev>

* Fix CosmosDB for latest API version

Signed-off-by: Bernd Verst <github@bernd.dev>

* Install gotestsum in Makefile

Signed-off-by: Bernd Verst <github@bernd.dev>

* Pin Go 1.22.2

Signed-off-by: Bernd Verst <github@bernd.dev>

* Fix makefile

Signed-off-by: Bernd Verst <github@bernd.dev>

* revert makefile changes

Signed-off-by: Bernd Verst <github@bernd.dev>

* Update all go.mod/Makefile/Dockerfile for `1.22`. Remove `{}` chars from
HTTP route fuzz generations.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Makefile: export `go/bin` to PATH for darwin

Exports the `go/bin/darwin_$(arch)` directory to the PATH environment
variable when running on Darwin. This ensures that binaries installed by
`go install` are available in the Makefile exec path.

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: Bernd Verst <github@bernd.dev>
Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: joshvanl <me@joshvanl.dev>
* Refactor SPIFFE from `pkg/security` to `kit`

Updates the `pkg/security` package to move the SPIFFE implementation to
a new kit package. This new kit package is more modulated and fuller
test coverage. This package has been moved so that it can be both
imported by dapr & components-contrib, as well as making the package
more suitable for further development to support X.509 Component auth.

dapr/proposals#51

Also moves in test/utils from dapr to crypto/test for shared usage.

Part of dapr/proposals#51

Uses go mod fork of dapr/kit#92

Signed-off-by: joshvanl <me@joshvanl.dev>

* Include SVID context with `Init`ing Component

Signed-off-by: joshvanl <me@joshvanl.dev>

* Adds security to processor options

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update github.com/dapr/dapr to master

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update `util` to new `test` package import

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update go.sum

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
* Bidirectional job trigger & ack.

Adds job ack from scheduler client for when job is finished processing
and can be ticked.

Adds mTLS authorization to scheduler API server.

Adds integration tests for scheduler Jobs and Actor Reminders.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Review comments & reconnect scheduler int test

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update go-etcd-cron

Signed-off-by: joshvanl <me@joshvanl.dev>

* Linting

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
…ler statefulset (#27)

* Charts: Adds option to use PVC for Scheduler statefulset

Adds optional `dapr_scheduler.cluster.persistentVolumeClaimName` helm
chart values option to change the scheduler data dir volume to use the
references PersistentVolumeClaim, rather than an empty dir, making ETCD
data persistent across pod restarts.

Also changes the volume and mount paths so that all schedulers share the
same root mount path, but write to a sub directory of the form
"/<namespace>/<scheduler-id>".

Signed-off-by: joshvanl <me@joshvanl.dev>

* Update scheduler volume to use volumeClaimTemplate

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Adds `listen-address` CLI flags for all services servers.

Address corresponding `--listen-address` CLI flags for all services
servers. This sets the listening address for these TCP servers.

This is added to allow users to both bind the address to localhost to
prevent access to a particular server on the network, as well as for
integration testing as it is more correct to bind to localhost and
prevents triggering MacOS firewall popups.

Signed-off-by: joshvanl <me@joshvanl.dev>

* Report localhost to nameresolver when internal grpc listen address is
localhost

Signed-off-by: joshvanl <me@joshvanl.dev>

* Use localhost host for placement report when internal gRPC address is
localhost

Signed-off-by: joshvanl <me@joshvanl.dev>

* Change default listen-address from `0.0.0.0` to empty string to allow
for default ipv6 support and keep backwards compat.

Signed-off-by: joshvanl <me@joshvanl.dev>

---------

Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* merge & fix http status code check

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* triggered job e2e test for http app

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* update test iteration nums

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* rm time.sleep -> assert.eventually

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* rm local test changes

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* update test name

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* tweaks

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* grpc e2d works, need to cleanup grpc test

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* rm grpc test and combine into http test. keep both apps tho. need to cleanup local test changes in scheduler_test

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* cleanup local test changes

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* make lint

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* mv things around

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* cleanup

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* thread -> goroutine

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Update clients.go

Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* rm commented line

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Apply suggestions from code review

Co-authored-by: Josh van Leeuwen <me@joshvanl.dev>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* PR review updates

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* review updates. add code todo

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Co-authored-by: Josh van Leeuwen <me@joshvanl.dev>
* continuously retry scheduler clients if it fails upon the first try

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Apply suggestions from code review

Co-authored-by: Josh van Leeuwen <me@joshvanl.dev>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* fix indentation after UI committing

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Co-authored-by: Josh van Leeuwen <me@joshvanl.dev>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* Update README.md

Signed-off-by: Martin Oehlert <mo1987@gmx.net>

* Update README.md

Signed-off-by: Martin Oehlert <mo1987@gmx.net>

---------

Signed-off-by: Martin Oehlert <mo1987@gmx.net>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
* api token fix

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Elena Kolevska <elena@kolevska.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
…service list, make lint

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
@cicoyle
Copy link
Contributor Author

cicoyle commented May 24, 2024

rebasing to fix the DCO in CI caused all the conflicts... working to resolve them rn

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
@cicoyle
Copy link
Contributor Author

cicoyle commented May 24, 2024

Something wonky happened with my rebasing to fix the DCO check. Going to nuke this PR and open a fresh one from my backup branch (thankfully, I made a backup of the branch before going down the worm hole trying to fix DCO)

@cicoyle cicoyle closed this May 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autoupdate DaprBot will keep the Pull Request up to date with master branch
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet