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

MVP new Actor Framework & Scheduler #635

Closed
meyerdan opened this issue Jan 25, 2018 · 1 comment

Comments

2 participants
@meyerdan
Copy link
Member

commented Jan 25, 2018

Zeebe's Workload

Zeebe has a diverse work load including

  • processing client requests
  • serving subscribers in streaming mode
  • running background jobs (compaction, ...)

Also, it needs to participate in network protocols such as Gossip and Raft which formulate requirements like sending pings and heartbeats at regular intervals or responding to such requests within a particular time frame.

Requirements

This results in conflicting requirements as to how to process this workload

  • Maximize utilization: Utilize system resources as much as possible up to saturation point
  • Meet deadlines: Ensure that even under high load, tasks with fixed deadlines (such as Gossip's ping requests or Raft's append entries requests are sent withing the required deadlines)
  • Ensure sustainable operation: even under high request load, subscriptions and background jobs still need to get a fair share of the available resources.

Actors and Green Threads

Currently Zeebe uses an actor model based on green threads. The system is implemented as number number of cooperating, non-blocking actors which are scheduled to a small number of threads. To not oversubscribe the CPUs (utilize past saturation point), the number of threads needs to be smaller or equal to the number of cores the system has. This is highly efficient since the actors are non-blocking: when a actor cannot make progress because it is waiting on data to become available or other conditions, it released the thread which can now progress to do work inside another actor.

While this model is generally very well suited for implementing a high-throughput system like Zeebe, the current implementation has many problems.

Problems with the current Implementation

The current implementation has the following problems

  • Poor load balancing: when running on systems with a larger number of cores (>=4) the system makes a poor job at balancing load across these cores to maximize utilization
  • Polling is the only solution to waiting: whenever an actor is waiting on some condition, it needs to poll for the condition to become true
  • No possibility to run blocking tasks/polling
  • Heavy on boilerplate for recurring tasks like implementing timeouts, waiting on the completion of futures, ... a lot of boilerplate code needs to be written all the time
  • Only coarsely grained control: from the outside it is only possible to call the actor's doWork() method, but we have no control over the inner workings of the actor. This makes it impossible to implement I/O schedulers and the like.

Proposed Implementation

The proposed implementation is comprised of two parts:

  • More expressive programming model: considerably reduces boilerplate and provides fine grained control to the scheduler
  • Efficient, O(1) workstealing scheduler supporting the more expressive programming model

In more detail, this means

  • Programming model allowing to directly express
    • consuming from "byte sources"
    • running periodic tasks
    • dealing with backpressure (running tasks until they are done, yielding CPU/thread time)
    • runing tasks with a fixed delay
    • blocking on Features to complete
    • running blocking tasks / polling
    • ...
  • Load-balancing through work-stealing (based on wait-free queue algorithms)
  • Built-in facility for timers (based on timer wheel facility)
  • Task priority classes with quotas to ensure that the system focuses on high priority tasks while ensuring that lower priority tasks are executed up to an assignable quota
  • Metrics allowing to track and eliminate "jumbo tasks" taking up too much runtime and blocking other tasks and by this preventing the system to meet it's deadlines.
  • Possibility to run blocking tasks and polling in separate threads blocking in the OS

Tradeoffs made

We can never have everyting at the same time. The following tradeoffs are made in the implementation

  • Garbage Freedom: the implementation is garbage free only in constructs which we expect to be used in the datapath
  • The scheduler expects a smaller amount of actors (hundreds) running a long time spawning many jobs (millions). Scheduling a new actor can be slower while running jobs needs to be super fast

TODOS for MVP

  • onActorStarted(...)
  • run(...), runDelayed(...), runAtfixedRate(...)
  • basic metrics
  • handle task runner idle
  • callables, futures and await
  • consume(...)
  • poll blocking
  • runBlocking(...) - short-lived blocking task
  • condition variables
  • runUntilDone
  • onActorClose(...)
  • ensure subscriptions do not interrupt current job

TODOs for full version

  • task execution metrics #671
  • metrics for detecting "jumbo" tasks #673
  • priority classes and priority quotas #674
  • support for I/O-bound actors #679
  • formalize lifecycle (open should not be interruptible by close)
  • task-quotas and preemption of long-running tasks
  • possibility to await regular futures (via blocking)
  • testcases
  • exception & error handling (particularly, look into agrona's DistinctErrorLog log)
  • benchmarks
  • improve code (decide on package visibility and direct field access, document most important concepts)
  • optimizations (branches!, check false sharing, evaluate thread affinity)
  • reduce garbage
  • logging
  • logging: custom MDC properties (see #574)

@meyerdan meyerdan self-assigned this Jan 25, 2018

@menski menski added the in progress label Jan 29, 2018

@meyerdan

This comment has been minimized.

Copy link
Member Author

commented Feb 1, 2018

@menski, I think it makes sense to merge scheduler mvp to master, it is not used yet and it does not change anything else, hence it should not cause any problems.

In order to do that, we need to update agrona to 0.9.12. The reason is that we are using DeadlineTimerWheel which has been added in that version.

@meyerdan meyerdan changed the title Scheduler MVP new Actor Framework & Scheduler Feb 1, 2018

@meyerdan meyerdan added needs review and removed in progress labels Feb 1, 2018

@meyerdan meyerdan assigned menski and unassigned meyerdan Feb 1, 2018

@menski menski closed this Mar 8, 2018

@menski menski removed the needs review label Mar 8, 2018

zeebe-bors bot added a commit that referenced this issue Feb 6, 2019

Merge #1959
1959: chore(deps): bump version.sbe from 1.12.0 to 1.12.1 r=menski a=dependabot[bot]

Bumps `version.sbe` from 1.12.0 to 1.12.1.

Updates `sbe-tool` from 1.12.0 to 1.12.1
<details>
<summary>Release notes</summary>

*Sourced from [sbe-tool's releases](https://github.com/real-logic/simple-binary-encoding/releases).*

> ## 1.12.1
> * Don't generate id methods for members of a composite. [Issue [#641](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/641)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/641).
> * Fix broken code generation that resulted from merging [PR [#631](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/631)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/631).
> * Add ability to get var data members as a `string_view` to remove copy with C++17. [Issue [#550](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/550)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/550).
> * Add `Automatic-Module-Name` to help support modular Java systems that include SBE.
> * Update C++ build to be more inline with Aeron. [PR [#635](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/635)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/635).
> * Upgrade to Mockito 2.24.0.
> * Upgrade to Agrona 0.9.32.
> 
> Java binaries can be found [here...](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22uk.co.real-logic%22%20sbe)
</details>
<details>
<summary>Commits</summary>

- [`0458ddd`](real-logic/simple-binary-encoding@0458ddd) 1.12.1 released.
- [`6314e29`](real-logic/simple-binary-encoding@6314e29) [C++] Don't generate id methods when in a composite. Issue [#640](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/640).
- [`c60ac3f`](real-logic/simple-binary-encoding@c60ac3f) [C++] Add ability to get a var data as a string_view. Issue [#550](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/550).
- [`770c2b8`](real-logic/simple-binary-encoding@770c2b8) [C++] Formatting.
- [`6673853`](real-logic/simple-binary-encoding@6673853) [Java] Fix generated codec for string_view with C++17.
- [`6508d4f`](real-logic/simple-binary-encoding@6508d4f) [Java] Upgrade to Mockito 2.24.0.
- [`22f344b`](real-logic/simple-binary-encoding@22f344b) [Java] Add Automatic-Module-Name.
- [`98bd2a9`](real-logic/simple-binary-encoding@98bd2a9) Merge pull request [#636](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/636) from billsegall/csharp-release
- [`a1b145b`](real-logic/simple-binary-encoding@a1b145b) Freshen for a nuget packaged release
- [`01545aa`](real-logic/simple-binary-encoding@01545aa) Merge pull request [#635](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/635) from denizevrenci/cmake
- Additional commits viewable in [compare view](real-logic/simple-binary-encoding@1.12.0...1.12.1)
</details>
<br />

Updates `sbe-all` from 1.12.0 to 1.12.1
<details>
<summary>Release notes</summary>

*Sourced from [sbe-all's releases](https://github.com/real-logic/simple-binary-encoding/releases).*

> ## 1.12.1
> * Don't generate id methods for members of a composite. [Issue [#641](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/641)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/641).
> * Fix broken code generation that resulted from merging [PR [#631](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/631)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/631).
> * Add ability to get var data members as a `string_view` to remove copy with C++17. [Issue [#550](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/550)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/550).
> * Add `Automatic-Module-Name` to help support modular Java systems that include SBE.
> * Update C++ build to be more inline with Aeron. [PR [#635](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/635)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/635).
> * Upgrade to Mockito 2.24.0.
> * Upgrade to Agrona 0.9.32.
> 
> Java binaries can be found [here...](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22uk.co.real-logic%22%20sbe)
</details>
<details>
<summary>Commits</summary>

- [`0458ddd`](real-logic/simple-binary-encoding@0458ddd) 1.12.1 released.
- [`6314e29`](real-logic/simple-binary-encoding@6314e29) [C++] Don't generate id methods when in a composite. Issue [#640](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/640).
- [`c60ac3f`](real-logic/simple-binary-encoding@c60ac3f) [C++] Add ability to get a var data as a string_view. Issue [#550](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/550).
- [`770c2b8`](real-logic/simple-binary-encoding@770c2b8) [C++] Formatting.
- [`6673853`](real-logic/simple-binary-encoding@6673853) [Java] Fix generated codec for string_view with C++17.
- [`6508d4f`](real-logic/simple-binary-encoding@6508d4f) [Java] Upgrade to Mockito 2.24.0.
- [`22f344b`](real-logic/simple-binary-encoding@22f344b) [Java] Add Automatic-Module-Name.
- [`98bd2a9`](real-logic/simple-binary-encoding@98bd2a9) Merge pull request [#636](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/636) from billsegall/csharp-release
- [`a1b145b`](real-logic/simple-binary-encoding@a1b145b) Freshen for a nuget packaged release
- [`01545aa`](real-logic/simple-binary-encoding@01545aa) Merge pull request [#635](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/635) from denizevrenci/cmake
- Additional commits viewable in [compare view](real-logic/simple-binary-encoding@1.12.0...1.12.1)
</details>
<br />

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

Co-authored-by: dependabot[bot] <support@dependabot.com>

zeebe-bors bot added a commit that referenced this issue Mar 29, 2019

Merge #2244 #2284 #2285
2244: chore(broker-core): migrates TimerCatchEventTest to use static broker r=npepinpe a=npepinpe




2284: chore(deps): bump version.sbe from 1.12.3 to 1.12.4 r=menski a=dependabot[bot]

Bumps `version.sbe` from 1.12.3 to 1.12.4.

Updates `sbe-tool` from 1.12.3 to 1.12.4
<details>
<summary>Release notes</summary>

*Sourced from [sbe-tool's releases](https://github.com/real-logic/simple-binary-encoding/releases).*

> ## 1.12.4
> * Reduce module warnings when using Java 11.
> * Fix incremental build due to annotation processor directory clash with generated code directory.
> * Various clean ups to C and C++ codecs.
> * Cast Java message header flyweight returns to int if interfaces are used. [PR [#635](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/635)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/635).
> * Add a C codec generator. [PR [#638](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/638)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/638).
> * Improve C++ generated codecs to use member initialisation lists for cleaner and easier to optimise code. [PR [#650](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/650)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/650).
> * Fix Javadoc links so they use HTTPS and work with OpenJDK and Java 11.
> * Upgrade Checkstyle DTD and apply checkstyle to method Javadoc.
> * Upgrade to Agrona 0.9.35.
> * Upgrade to Mockito 2.25.1.
> * Upgrade to Gradle 5.3.1.
> 
> Java binaries can be found [here...](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22uk.co.real-logic%22%20sbe)
</details>
<details>
<summary>Commits</summary>

- [`2ec0148`](real-logic/simple-binary-encoding@2ec0148) 1.12.4 released.
- [`0114564`](real-logic/simple-binary-encoding@0114564) Update README.md
- [`1ccb982`](real-logic/simple-binary-encoding@1ccb982) [Java] Upgrade to Gradle 5.3.1.
- [`5b76f73`](real-logic/simple-binary-encoding@5b76f73) [Java] Add module opens to avoid warnings on reflective access.
- [`5f658a2`](real-logic/simple-binary-encoding@5f658a2) Merge pull request [#659](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/659) from denizevrenci/fix_warnings
- [`77d8782`](real-logic/simple-binary-encoding@77d8782) [C++] Fix the indentation of generated code.
- [`fe75ad1`](real-logic/simple-binary-encoding@fe75ad1) [C/C++] Turn on warnings as errors in tests for AppleClang, Clang and GCC.
- [`ce60d0b`](real-logic/simple-binary-encoding@ce60d0b) [C] Suppress maybe-uninitialized warnings in GCC.
- [`6ffbd10`](real-logic/simple-binary-encoding@6ffbd10) [C] Add new line to the end of generated C files.
- [`1d92f70`](real-logic/simple-binary-encoding@1d92f70) [C] Tidy up.
- Additional commits viewable in [compare view](real-logic/simple-binary-encoding@1.12.3...1.12.4)
</details>
<br />

Updates `sbe-all` from 1.12.3 to 1.12.4
<details>
<summary>Release notes</summary>

*Sourced from [sbe-all's releases](https://github.com/real-logic/simple-binary-encoding/releases).*

> ## 1.12.4
> * Reduce module warnings when using Java 11.
> * Fix incremental build due to annotation processor directory clash with generated code directory.
> * Various clean ups to C and C++ codecs.
> * Cast Java message header flyweight returns to int if interfaces are used. [PR [#635](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/635)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/635).
> * Add a C codec generator. [PR [#638](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/638)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/638).
> * Improve C++ generated codecs to use member initialisation lists for cleaner and easier to optimise code. [PR [#650](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/650)](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/pull/650).
> * Fix Javadoc links so they use HTTPS and work with OpenJDK and Java 11.
> * Upgrade Checkstyle DTD and apply checkstyle to method Javadoc.
> * Upgrade to Agrona 0.9.35.
> * Upgrade to Mockito 2.25.1.
> * Upgrade to Gradle 5.3.1.
> 
> Java binaries can be found [here...](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22uk.co.real-logic%22%20sbe)
</details>
<details>
<summary>Commits</summary>

- [`2ec0148`](real-logic/simple-binary-encoding@2ec0148) 1.12.4 released.
- [`0114564`](real-logic/simple-binary-encoding@0114564) Update README.md
- [`1ccb982`](real-logic/simple-binary-encoding@1ccb982) [Java] Upgrade to Gradle 5.3.1.
- [`5b76f73`](real-logic/simple-binary-encoding@5b76f73) [Java] Add module opens to avoid warnings on reflective access.
- [`5f658a2`](real-logic/simple-binary-encoding@5f658a2) Merge pull request [#659](https://github-redirect.dependabot.com/real-logic/simple-binary-encoding/issues/659) from denizevrenci/fix_warnings
- [`77d8782`](real-logic/simple-binary-encoding@77d8782) [C++] Fix the indentation of generated code.
- [`fe75ad1`](real-logic/simple-binary-encoding@fe75ad1) [C/C++] Turn on warnings as errors in tests for AppleClang, Clang and GCC.
- [`ce60d0b`](real-logic/simple-binary-encoding@ce60d0b) [C] Suppress maybe-uninitialized warnings in GCC.
- [`6ffbd10`](real-logic/simple-binary-encoding@6ffbd10) [C] Add new line to the end of generated C files.
- [`1d92f70`](real-logic/simple-binary-encoding@1d92f70) [C] Tidy up.
- Additional commits viewable in [compare view](real-logic/simple-binary-encoding@1.12.3...1.12.4)
</details>
<br />

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

2285: chore(deps): bump agrona from 0.9.34 to 0.9.35 r=menski a=dependabot[bot]

Bumps [agrona](https://github.com/real-logic/agrona) from 0.9.34 to 0.9.35.
<details>
<summary>Release notes</summary>

*Sourced from [agrona's releases](https://github.com/real-logic/agrona/releases).*

> ## 0.9.35
> * Reduce Java 11 module warnings.
> * Change `HighResolutionTimer` hack to use a more Java 11 friendly approach and allow faster operation on Windows.
> * Add the ability to apply mapping mode when mapping files.
> * Fix Javadoc links so they use HTTPS and work with OpenJDK and Java 11.
> * Upgrade Checkstyle DTD and checkstyle method Javadoc.
> * Upgrade to Mockito 2.25.1.
> * Upgrade to Gradle 5.3.1.
> 
> Binaries can be found [here...](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.agrona%22%20agrona)
</details>
<details>
<summary>Commits</summary>

- [`8430988`](real-logic/agrona@8430988) 0.9.35 released.
- [`72a5b61`](real-logic/agrona@72a5b61) [Java] Upgrade to Gradle 5.3.1.
- [`f4ddbc5`](real-logic/agrona@f4ddbc5) [Java] Add high resolution timer hack which does not require midi device.
- [`2d3b186`](real-logic/agrona@2d3b186) [Java] Add module opens for reflective access to avoid warnings.
- [`ec96489`](real-logic/agrona@ec96489) [Java] Pull out mapping methods into a holder class so they are only load whe...
- [`ae38fcd`](real-logic/agrona@ae38fcd) [Java] Add ability to map files with mapping mode.
- [`15be6dc`](real-logic/agrona@15be6dc) [Java] Use type safe Java version in build script.
- [`65b477e`](real-logic/agrona@65b477e) [Java] Upgrade to Mockito 2.25.1.
- [`9f0ad7e`](real-logic/agrona@9f0ad7e) [Java] Fix warnings in OpenJDK 8 javadoc.
- [`20a28aa`](real-logic/agrona@20a28aa) [Java] Update checkstyle DTD and check javadoc is complete on methods where i...
- Additional commits viewable in [compare view](real-logic/agrona@0.9.34...0.9.35)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=org.agrona:agrona&package-manager=maven&previous-version=0.9.34&new-version=0.9.35)](https://dependabot.com/compatibility-score.html?dependency-name=org.agrona:agrona&package-manager=maven&previous-version=0.9.34&new-version=0.9.35)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

Co-authored-by: Nicolas Pépin-Perreault <nicolas.pepin-perreault@camunda.com>
Co-authored-by: dependabot[bot] <support@dependabot.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.