#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

configs:
- name: enablePersistentTopics
  default: 'true'
  description: Whether persistent topics are enabled on the broker
- name: enableNonPersistentTopics
  default: 'true'
  description: Whether non-persistent topics are enabled on the broker
- name: functionsWorkerEnabled
  description: Whether the Pulsar Functions worker service is enabled in the broker
  default: 'false'
- name: zookeeperServers
  default: ''
  description: Zookeeper quorum connection string
- name: configurationStoreServers
  default: ''
  description: Configuration store connection string
- name: brokerServicePort
  default: '6650'
  description: Broker data port
- name: brokerServicePortTls
  default: '6651'
  description: Broker data port for TLS
- name: webServicePort
  default: '8080'
  description: Port to use to server HTTP request
- name: webServicePortTls
  default: '8443'
  description: Port to use to server HTTPS request
- name: webSocketServiceEnabled
  default: 'false'
  description: Enable the WebSocket API service in broker
- name: bindAddress
  default: 0.0.0.0
  description: Hostname or IP address the service binds on, default is 0.0.0.0.
- name: advertisedAddress
  default: ''
  description: Hostname or IP address the service advertises to the outside world. If not set, the value of `InetAddress.getLocalHost().getHostName()` is used.
- name: clusterName
  default: ''
  description: Name of the cluster to which this broker belongs to
- name: brokerDeduplicationEnabled
  default: 'false'
  description: Sets the default behavior for message deduplication in the broker. If enabled, the broker will reject messages that were already stored in the topic. This setting can be overridden on a per-namespace basis.
- name: brokerDeduplicationMaxNumberOfProducers
  default: '10000'
  description: The maximum number of producers for which information will be stored for deduplication purposes.
- name: brokerDeduplicationEntriesInterval
  default: '1000'
  description: The number of entries after which a deduplication informational snapshot is taken. A larger interval will lead to fewer snapshots being taken, though this would also lengthen the topic recovery time (the time required for entries published after the snapshot to be replayed).
- name: brokerDeduplicationProducerInactivityTimeoutMinutes
  default: '360'
  description: The time of inactivity (in minutes) after which the broker will discard deduplication information related to a disconnected producer.
- name: zooKeeperSessionTimeoutMillis
  default: '30000'
  description: Zookeeper session timeout in milliseconds
- name: brokerShutdownTimeoutMs
  default: '3000'
  description: Time to wait for broker graceful shutdown. After this time elapses, the process will be killed
- name: backlogQuotaCheckEnabled
  default: 'true'
  description: Enable backlog quota check. Enforces action on topic when the quota is reached
- name: backlogQuotaCheckIntervalInSeconds
  default: '60'
  description: How often to check for topics that have reached the quota
- name: backlogQuotaDefaultLimitGB
  default: '10'
  description: Default per-topic backlog quota limit
- name: brokerDeleteInactiveTopicsEnabled
  default: 'true'
  description: Enable the deletion of inactive topics
- name: brokerDeleteInactiveTopicsFrequencySeconds
  default: '60'
  description: How often to check for inactive topics
- name: messageExpiryCheckIntervalInMinutes
  default: '5'
  description: How frequently to proactively check and purge expired messages
- name: brokerServiceCompactionMonitorIntervalInSeconds
  default: '60'
  description: Interval between checks to see if topics with compaction policies need to be compacted
- name: activeConsumerFailoverDelayTimeMillis
  default: '1000'
  description: How long to delay rewinding cursor and dispatching messages when active consumer is changed.
- name: clientLibraryVersionCheckEnabled
  default: 'false'
  description: Enable check for minimum allowed client library version
- name: clientLibraryVersionCheckAllowUnversioned
  default: 'true'
  description: Allow client libraries with no version information
- name: statusFilePath
  default: ''
  description: Path for the file used to determine the rotation status for the broker when responding to service discovery health checks
- name: preferLaterVersions
  default: 'false'
  description: If true, (and ModularLoadManagerImpl is being used), the load manager will attempt to use only brokers running the latest software version (to minimize impact to bundles)
- name: tlsEnabled
  default: 'false'
  description: Enable TLS
- name: tlsCertificateFilePath
  default: ''
  description: Path for the TLS certificate file
- name: tlsKeyFilePath
  default: ''
  description: Path for the TLS private key file
- name: tlsTrustCertsFilePath
  default: ''
  description: Path for the trusted TLS certificate file
- name: tlsAllowInsecureConnection
  default: 'false'
  description: Accept untrusted TLS certificate from client
- name: maxUnackedMessagesPerConsumer
  default: '50000'
  description: |
    Max number of unacknowledged messages allowed to receive messages by a consumer on a shared subscription. Broker will stop sending messages to consumer once, this limit reaches until consumer starts acknowledging messages back. Using a value of 0, is disabling unackeMessage limit check and consumer can receive messages without any restriction
- name: maxUnackedMessagesPerSubscription
  default: '200000'
  description: |
    Max number of unacknowledged messages allowed per shared subscription. Broker will stop dispatching messages to all consumers of the subscription once this limit reaches until consumer starts acknowledging messages back and unack count reaches to limit/2. Using a value of 0, is disabling unackedMessage-limit check and dispatcher can dispatch messages without any restriction
- name: maxConcurrentLookupRequest
  default: '10000'
  description: Max number of concurrent lookup request broker allows to throttle heavy incoming lookup traffic
- name: maxConcurrentTopicLoadRequest
  default: '5000'
  description: Max number of concurrent topic loading request broker allows to control number of zk-operations
- name: authenticationEnabled
  default: 'false'
  description: Enable authentication
- name: authenticationProviders
  default: ''
  description: Autentication provider name list, which is comma separated list of class names
- name: authorizationEnabled
  default: 'false'
  description: Enforce authorization
- name: superUserRoles
  default: ''
  description: Role names that are treated as "super-user", meaning they will be able to do all admin operations and publish/consume from all topics
- name: brokerClientAuthenticationPlugin
  default: ''
  description: Authentication settings of the broker itself. Used when the broker connects to other brokers, either in same or other clusters
- name: brokerClientAuthenticationParameters
  default: ''
- name: athenzDomainNames
  default: ''
  description: Supported Athenz provider domain names(comma separated) for authentication
- name: bookkeeperClientAuthenticationPlugin
  default: ''
  description: Authentication plugin to use when connecting to bookies
- name: bookkeeperClientAuthenticationParametersName
  default: ''
  description: BookKeeper auth plugin implementatation specifics parameters name and values
- name: bookkeeperClientAuthenticationParameters
  default: ''
- name: bookkeeperClientTimeoutInSeconds
  default: '30'
  description: Timeout for BK add / read operations
- name: bookkeeperClientSpeculativeReadTimeoutInMillis
  default: '0'
  description: Speculative reads are initiated if a read request doesn't complete within a certain time Using a value of 0, is disabling the speculative reads
- name: bookkeeperClientHealthCheckEnabled
  default: 'true'
  description: Enable bookies health check. Bookies that have more than the configured number of failure within the interval will be quarantined for some time. During this period, new ledgers won't be created on these bookies
- name: bookkeeperClientHealthCheckIntervalSeconds
  default: '60'
- name: bookkeeperClientHealthCheckErrorThresholdPerInterval
  default: '5'
- name: bookkeeperClientHealthCheckQuarantineTimeInSeconds
  default: '1800'
- name: bookkeeperClientRackawarePolicyEnabled
  default: 'true'
  description: Enable rack-aware bookie selection policy. BK will chose bookies from different racks when forming a new bookie ensemble
- name: bookkeeperClientRegionawarePolicyEnabled
  default: 'false'
  description: Enable region-aware bookie selection policy. BK will chose bookies from different regions and racks when forming a new bookie ensemble. If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored
