Skip to content

fix(qwp): detect incarnation changes via dir name in STATUS_DURABLE_ACK [fj4WqyCCw3C5ShR1RfB7MoBPTpkRrBFYP1uT35g3MvT] - #90

Open
waterWang wants to merge 1 commit into
questdb:mainfrom
waterWang:fix/qwp-durable-ack-incarnation-discriminator
Open

fix(qwp): detect incarnation changes via dir name in STATUS_DURABLE_ACK [fj4WqyCCw3C5ShR1RfB7MoBPTpkRrBFYP1uT35g3MvT]#90
waterWang wants to merge 1 commit into
questdb:mainfrom
waterWang:fix/qwp-durable-ack-incarnation-discriminator

Conversation

@waterWang

Copy link
Copy Markdown

When a table is dropped and re-created under the same name, the server's
STATUS_DURABLE_ACK frames now carry the table dir name as an incarnation
discriminator. The client tracks the last-seen dir name per table; when the
dir name changes, the per-table durable watermark is reset to prevent the
old incarnation's high watermark from falsely covering the new incarnation's
low seqTxns (which caused durable-ack-grade data loss).

  • WebSocketResponse: parse new durable ack entry format
    [nameLen(2)+name(N)+dirLen(2)+dir(M)+seqTxn(8)]
  • CursorWebSocketSendLoop: detect dir name change → reset durableTableWatermarks[name]
  • WebSocketResponseTest: updated durableAck() factory calls with dir name

Requires coordinated server PR: questdb/questdb#7513

Ref: questdb/questdb#7496

When a table is dropped and re-created under the same name, the server's
STATUS_DURABLE_ACK frames now carry the table dir name as an incarnation
discriminator. The client tracks the last-seen dir name per table; when the
dir name changes, the per-table durable watermark is reset to prevent the
old incarnation's high watermark from falsely covering the new incarnation's
low seqTxns (which caused durable-ack-grade data loss).

- WebSocketResponse: parse new durable ack entry format
  [nameLen(2)+name(N)+dirLen(2)+dir(M)+seqTxn(8)]
- CursorWebSocketSendLoop: detect dir name change → reset watermark

Requires coordinated server PR questdb/questdb#7513.

Ref: questdb/questdb#7496
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