Skip to content

Conversation

@rasifr
Copy link
Member

@rasifr rasifr commented Dec 1, 2025

This change implements protocol version negotiation to enable rolling upgrades from Spock v5.0.0 through v6.0.0 without breaking replication.

Protocol 4 (v5.0.0-5.0.4): remote_insert_lsn at end of COMMIT only
Protocol 5 (v6.0.0+): remote_insert_lsn at beginning of all messages
(v5.0.5+): Same as v6.0.0, once backported.

Key changes:

  • Protocol negotiation: Min(server_max, client_max)
  • Conditional message format based on negotiated version
  • Backward compatible: defaults to protocol 4 for v5.0.4 and below publishers
  • Version guard: requires both nodes >= v5.0.0

@rasifr rasifr force-pushed the task/SPOC-337/rolling-upgrades branch 2 times, most recently from e2f3aac to 5fd51f0 Compare December 3, 2025 12:00
Copy link
Contributor

@ibrarahmad ibrarahmad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

….0.0

This change implements protocol version negotiation to enable rolling upgrades
from Spock v5.0.0 through v6.0.0 without breaking replication.

Protocol 4 (v5.0.0-5.0.4): remote_insert_lsn at end of COMMIT only
Protocol 5 (v6.0.0+): remote_insert_lsn at beginning of all messages
	   (v5.0.5+): Same as v6.0.0, once backported.

Key changes:
- Protocol negotiation: Min(server_max, client_max)
- Conditional message format based on negotiated version
- Backward compatible: defaults to protocol 4 for v5.0.4 and below publishers
- Version guard: requires both nodes >= v5.0.0
  Tests multi-protocol negotiation during rolling upgrades:
  - Builds v5_STABLE and v6 to separate temp directories
  - Verifies v5 <-> v5 bidirectional replication
  - Upgrades node 1 to v6, tests mixed-version (v5 <-> v6)
  - Upgrades node 2 to v6, tests v6 <-> v6 replication
  - Covers INSERT, UPDATE, DELETE, batch ops, DDL, and TRUNCATE
@rasifr rasifr force-pushed the task/SPOC-337/rolling-upgrades branch from 5fd51f0 to 540045b Compare December 11, 2025 14:41
@mason-sharp mason-sharp changed the title Add multi-protocol support for rolling upgrades between v5.0.x and v6… Add multi-protocol support for rolling upgrades for v5.0.x -> v6.0.0 Dec 12, 2025
@mason-sharp mason-sharp merged commit a22baeb into main Dec 12, 2025
8 of 9 checks passed
@mason-sharp mason-sharp deleted the task/SPOC-337/rolling-upgrades branch December 12, 2025 00:14
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.

4 participants