Skip to content

docs(redis): state that diskless replication is always off on replication instances - #68

Open
chideat wants to merge 1 commit into
release-5.1from
docs/aa-diskless
Open

chideat wants to merge 1 commit into
release-5.1from
docs/aa-diskless

Conversation

@chideat

@chideat chideat commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Configuration limitations: new entry Diskless replication is always disabled, next to the AOF entry. It explains why the operator forces repl-diskless-sync no on every replication instance, that the change is a hot update without pod restarts, that an operator upgrade switching a running instance from yes to no triggers one BGSAVE per node, that save stays as configured, and the visible effect: replica full synchronizations and backups first write an RDB file to disk, including with the diskless parameter template.
  • Operational risks: the Oplog file size was given as 3 GB for both module generations. It is 1 GiB on Redis 7.2 and 3 GiB on Redis 6.0.

Sources

  • Operator behaviour: redis-operator !823 (release-5.1). internal/builder/modules.go (DisableDisklessSyncForActiveRedis) is called after the default-save decision in internal/builder/clusterbuilder/configmap.go and internal/builder/failoverbuilder/configmap.go; the per-node BGSAVE on the flip is in internal/ops/{cluster,failover}/actor/actor_update_config.go. Verified with a kind upgrade from release-5.1 00ec5030.
  • Template values: chart-middleware middleware/charts/redis-param/templates/redis-7.2-paramtemplate-{0,1,2}.yaml (all set repl-diskless-sync: 'yes') and redis-6.0-paramtemplate-1.yaml (the 6.0 diskless template, 'yes').
  • Oplog file size: redis-modules active-redis/src/config.zig (max-oplog-file-size, default 1 GiB; the operator passes only oplog-dir) and active-redis-6.0/src/storage.h (DefaultMaxOpLogFileSize, 3 GiB).

Notes

  • redis-operator !823 is merged into release-5.1 (1a22de77); the behaviour ships from the release-5.1 build v5.1.0-rc.64.g1a22de77 on.
  • master carries the same page; the cherry-pick to master should follow the operator's master port.
  • doom lint: 0 errors, 0 warnings.

…tion instances

The operator now forces repl-diskless-sync to no on every instance that loads
the replication module (redis-operator !823, release-5.1), whatever customConfig
or the parameter template sets. Add that to the configuration limitations, next
to the AOF entry, with the reason and the effects users can see.

Why: the module records the RDB file on disk as the snapshot of every completed
fork, and a diskless transfer (a full synchronization to a replica under
repl-diskless-sync yes, or redis-cli --rdb) is a fork that never rewrites that
file. A new or emptied peer that takes a full synchronization from such a record
receives the older file and resumes the Oplog past the writes it is missing.
The module team reproduced it on the Redis 7.2 module; the legacy 6.0 module is
affected too, and serves any record whose file size still matches.

What users see, verified against redis-operator release-5.1 with !823 and a kind
upgrade from 00ec5030: the setting is a hot update with no pod restart; when an
operator upgrade switches a running instance from yes to no, the operator runs
one BGSAVE on every node; save is left exactly as configured, so the diskless
parameter template keeps its empty save. Redis 7.2 defaults the setting to yes,
every Redis 7.2 parameter template sets yes, and so does the Redis 6.0 diskless
template (chart-middleware middleware/charts/redis-param/templates/
redis-{6.0,7.2}-paramtemplate-*.yaml).

Also correct the Oplog file size in "Replication increases storage pressure":
the new module cuts the Oplog file at 1 GiB (max-oplog-file-size in
redis-modules active-redis/src/config.zig; the operator does not override it),
while 3 GiB is the legacy 6.0 module's DefaultMaxOpLogFileSize
(active-redis-6.0/src/storage.h).
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