- name: bookkeeperClientReorderReadSequenceEnabled
  default: 'false'
  description: Enable/disable reordering read sequence on reading entries.
- name: bookkeeperClientIsolationGroups
  default: ''
  description: Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie outside the specified groups will not be used by the broker
- name: managedLedgerDefaultEnsembleSize
  default: '2'
  description: Number of bookies to use when creating a ledger
- name: managedLedgerDefaultWriteQuorum
  default: '2'
  description: Number of copies to store for each message
- name: managedLedgerDefaultAckQuorum
  default: '2'
  description: Number of guaranteed copies (acks to wait before write is complete)
  description: Number of guaranteed copies (acks to wait before write is complete)
- name: managedLedgerCacheSizeMB
  default: '1024'
  description: Amount of memory to use for caching data payload in managed ledger. This memory is allocated from JVM direct memory and it's shared across all the topics running  in the same broker
- name: managedLedgerCacheEvictionWatermark
  default: '0.9'
  description: Threshold to which bring down the cache level when eviction is triggered
- name: managedLedgerDefaultMarkDeleteRateLimit
  default: '1.0'
  description: Rate limit the amount of writes per second generated by consumer acking the messages
- name: managedLedgerMaxEntriesPerLedger
  default: '50000'
  description: |
    Max number of entries to append to a ledger before triggering a rollover. A ledger rollover is triggered on these conditions:
    * Either the max rollover time has been reached
    * or max entries have been written to the ledged and at least min-time has passed
- name: managedLedgerMinLedgerRolloverTimeMinutes
  default: '10'
  description: Minimum time between ledger rollover for a topic
- name: managedLedgerMaxLedgerRolloverTimeMinutes
  default: '240'
  description: Maximum time before forcing a ledger rollover for a topic
- name: managedLedgerCursorMaxEntriesPerLedger
  default: '50000'
  description: Max number of entries to append to a cursor ledger
- name: managedLedgerCursorRolloverTimeInSeconds
  default: '14400'
  description: Max time before triggering a rollover on a cursor ledger
- name: managedLedgerMaxUnackedRangesToPersist
  default: '1000'
  description: |
    Max number of "acknowledgment holes" that are going to be persistently stored. When acknowledging out of order, a consumer will leave holes that are supposed to be quickly filled by acking all the messages. The information of which messages are acknowledged is persisted by compressing in "ranges" of messages that were acknowledged. After the max number of ranges is reached, the information will only be tracked in memory and messages will be redelivered in case of crashes.
- name: autoSkipNonRecoverableData
  default: 'false'
  description: Skip reading non-recoverable/unreadable data-ledger under managed-ledger's list.It helps when data-ledgers gets corrupted at bookkeeper and managed-cursor is stuck at that ledger.
- name: managedLedgerMetadataOperationsTimeoutSeconds
  default: '60'
  description: Operation timeout while updating managed-ledger metadata.
- name: managedLedgerReadEntryTimeoutSeconds
  default: '120'
  description: Read entries timeout when broker tries to read messages from bookkeeper.
- name: managedLedgerAddEntryTimeoutSeconds
  default: '120'
  description: Add entry timeout when broker tries to publish message to bookkeeper (0 to disable it).
- name: loadBalancerEnabled
  default: 'true'
  description: Enable load balancer
- name: loadBalancerPlacementStrategy
  default: weightedRandomSelection
  description: Strategy to assign a new bundle
- name: loadBalancerReportUpdateThresholdPercentage
  default: '10'
  description: Percentage of change to trigger load report update
- name: loadBalancerReportUpdateMaxIntervalMinutes
  default: '15'
  description: maximum interval to update load report
- name: loadBalancerHostUsageCheckIntervalMinutes
  default: '1'
  description: Frequency of report to collect
- name: loadBalancerSheddingIntervalMinutes
  default: '30'
  description: Load shedding interval. Broker periodically checks whether some traffic should be offload from some over-loaded broker to other under-loaded brokers
