Skip to content

Conversation

@Denovo1998
Copy link

Motivation

When running BookKeeper with DbLedgerStorage, RocksDB index placement (indexDirectories) can have a significant impact on IO behavior and tail latency. The current Helm chart does not provide first-class support for configuring indexDirectories or mounting a dedicated volume for it, so index and ledger data often end up sharing the same storage unless users manually customize templates, increasing operational overhead and limiting performance tuning.

Modifications

  • Added a pulsar.bookkeeper.indexDirectories helper that supports both string and string[], and defaults to bookkeeper.volumes.index.mountPath when an index volume is enabled and no explicit value is provided.
  • Injected indexDirectories into the rendered BookKeeper configuration when applicable (also setting PULSAR_PREFIX_indexDirectories).
  • Updated the BookKeeper StatefulSet startup logic to mkdir -p for all configured indexDirectories paths to ensure they exist at runtime.
  • Introduced an optional bookkeeper.volumes.index volume for a dedicated index mount, including PVC/volumeClaimTemplates support and StorageClass generation when needed.
  • Updated values.yaml with documentation and examples for bookkeeper.volumes.index and bookkeeper.indexDirectories.

Verifying this change

  • Make sure that the change passes the CI checks.

@Denovo1998
Copy link
Author

@lhotari PTAL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant