-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Expand file tree
/
Copy pathdisaggregated_storage_setversion.yml
More file actions
118 lines (118 loc) · 3.49 KB
/
disaggregated_storage_setversion.yml
File metadata and controls
118 lines (118 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Disaggregated storage clusters use a constant setVersion (typically 1) instead of
# incrementing it on each reconfig. This test validates that primary staleness detection
# works correctly using electionId when setVersion doesn't change.
description: Static setVersion (DSC) is compatible with both pre and post DRIVERS-2412
uri: "mongodb://a/?replicaSet=rs"
phases:
# Phase 1: Initial state - A is primary with electionId=5, setVersion=1
- responses:
-
- "a:27017"
- ok: 1
helloOk: true
isWritablePrimary: true
hosts:
- "a:27017"
- "b:27017"
setName: rs
setVersion: 1
electionId: {"$oid": "000000000000000000000005"}
minWireVersion: 0
maxWireVersion: 17
-
- "b:27017"
- ok: 1
helloOk: true
isWritablePrimary: false
secondary: true
hosts:
- "a:27017"
- "b:27017"
setName: rs
setVersion: 1
minWireVersion: 0
maxWireVersion: 17
outcome:
servers:
a:27017:
type: RSPrimary
setName: rs
setVersion: 1
electionId: {"$oid": "000000000000000000000005"}
b:27017:
type: RSSecondary
setName: rs
setVersion: 1
electionId: null
topologyType: ReplicaSetWithPrimary
logicalSessionTimeoutMinutes: null
setName: rs
maxSetVersion: 1
maxElectionId: {"$oid": "000000000000000000000005"}
# Phase 2: B becomes primary with newer electionId=6, but setVersion stays at 1
# The driver should accept B as the new primary and mark A as Unknown
- responses:
-
- "b:27017"
- ok: 1
helloOk: true
isWritablePrimary: true
hosts:
- "a:27017"
- "b:27017"
setName: rs
setVersion: 1
electionId: {"$oid": "000000000000000000000006"}
minWireVersion: 0
maxWireVersion: 17
outcome:
servers:
a:27017:
type: Unknown
setName: null
setVersion: null
electionId: null
b:27017:
type: RSPrimary
setName: rs
setVersion: 1
electionId: {"$oid": "000000000000000000000006"}
topologyType: ReplicaSetWithPrimary
logicalSessionTimeoutMinutes: null
setName: rs
maxSetVersion: 1
maxElectionId: {"$oid": "000000000000000000000006"}
# Phase 3: Old primary A tries to come back with stale electionId=5
# Even though setVersion is still 1 (unchanged), the driver should reject A
# because its electionId is older than the current maxElectionId=6
- responses:
-
- "a:27017"
- ok: 1
helloOk: true
isWritablePrimary: true
hosts:
- "a:27017"
- "b:27017"
setName: rs
setVersion: 1
electionId: {"$oid": "000000000000000000000005"}
minWireVersion: 0
maxWireVersion: 17
outcome:
servers:
a:27017:
type: Unknown
setName: null
setVersion: null
electionId: null
b:27017:
type: RSPrimary
setName: rs
setVersion: 1
electionId: {"$oid": "000000000000000000000006"}
topologyType: ReplicaSetWithPrimary
logicalSessionTimeoutMinutes: null
setName: rs
maxSetVersion: 1
maxElectionId: {"$oid": "000000000000000000000006"}