From 43f8dfa04e24e27449dc1b2d6b897f8b9c39f265 Mon Sep 17 00:00:00 2001 From: Lari Hotari Date: Tue, 4 Mar 2025 14:04:38 +0200 Subject: [PATCH] Revisit solution to configure Bookkeeper RocksDB settings - default to individual config files (#583) --- .../templates/bookkeeper-configmap.yaml | 14 ------------- .../templates/bookkeeper-statefulset.yaml | 20 +++++++++++++++++-- charts/pulsar/values.yaml | 4 ---- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/charts/pulsar/templates/bookkeeper-configmap.yaml b/charts/pulsar/templates/bookkeeper-configmap.yaml index 0c1a951..f133f1f 100644 --- a/charts/pulsar/templates/bookkeeper-configmap.yaml +++ b/charts/pulsar/templates/bookkeeper-configmap.yaml @@ -61,19 +61,5 @@ data: {{- end }} # TLS config {{- include "pulsar.bookkeeper.config.tls" . | nindent 2 }} - {{- if .Values.bookkeeper.useRocksDBConfigInConfigData }} - # Set RocksDB default format version to 5 - # RocksDB format_version 5 has been supported since RocksDB 6.6 . It's required for certain performance optimizations. - PULSAR_PREFIX_dbStorage_rocksDB_format_version: "5" - # Specify non-existing files to avoid Bookkeeper from loading RocksDB config from existing files - PULSAR_PREFIX_defaultRocksdbConf: "conf/non_existing_default_rocksdb.conf" - PULSAR_PREFIX_entryLocationRocksdbConf: "conf/non_existing_entry_location_rocksdb.conf" - PULSAR_PREFIX_ledgerMetadataRocksdbConf: "conf/non_existing_ledger_metadata_rocksdb.conf" - {{- else }} - # Specify existing files to load RocksDB config from existing files - PULSAR_PREFIX_defaultRocksdbConf: "conf/default_rocksdb.conf" - PULSAR_PREFIX_entryLocationRocksdbConf: "conf/entry_location_rocksdb.conf" - PULSAR_PREFIX_ledgerMetadataRocksdbConf: "conf/ledger_metadata_rocksdb.conf" - {{- end }} {{ toYaml .Values.bookkeeper.configData | indent 2 }} {{- end }} \ No newline at end of file diff --git a/charts/pulsar/templates/bookkeeper-statefulset.yaml b/charts/pulsar/templates/bookkeeper-statefulset.yaml index b2ce827..1fe85f2 100644 --- a/charts/pulsar/templates/bookkeeper-statefulset.yaml +++ b/charts/pulsar/templates/bookkeeper-statefulset.yaml @@ -177,9 +177,25 @@ spec: command: ["sh", "-c"] args: - | - {{- if .Values.bookkeeper.additionalCommand }} + # set required environment variables to use rocksdb config files provided in the Pulsar image + export PULSAR_PREFIX_defaultRocksdbConf=${PULSAR_PREFIX_defaultRocksdbConf:-conf/default_rocksdb.conf} + export PULSAR_PREFIX_entryLocationRocksdbConf=${PULSAR_PREFIX_entryLocationRocksdbConf:-conf/entry_location_rocksdb.conf} + export PULSAR_PREFIX_ledgerMetadataRocksdbConf=${PULSAR_PREFIX_ledgerMetadataRocksdbConf:-conf/ledger_metadata_rocksdb.conf} + if [ -x bin/update-rocksdb-conf-from-env.py ] && [ -f "${PULSAR_PREFIX_entryLocationRocksdbConf}" ]; then + echo "Updating ${PULSAR_PREFIX_entryLocationRocksdbConf} from environment variables starting with dbStorage_rocksDB_*" + bin/update-rocksdb-conf-from-env.py "${PULSAR_PREFIX_entryLocationRocksdbConf}" + else + # Ensure that Bookkeeper will not load RocksDB config from existing files and fallback to use default RocksDB config + # See https://github.com/apache/bookkeeper/pull/3523 as reference + export PULSAR_PREFIX_defaultRocksdbConf=conf/non_existing_default_rocksdb.conf + export PULSAR_PREFIX_entryLocationRocksdbConf=conf/non_existing_entry_location_rocksdb.conf + export PULSAR_PREFIX_ledgerMetadataRocksdbConf=conf/non_existing_ledger_metadata_rocksdb.conf + # Ensure that Bookkeeper will use RocksDB format_version 5 (this currently applies only to the entry location rocksdb due to a bug in Bookkeeper) + export PULSAR_PREFIX_dbStorage_rocksDB_format_version=${PULSAR_PREFIX_dbStorage_rocksDB_format_version:-5} + fi + {{- if .Values.bookkeeper.additionalCommand }} {{ .Values.bookkeeper.additionalCommand }} - {{- end }} + {{- end }} bin/apply-config-from-env.py conf/bookkeeper.conf; {{- include "pulsar.bookkeeper.zookeeper.tls.settings" . | nindent 10 }} OPTS="${OPTS} -Dlog4j2.formatMsgNoLookups=true" exec bin/pulsar bookie; diff --git a/charts/pulsar/values.yaml b/charts/pulsar/values.yaml index 9e87be3..9960095 100755 --- a/charts/pulsar/values.yaml +++ b/charts/pulsar/values.yaml @@ -728,10 +728,6 @@ bookkeeper: ## templates/bookkeeper-service-account.yaml service_account: annotations: {} - ## Use RocksDB config in configData - ## Use dbStorage_rocksDB_* / PULSAR_PREFIX_dbStorage_rocksDB_* settings defined in configData instead of conf/*_rocksdb.conf files in the Pulsar docker image - ## See https://github.com/apache/bookkeeper/pull/3523 as reference - useRocksDBConfigInConfigData: true ## Bookkeeper configmap ## templates/bookkeeper-configmap.yaml ##