-
Notifications
You must be signed in to change notification settings - Fork 692
feat: HealthMonitor reports arbitrarily nested component in a tree-like structure #23929
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
feat: HealthMonitor reports arbitrarily nested component in a tree-like structure #23929
Conversation
zeebe/scheduler/src/main/java/io/camunda/zeebe/scheduler/ActorControl.java
Outdated
Show resolved
Hide resolved
zeebe/broker/src/main/java/io/camunda/zeebe/broker/exporter/stream/ExporterDirector.java
Outdated
Show resolved
Hide resolved
4870196
to
7625f9e
Compare
2295e0a
to
b781879
Compare
890fd11
to
194e659
Compare
194e659
to
d83cfdf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀 First, I generally really like the changes and how you approached the PR. I saw you started initially with recomputing on every update, and then changed that down the line 👍 It's a lot of comments, but I want to highlight generally I like the PR 🙂
❓ My main question here is why are we separating it from the partition status? Do we think it would pollute the result of the partition status call, and we want to keep it separate? That's a fair point, but I'm also not sure about it honestly. I would poll the other engineers in our team channel on it (I can do that for you so you see how we do it via slack :))
I'm also not super into adding a new endpoint /actuator/partitionHealth
. It's additional endpoints for little benefit I think, and makes it harder to discover partition related things. Why can't we use /actuator/partitions/health
? We can simply add a new operation in the existing actuator endpoint (BrokerAdminServiceEndpoint
). If it's complicated because of how it's set up now (as a plain Endpoint
), one option is migrating it to a WebEndpoint
).
One thing we've been wanting to do is de-Springify the modules, and move all Spring magic into a single module (dist
), or leave it in Spring specific modules (e.g. the REST API). This is to avoid complex object graphs which become hard to track (if anything can provide beans), and minimize in general the Spring magic. So one opportunity here is moving the existing BrokerAdminServiceEndpoint
to the dist
module, for example. There's also some possible refactoring as follow up we can do in the admin service itself from what I can see 😄 (but we can discuss that separately).
zeebe/broker/src/main/java/io/camunda/zeebe/broker/exporter/stream/ExporterDirector.java
Outdated
Show resolved
Hide resolved
zeebe/util/src/main/java/io/camunda/zeebe/util/health/HealthReport.java
Outdated
Show resolved
Hide resolved
zeebe/broker/src/main/java/io/camunda/zeebe/broker/system/partitions/ZeebePartitionHealth.java
Outdated
Show resolved
Hide resolved
zeebe/util/src/test/java/io/camunda/zeebe/util/health/HealthStatusTest.java
Outdated
Show resolved
Hide resolved
zeebe/util/src/test/java/io/camunda/zeebe/util/health/HealthStatusTest.java
Outdated
Show resolved
Hide resolved
zeebe/util/src/main/java/io/camunda/zeebe/util/health/HealthReport.java
Outdated
Show resolved
Hide resolved
zeebe/util/src/main/java/io/camunda/zeebe/util/health/HealthReport.java
Outdated
Show resolved
Hide resolved
zeebe/util/src/test/java/io/camunda/zeebe/util/health/HealthReportTest.java
Outdated
Show resolved
Hide resolved
zeebe/stream-platform/src/main/java/io/camunda/zeebe/stream/impl/StreamProcessor.java
Outdated
Show resolved
Hide resolved
d83cfdf
to
9e35394
Compare
9e35394
to
c7ace53
Compare
c7ace53
to
1a77cda
Compare
…ke structure CriticalHealthMonitor recursively updates registered components in order to aggregate their health status into a single recursive data-type HealthReport has been refactored by adding a children field that makes it recursive. Small refactoring has been done, primarily moving some functions from CriticalComponentHealthMonitor into HealthReport. HealthStatus has been extended with a comparator, so that it's possible to take the "maximum" of a collection of HealthStatus in a way that returns the "worst" HealthStatus. relates #16454
18e9e3d
to
3d730ff
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀 nice
Please address all comments, but I'm pre-approving because I doubt we need another review (though if you want, you can ofc request one!)
zeebe/broker/src/main/java/io/camunda/zeebe/broker/system/partitions/ZeebePartition.java
Outdated
Show resolved
Hide resolved
...ation-tests/src/test/java/io/camunda/zeebe/it/management/BrokerAdminServiceEndpointTest.java
Outdated
Show resolved
Hide resolved
...ler/src/test/java/io/camunda/zeebe/scheduler/health/CriticalComponentsHealthMonitorTest.java
Outdated
Show resolved
Hide resolved
...ler/src/test/java/io/camunda/zeebe/scheduler/health/CriticalComponentsHealthMonitorTest.java
Outdated
Show resolved
Hide resolved
...ler/src/test/java/io/camunda/zeebe/scheduler/health/CriticalComponentsHealthMonitorTest.java
Outdated
Show resolved
Hide resolved
...ler/src/test/java/io/camunda/zeebe/scheduler/health/CriticalComponentsHealthMonitorTest.java
Outdated
Show resolved
Hide resolved
...ation-tests/src/test/java/io/camunda/zeebe/it/management/BrokerAdminServiceEndpointTest.java
Show resolved
Hide resolved
3d730ff
to
4fc9497
Compare
4fc9497
to
42dc62d
Compare
/backport |
Created backport PR for
Please cherry-pick the changes locally and resolve any conflicts. git fetch origin backport-23929-to-stable/8.7
git worktree add --checkout .worktree/backport-23929-to-stable/8.7 backport-23929-to-stable/8.7
cd .worktree/backport-23929-to-stable/8.7
git reset --hard HEAD^
git cherry-pick -x 4fe0324a8902fce33f91d2a03d88c6d3ae913bc1 d894274b72edd020a31104f904a674981b614781 42dc62d82a5704355ca151941694a87a7d2765b7
git push --force-with-lease |
Description
HealthMonitor reports arbitrarily nested component in a tree-like structure
CriticalHealthMonitor recursively updates registered components in order to aggregate their health status into a single recursive data-type
HealthReport has been refactored by adding a children field that makes it recursive. Small refactoring has been done, primarily moving some functions from CriticalComponentHealthMonitor into HealthReport.
HealthStatus has been extended with a comparator, so that it's possible to take the "maximum" of a collection of HealthStatus in a way that returns the "worst" HealthStatus.
Related issues
relates #16454