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

Add api to get all stored state names for the actor #27

Closed
yaron2 opened this issue Jun 20, 2019 · 7 comments
Closed

Add api to get all stored state names for the actor #27

yaron2 opened this issue Jun 20, 2019 · 7 comments

Comments

@youngbupark youngbupark self-assigned this Aug 8, 2019
@youngbupark
Copy link

@yaron2 JFYI - I will work on this issue.

@yaron2
Copy link
Member Author

yaron2 commented Aug 8, 2019

Sure

@lukekim
Copy link
Contributor

lukekim commented Aug 9, 2019

@youngbupark to sync with @amanbha on this issue and produce a small write-up/spec of what we need to deliver including a definition of done for the issue.

@youngbupark
Copy link

This issue has the dependency on #130 . So we pushed this item back to To do

@youngbupark
Copy link

Design Proposal

Overview

This proposes new API allowing user code or SDK to retrieve all stored states' names for the actor. Once Action Actor supports granular state management (#130), it stores the multiple states for the single actor id. This proposed API returns the array which enumerates all state names which have ActionsID-actorType-actorID- prefix in the backend state store.

Proposal

Issue #130 is addressing SaveState improvement to set the multiple states and stores the state in the backend state store with the below key format.

ActionsID-actorType-actorID-[state_name]

New GetStateNames API returns the array which includes the list of state names starting with ActionsID-actorType-actorID- key prefix in the backend state store.

Proposed API signature

GetStateNames(req *GetStateRequest) (*StateNamesResponse, error)

Return type:

struct StateNamesResponse {
    StateNames []string
}

Example

Assume that user code save the below 3 states in Redis State store:

ActionsID-actorType-actorID-key1
ActionsID-actorType-actorID-key2
ActionsID-actorType-actorID-key3

GetStateNames will return the below state names as an array without the prefix ActionsID-actorType-actorID-

{
    StateNames: [ "key1", "key2", "key3" ]
}

References

@yaron2
Copy link
Member Author

yaron2 commented Aug 9, 2019

Looks good to me!

Bear in mind this needs to be implemented for the gRPC API server as well, most likely since we're going to transition from using HTTP to gRPC for the Actor SDKs

@msfussell
Copy link
Member

Deprioritizing this issue based on review. Can revisit in the future as needed.

