Skip to content

Four replication config knobs are silently inert: env.get resolves only names registered in CONFIG_PARAMS #734

Description

@kriszyp

env.get(name) → configUtils.getConfigValue(name) returns undefined for any name absent from
CONFIG_PARAM_MAP (built from CONFIG_PARAMS in core utility/hdbTerms.ts). These four are read in
replication/replicationConnection.ts but are not registered, so a value set in
harperdb-config.yaml is silently ignored and the compiled-in default always applies:

read as default that always wins
replication_receiveEventHighWaterMark 100
replication_receiveYieldInterval 100
replication_copyCheckpointRecords 1000
replication_copyCheckpointMaxIntervalMs 5000

Confirmed empirically: a newly added param behaved exactly this way (config value ignored, default
applied) until registered in CONFIG_PARAMS — see harper-pro#733 and its companion core commit.

This matters beyond tidiness: incident reports have described tuning attempts on
receiveEventHighWaterMark and reasoned about it as an operator lever, when it cannot be changed at
all. Registering them makes the config do what the code already implies, but it does mean a
previously-ignored value in someone's config file would start taking effect — so it deserves its own
review rather than riding along with a fix.

Also worth an audit pass: any other env.get('...') call in harper-pro or core reading a name that
is not in CONFIG_PARAMS.

Activity

  1. kriszyp commented on Aug 20, 2026

    @kriszyp
    MemberAuthor

    Correction: six, not four. cb1kenobi audited every env.get('replication_…') call site in replicationConnection.ts against the registered REPLICATION_* entries (on harper#2233) and found two more unregistered:

    read as default that always wins
    replication_subscriptionResolveTimeout 60000
    replication_pauseStallTimeout derived from pingTimeout/blobTimeout

    replication_pauseStallTimeout is the worst of the six: the comment above it explicitly tells operators to override it ("Override with replication_pauseStallTimeout for clusters with extreme single-transaction sizes") and it does nothing. Verified against core/utility/hdbTerms.ts — neither name is present.

    So the full list is six. That audit pass is the one this issue asked for; folding it in here.

  2. added theissue type on Sep 21, 2026
  3. added this to the v5.3 milestone on Oct 7, 2026
  4. modified the milestones: v5.3, v5.4 on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

Fields

Priority

P1

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions