-
Notifications
You must be signed in to change notification settings - Fork 557
Description
Hi Chronicle team,
I am currently experimenting with Chronicle Queue and trying to understand the durability semantics.
Config (simplified):
this.queue = SingleChronicleQueueBuilder.binary(queuePath)
.wireType(WireType.BINARY_LIGHT)
.rollCycle(builder.rollCycle)
.syncMode(builder.syncMode) // SyncMode.SYNC
.blockSize(builder.blockSize)
.build();
Question:
When using SyncMode.SYNC, if an append (e.g., appender.writeDocument…)
returns successfully and I ACK based on that,
does Chronicle Queue guarantee that the data will survive a sudden VM crash,
kernel panic, or power loss? In other words, is “successful append” itself
a durability boundary?
I also noticed that even with SyncMode.SYNC enabled, write performance is
extraordinarily high (hundreds of thousands of ops/sec).
This is surprising compared to typical fsync-based systems, where throughput
drops dramatically.
- Does this performance imply that Chronicle Queue is handling durability
differently than a strict fsync-per-write model? - Is there any trade-off between this speed and durability guarantees?
If the answer depends on environment (filesystem, controller caches, PLP, etc.),
what is the recommended practice for minimizing risk of data loss?
- Should SyncMode.SYNC be considered “best effort” and replication/quorum ACK
still required for true safety? - Are there Chronicle-level patterns (periodic sync events, batching, etc.)
that you recommend for stricter guarantees?
Thanks!