-
Notifications
You must be signed in to change notification settings - Fork 555
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
PartitionManager can disable an exporter #18512
Conversation
...munda/zeebe/broker/system/partitions/impl/steps/ExporterDirectorPartitionTransitionStep.java
Show resolved
Hide resolved
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.
🚀
However, can we sync f2f on the overall expected UX for managing exporters once this is merged? I like how we're breaking things down at the moment into small updates, but I feel like I may sometimes be missing the forest for the trees, and right now I have some confusion on the expected final UX in terms of:
- Initial exporter configuration
- Modifying exporter via the static configuration
- Adding new exporters
- Removing exporters
- Removing exporters from the dynamic config
...r/src/main/java/io/camunda/zeebe/broker/system/partitions/PartitionConfigurationManager.java
Outdated
Show resolved
Hide resolved
...munda/zeebe/broker/system/partitions/impl/steps/ExporterDirectorPartitionTransitionStep.java
Outdated
Show resolved
Hide resolved
...munda/zeebe/broker/system/partitions/impl/steps/ExporterDirectorPartitionTransitionStep.java
Show resolved
Hide resolved
On start up, PartitionManager gets the configuration from the configuraiton manager. This can be used to start partitions with the correct configuration instead of using the static configuration.
43187d3
to
fdd4ef5
Compare
## Description To simplify the changes required for this PR, we removed the experimental flag for dynamic configuration. This helps to remove the extra code needed to support only static configuration. The main changes in this PR are: 1. The current dynamic partition config is tracked in `PartitionContext`. The initial value of it is received when the partition is bootstrapped. We reuse the `DynamicPartitionConfig` defined in `ClusterConfiguration`. Alternately, we can define a new object internal to `partitions`. But at the moment, it will look identical to the other one. So to keep it simple, we reused the existing class. When we add new configuration parameters to it, we can define a new one if needed. 2. When a config is changed, a call back to the `PartitionManager` will be invoked. The implementation of this call back reacts to the configuration change and also updates the config in the `PartitionContext`. In this case, the call back is `PartitionManager::disableExporter` which disables the exporter in `ExporterDirector`. 3. `ExporterDirectorTransitionStep` reads the latest config and uses that to initialize the exporters during role transitions. Only enabled exporters are given to the `ExporterDirector`. Thus already disabled exporters are not re-enabled. ## Related issues closes #18419
Description
To simplify the changes required for this PR, we removed the experimental flag for dynamic configuration. This helps to remove the extra code needed to support only static configuration.
The main changes in this PR are:
PartitionContext
. The initial value of it is received when the partition is bootstrapped. We reuse theDynamicPartitionConfig
defined inClusterConfiguration
. Alternately, we can define a new object internal topartitions
. But at the moment, it will look identical to the other one. So to keep it simple, we reused the existing class. When we add new configuration parameters to it, we can define a new one if needed.PartitionManager
will be invoked. The implementation of this call back reacts to the configuration change and also updates the config in thePartitionContext
. In this case, the call back isPartitionManager::disableExporter
which disables the exporter inExporterDirector
.ExporterDirectorTransitionStep
reads the latest config and uses that to initialize the exporters during role transitions. Only enabled exporters are given to theExporterDirector
. Thus already disabled exporters are not re-enabled.Related issues
closes #18419