- name: loadBalancerSheddingGracePeriodMinutes
  default: '30'
  description: Prevent the same topics to be shed and moved to other broker more that once within this timeframe
- name: loadBalancerBrokerMaxTopics
  default: '50000'
  description: Usage threshold to allocate max number of topics to broker
- name: loadBalancerBrokerUnderloadedThresholdPercentage
  default: '1'
  description: Usage threshold to determine a broker as under-loaded
- name: loadBalancerBrokerOverloadedThresholdPercentage
  default: '85'
  description: Usage threshold to determine a broker as over-loaded
- name: loadBalancerResourceQuotaUpdateIntervalMinutes
  default: '15'
  description: Interval to update namespace bundle resource quotat
- name: loadBalancerBrokerComfortLoadLevelPercentage
  default: '65'
  description: Usage threshold to determine a broker is having just right level of load
- name: loadBalancerAutoBundleSplitEnabled
  default: 'false'
  description: enable/disable namespace bundle auto split
- name: loadBalancerNamespaceBundleMaxTopics
  default: '1000'
  description: maximum topics in a bundle, otherwise bundle split will be triggered
- name: loadBalancerNamespaceBundleMaxSessions
  default: '1000'
  description: maximum sessions (producers + consumers) in a bundle, otherwise bundle split will be triggered
- name: loadBalancerNamespaceBundleMaxMsgRate
  default: '1000'
  description: maximum msgRate (in + out) in a bundle, otherwise bundle split will be triggered
- name: loadBalancerNamespaceBundleMaxBandwidthMbytes
  default: '100'
  description: maximum bandwidth (in + out) in a bundle, otherwise bundle split will be triggered
- name: loadBalancerNamespaceMaximumBundles
  default: '128'
  description: maximum number of bundles in a namespace
- name: replicationMetricsEnabled
  default: 'true'
  description: Enable replication metrics
- name: replicationConnectionsPerBroker
  default: '16'
  description: Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links.
- name: replicationProducerQueueSize
  default: '1000'
  description: Replicator producer queue size
- name: replicatorPrefix
  default: pulsar.repl
  description: Replicator prefix used for replicator producer name and cursor name
- name: replicationTlsEnabled
  default: 'false'
  description: Enable TLS when talking with other clusters to replicate messages
- name: defaultRetentionTimeInMinutes
  default: '0'
  description: Default message retention time
- name: defaultRetentionSizeInMB
  default: '0'
  description: Default retention size
- name: keepAliveIntervalSeconds
  default: '30'
  description: How often to check whether the connections are still alive
- name: brokerServicePurgeInactiveFrequencyInSeconds
  default: '60'
  description: How often broker checks for inactive topics to be deleted (topics with no subscriptions and no one connected)
- name: loadManagerClassName
  default: org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl
  description: Name of load manager to use
- name: managedLedgerOffloadDriver
  default: ''
  description: "Driver to use to offload old data to long term storage (Possible values: S3)"
- name: managedLedgerOffloadMaxThreads
  default: '2'
  description: Maximum number of thread pool threads for ledger offloading
- name: s3ManagedLedgerOffloadRegion
  default: ''
  description: For Amazon S3 ledger offload, AWS region
- name: s3ManagedLedgerOffloadBucket
  default: ''
  description: For Amazon S3 ledger offload, Bucket to place offloaded ledger into
- name: s3ManagedLedgerOffloadServiceEndpoint
  default: ''
  description: For Amazon S3 ledger offload, Alternative endpoint to connect to (useful for testing)
- name: s3ManagedLedgerOffloadMaxBlockSizeInBytes
  default: '67108864'
  description: For Amazon S3 ledger offload, Max block size in bytes. (64MB by default, 5MB minimum)
- name: s3ManagedLedgerOffloadReadBufferSizeInBytes
  default: '1048576'
  description: For Amazon S3 ledger offload, Read buffer size in bytes (1MB by default)