mikeee pushed a commit to mikeee/dapr that referenced this issue Jun 3, 2024
…ler statefulset (dapr#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>
artursouza added a commit that referenced this issue Jun 25, 2024
* add back in scheduler app that I forgot to add in. fix go.mod

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

* add a bunch of integration tests and run make lint

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

* Convenient ignore for .local folder.

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

* Add scheduler to the list of binaries in Makefile.

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

* Move placement interface out of internal package.

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

* Move actor config out of internal package.

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

* Move actor api level out of internal.

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

* Add placement client to scheduler.

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

* update go.mod and rm the appID prefix from being returned to users

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

* fix up some make lint issues

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

* Make data to be bytes and add it to scheduler's trigger callback.

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

* Triggers reminders using scheduler service.

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

* Address comments.

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

* Update pkg/actors/actors.go

Co-authored-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Revert Job's data back to Any.

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

* integration tests for daprd connecting to scheduler and performing crud ops on 10jobs. req validation

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

* add error integration tests for schedule job

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 imports and general cleanup and fix issue with require.Len on slice from PR review feedback

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

* add helper for error reason string construction

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

* build out scheduler server as grpc server for testing to force scheduler server errors. add tests for all other tests

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

* rename constructReason file

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

* metadata -> errMetadata to avoid confusion

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

* updates based on PR feedback

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

* Update tests/integration/suite/scheduler/api/jobs.go

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

* fix names due to added PR feedback thru UI

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>

* incorporate Josh's feedback

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

* update error strings based on PR feedback

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

* Add etcd data dir, Listen addr, cleanup (#15)

* pulling out changes from existing PRs to be cleaner

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

* cherrypick listen addr logic from other PR commit

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

* Make scheduler host address singular

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

* wip

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

* put back etcd name to fix err

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

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: joshvanl <me@joshvanl.dev>
Co-authored-by: joshvanl <me@joshvanl.dev>

* fix issue running tests in parallel by adding initial cluster info and more etcd config

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

* change scheduler logLevel back to info for test

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

* wip

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

* got ha for 2 schedulers working and am able to see the db in etcd via the cli

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

* move tests around based on PR feedback

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

* move tests around based on PR feedback

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

* cleanup of comments and update test to schedule against a random scheduler, but ensure data exists on all schedulers

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

* cleanup and switch initialCluster to []string

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

* update etcdClientPorts to be a map to de-dup the lookup logic

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

* update test framework to have EtcdClientPort on scheduler for easier lookup later

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

* make lint

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

* cleanup

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

* update test framework etcd-client-ports

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

* fix import

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

* add note to rm etcdctl cmd later

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

* rm raw command for library func

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

* add initial connections pool for scheduler server of sidecars connecting

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

* initial streaming from scheduler to sidecar at trigger time works. need to cleanup still and write tests

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

* cleanup scheduler server.go

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

* fix stream ctx to exit go routine properly

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

* kill runtime go routine if ctx is cancelled or if it errs and pass err out of go routine

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

* Create Scheduler Charts (#12)

* initial charts. need to fix caching issue to confirm

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

* Adds ETCD data dir option, use emptyDir in statefulset

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

* fix healthz port

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

* updates to charts

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

* wip. need to fix connectivity issue, but added to injector and updated client code to be an abstract wrapper

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

* Make scheduler host address singular

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

* Update cmd/scheduler/options/options.go

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

* rm reminders service name condition

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

* add listen address for scheduler

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

* rebase in trigger reminders via scheduler PR and fix actors scheduler client

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

* ha -> replicaCount, update conditionals including it and use Etcd over ETCD vars

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

* rm volumeClaimTemplates and cleanup

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

* fix version issue

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

* rm diff

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

* updates to ensure ha for k8s works

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

* condense var into 1 line

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

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Josh van Leeuwen <me@joshvanl.dev>
Co-authored-by: joshvanl <me@joshvanl.dev>

* remove the sidecar connections from the connPool in scheduler when appropriate. general cleanup. add logs

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

* pkg/runtime/runtime.go

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

* schedulerManager added, streaming works for n sidecars however, it doesn't stream back to the proper appID. this needs to be fixed

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

* jobs now stream to the proper appID

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

* fix runtime go routines to close properly. this schedules jobs properly to 2 sidecars of a diff appID

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

* minConnCount -> max. fix lock on nsappid

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

* add backoff retry inf logic for sidecar connecting

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

* cleanup

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

* random index for appID connection streaming choice and read lock for better efficiency

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

* send only job data & metadata on stream. remove ConnectHosts.

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

* string ptr for addresses to string. cleanup. add cmd options to testing framework for scheduler: placement, maxConns, maxWaitTime, add sidecar to notls test to get it to pass since scheduler needs a sidecar to stream back to at trigger time

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

* make max sidecar conns -1 pending load tests

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

* wip

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

* testing my push

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

* Adds closeCh to signal shutdown of watcher

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

* still need to polish code, but wanted to push bc its working for reconnecting and having sidecar wait for scheduler to come up

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

* Update to latest cron lib. (#17)

* Update to latest cron lib.

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

* Implement DeleteReminder

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

* Fix IT for cron after internal schema change in etcd store.

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

* Fix IT for scheduler.

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

* Update cmd/daprd/options/options.go

Co-authored-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Use "@every" to convert period to schedule.

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

* Add GetJob again and assume namespace in metadata.
Other comments.

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

* Address comments.

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

* remove debug line.

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

* Don't double close etcd.

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

---------

Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* streaming test ensuring triggered job logged on proper sidecar. adding wip rotate scheduler client if conn err. fixing to switch back to what I originally had.

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

* rm unused rotate client on conn err. instead proceed to rotate schedulers per crud operation

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

* gs

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

* unexport manager structs where possible. updates based on PR feedback

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

* make lint

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

* rm \n

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

* Fix scheduler client ref. (#20)

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

* use runner manager for go routines for scheduler manager & refactor/update streaming code in scheduler manager to be cleaner

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

* update log spacing bc that was failing the streaming test. rm extra lock on pool

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

* make lint

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

* update actor code to use schedulerManager for next client and rm schedulerClient

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

* update scheduler server conn pool to be in internal dir

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

* mv struct creation to schedulerManager code, not runtime

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

* rm maxConnsPerAppID and maxWaitTime

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

* add appID + ns as first class fields and comment out ttl since updating to the latest cron lib breaks it. this will be added by artur in a followup PR

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

* update notls test to rm time.sleep and assertEventually. update ns+appID to be in func and not caller logic

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

* rm double string concatenation per josh PR feedback

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

* rm extra setting of scheduler addr on daprd in framework since its set higher up in exec area

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

* rm unused var

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

* update trigger func to be latest lib

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

* metadata of ns+appID added to scheduler logic, and removed from sidecar side

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

* rm comment

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

* simplify nextIdx for scheduler based on PR feedback

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

* add code todos

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

* pr feedback: watchJobs

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

* mv client funcs to client dir

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

* fix weird spacing in proto file

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

* add schedulerManager Options struct

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

* log.Errorf everywhere with addr

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

* use atomic int instead of rand for next scheduler client. rm lock

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

* rm SideCarConnDetails struct

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

* move ns, appID concat to pool pkg

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

* Update pkg/scheduler/server/internal/pool.go

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

* rm ctx per PR feedback since its unused

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>

* Update tests/integration/framework/process/daprd/options.go

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

* added todo to rm appID + ns from test for streaming

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

* Productionises distributed scheduler (#22)

* 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>

* merge in master and comment out actorInternal in scheduler server.go

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

* Send Triggered Job to App (#23)

* 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 (#25)

* 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>

* fix charts (#24)

* 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>

* rm space in go.mod

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

* Bidirectional job trigger & ack. (#26)

* 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>

* Charts: Adds option to use dynamic PVC provistioned volume for Scheduler 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>

* add opts.HealthzListenAddress to fix make lint

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

* Scheduler e2e tests (#28)

* 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>

* Retry clients if first try fails (#29)

* 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>

* make lint

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

* forgot to push this diff for e2e tests (#30)

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

* Scheduler reminder preview feature (#31)

* initial feature flag

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

* rename protos. add getReminder scheduler logic

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

* fix typos

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

* undo exporting the internal struct. added and exported func to call for reminderPeriod

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

* fix typo

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

* tweaks

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

* total credit for this code goes to @artursouza

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

* test for actor reminder scheduler preview feature

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

* make lint

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

* PR feedback

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

---------

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

* v1.0 -> v1.0-alpha1 (#32)

* v1.0 -> v1.0-alpha1

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

* v1.0-alpha1 for e2e app

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

---------

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

* revert some unintentional changes (#33)

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

* make lint

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

* try to fix e2e (#34)

* try to fix e2e

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

* rm test changes since env var now

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

---------

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

* Adds actor reminder scheduler perf tests (#35)

* Adds actor reminder scheduler perf tests

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

* Run daprd in debug mode for test relying on new debug line

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

---------

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

* Adds trigger performance tests (#36)

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

* update rpc names, fix mtls test (#37)

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

* Fix scheduler int tests (#38)

* fix idtypes test

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

* tweaks to fix some tests

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

---------

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

* make tests pass consistently (#39)

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

* fix endpoint test (#40)

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

* add ttl and up schedule time to see if it fixes the test (#41)

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

* fix %d -> %f for perf tests

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

* Updates go-etcd-cron to main to include dequeue delete (#42)

Also updated the scheduler crud test to remove race condition on testing
results but waiting longer to observe/not observe triggers.

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

* fix go.sum

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

* Feat dist scheduler perf tune (#43)

* Increase dueTime for reminder

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

* Adds scheduler app as scope to config state store

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

---------

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

* Tune V2 (#44)

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

* Enable HA for perf tests (#46)

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

* rm ha (#47)

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

* Enable scheduler reminders in workflow performance test (#48)

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

* Enable scheduler reminders in workflow performance test (#49)

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

* Fix workflow perf config option (#50)

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

* Make runtime scheduler app channel use same interface. Set status code (#51)

on HTTP send job to gRPC status code

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

* Updates go-etcd-cron (#52)

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

* Updates go.sum (#53)

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

* Updates go-etcd-cron (#54)

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

* Fix buildx from arm64 host OS.

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

* Force docker type for docker image.

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

* Enable scheduler for workflows (#55)

* Enable scheduler for workflows

Enables scheduler to work with actor workflows.

Updates go-etcd-cron library to fix job name validation errors, and
ensure actor reminders are triggered on due_time, even when schedule
set.

Executes `actorRuntime` reminder execution handling in runtime scheduler
client trigger handler, ensuring internal workflow actors are invoked.

Advertises internal workflow `dapr.internal.default.xyz.workflow` and
`dapr.internal.default.xyz.activity` actor types to scheduler so enable
receiving workflow actor reminders.

Adds scheduler workflow integration tests.

Moves scheduler actor reminders as an implementation of the actor
reminder interface, removing the no-op implementation.

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

* Adds namespace to scheduler advertised internal work actor type

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

---------

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

* Adds CallActorReminder internal gRPC to hop reminder calls to (#57)

correct host

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

* Always use localnamespace in acotr invocation, and use correct target (#58)

AppID in reminder

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

* Restart scheduler between workflow runs (#59)

Fix data race condition in remote scheduler integration test

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

* rename type->JobTargetMetadata per proposal feedback (#56)

* rename type->kind per proposal feedback

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

* JobMetadataKind->JobTargetMetadata

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

---------

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

* Test 100k Workflows with Scheduler (#60)

* 100k workflows

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

* just do the 100k workflows

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

* update test.js

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

---------

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

* Scheduler 100k workflows (#61)

* 100k workflows

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

* just do the 100k workflows

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

* update test.js

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

* up timing and mem

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

* 1k->100

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

---------

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

* up all mem limits (#62)

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

* try rm-ing ctx timeout for actor reminder for workflow (#63)

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

* Scheduler fix workflow perf (#65)

* update existing scenarios to test 100k workflows

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

* only do it for 2 of tests

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

---------

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

* add rate (#66)

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

* 100k -> 10k (#67)

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

* upping/rm every timeout I could fine

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

* up timeout (#68)

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

* reset workflow timeouts and vals/config (#69)

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

* Update charts/dapr/charts/dapr_scheduler/templates/dapr_scheduler_poddisruptionbudget.yaml

Signed-off-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>

* Scheduler fix int tests: quorum/notls on windows (#64)

* up time for windows int tests

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

* up int test times to pass

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

---------

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

* Update pkg/api/errors/errors.go

Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* Update tests/perf/actor_reminder/actor_reminder_test.go

Co-authored-by: Mike Nguyen <hey@mike.ee>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>

* gofmt

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

* Reset Workflow Config & Fix License (#71)

* fix license yr & fireAt -> fire_at from PR feedback

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

* fix proto spacing and dont use empty

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

* update return type and rm deprecation warning

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

* reset activity_actor.go diff

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

* fix license and reset workflow config

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

* fix flaky idtypes test, PR feedback

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

* rm legacy code bits per PR feedback

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

* uint64 -> string per PR feedback

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

* reset listen-addr and uint64 type

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

---------

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

* rename scheduler api -> jobs api (#72)

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

* update e2e app endpoint

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

* Scheduler workflow perf test app + original workflow perf test app (#73)

* add another app to test scheduler instead of replacing the existing one

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

* add : for new var

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

* general cleanup of diff + grpc api -> jobs instead of scheduler

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

* cleanup

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

---------

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

* PR feedback updates + up test time (#74)

* update rand -> crypto/rand

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

* update uuid -> id per PR feedback + up test time

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

* uuid -> id, rand -> id++

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

* uuid -> id

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

---------

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

* up test time

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

* change default listen addr, up timeouts

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

* reset int test timeout

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

* rm redundant err check, debug loglevel for notls- (I will revert this)

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

* mv err log to actual err conditional block

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

* add getJobFn

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

* localhost -> 127.0.0.1

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

* trying @JoshVanL suggested changes to fix CI failures...TY

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

* make lint

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

* tweak notls: localhost->127.0.0.1

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

* tweak ctx handling. add debug loglevel (will revert)

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

* idtypes debug (will revert)

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

* notls debug loglevel again and 127.0.0.1 instead of localhost

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

* acct for windows path being different in etcd. / vs \

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

* revert int test debug log level

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

* log line added to idtypes

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

* rm log for testing

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

* rm log levels

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

* Move OnJobEvent to OnJobEventAlpha1 (#75)

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

* Fix pubsub E2E. (#76)

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

* make lint

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

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Signed-off-by: Cassie Coyle <cassie.i.coyle@gmail.com>
Signed-off-by: joshvanl <me@joshvanl.dev>
Signed-off-by: Josh van Leeuwen <me@joshvanl.dev>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Josh van Leeuwen <me@joshvanl.dev>
Co-authored-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
Co-authored-by: Dapr Bot <56698301+dapr-bot@users.noreply.github.com>
Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
Co-authored-by: Mike Nguyen <hey@mike.ee>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants