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

PartitionManager can disable an exporter #18512

Merged
merged 13 commits into from
May 23, 2024

Conversation

deepthidevaki
Copy link
Contributor

@deepthidevaki deepthidevaki commented May 14, 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-actions github-actions bot added the component/zeebe Related to the Zeebe component/team label May 14, 2024
@deepthidevaki deepthidevaki marked this pull request as ready for review May 14, 2024 14:08
@deepthidevaki deepthidevaki requested review from npepinpe and removed request for npepinpe May 14, 2024 14:08
@deepthidevaki deepthidevaki marked this pull request as draft May 14, 2024 14:33
@deepthidevaki deepthidevaki marked this pull request as ready for review May 15, 2024 07:38
Copy link
Member

@npepinpe npepinpe left a 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

@deepthidevaki deepthidevaki force-pushed the dd-18419-partition-disable-exporter branch from 43187d3 to fdd4ef5 Compare May 23, 2024 13:02
@github-actions github-actions bot added component/operate Related to the Operate component/team component/tasklist Related to the Tasklist component/team labels May 23, 2024
@deepthidevaki deepthidevaki added this pull request to the merge queue May 23, 2024
github-merge-queue bot pushed a commit that referenced this pull request 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
Merged via the queue into main with commit 3770832 May 23, 2024
38 checks passed
@deepthidevaki deepthidevaki deleted the dd-18419-partition-disable-exporter branch May 23, 2024 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/operate Related to the Operate component/team component/tasklist Related to the Tasklist component/team component/zeebe Related to the Zeebe component/team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow PartitionManager to disable an exporter in a partition
2 participants