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

Allow PartitionManager to disable an exporter in a partition #18419

Closed
Tracked by #18030
deepthidevaki opened this issue May 10, 2024 · 0 comments · Fixed by #18512
Closed
Tracked by #18030

Allow PartitionManager to disable an exporter in a partition #18419

deepthidevaki opened this issue May 10, 2024 · 0 comments · Fixed by #18512
Assignees
Labels
component/zeebe Related to the Zeebe component/team kind/task Categorizes an issue as a breakdown of low-level implementation detail from a parent issue scope/broker Marks an issue or PR to appear in the broker section of the changelog

Comments

@deepthidevaki
Copy link
Contributor

deepthidevaki commented May 10, 2024

When ClusterConfigurationManager applies the operation to disable an exporter, it will call back to PartitionManager` to disable the exporter in the corresponding partition.

  1. PartitionManager can delegate this operation to the ExporterDirector of the corresponding partition.
  2. PartitionManager should remember this state and use it during next role transitions or restarts to initialize the ExporterDirector.
@deepthidevaki deepthidevaki added kind/task Categorizes an issue as a breakdown of low-level implementation detail from a parent issue scope/broker Marks an issue or PR to appear in the broker section of the changelog component/zeebe Related to the Zeebe component/team labels May 10, 2024
@deepthidevaki deepthidevaki self-assigned this May 14, 2024
github-merge-queue bot pushed a commit that referenced this issue May 23, 2024
## 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
github-merge-queue bot pushed a commit that referenced this issue May 23, 2024
## 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/zeebe Related to the Zeebe component/team kind/task Categorizes an issue as a breakdown of low-level implementation detail from a parent issue scope/broker Marks an issue or PR to appear in the broker section of the changelog
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant