@@ -127,7 +127,6 @@ func main() {
127
127
}
128
128
129
129
os .Exit (0 )
130
-
131
130
default :
132
131
// noop
133
132
}
@@ -173,6 +172,7 @@ func evaluateClusterState(ctx context.Context, conn *pgx.Conn, node *flypg.Node)
173
172
174
173
primary , err := flypg .ZombieDiagnosis (sample )
175
174
if errors .Is (err , flypg .ErrZombieDiagnosisUndecided ) || errors .Is (err , flypg .ErrZombieDiscovered ) {
175
+ // Quarantine primary
176
176
if err := flypg .Quarantine (ctx , conn , node , primary ); err != nil {
177
177
return fmt .Errorf ("failed to quarantine failed primary: %s" , err )
178
178
}
@@ -182,24 +182,16 @@ func evaluateClusterState(ctx context.Context, conn *pgx.Conn, node *flypg.Node)
182
182
return fmt .Errorf ("failed to run zombie diagnosis: %s" , err )
183
183
}
184
184
185
- // If the zombie lock exists clear it
185
+ // Clear zombie lock if it exists
186
186
if flypg .ZombieLockExists () {
187
187
log .Println ("Clearing zombie lock and enabling read/write" )
188
188
if err := flypg .RemoveZombieLock (); err != nil {
189
189
return fmt .Errorf ("failed to remove zombie lock: %s" , err )
190
190
}
191
191
192
- maxRetries := 5
193
- retry := 0
194
-
195
- for retry < maxRetries {
196
- if err := flypg .DisableReadonly (ctx , node ); err != nil {
197
- log .Printf ("attempt %d - failed to unset readonly: %s" , retry , err )
198
- retry ++
199
- continue
200
- }
201
- log .Println ("successfully enabled read/write" )
202
- break
192
+ log .Println ("Broadcasting readonly state change" )
193
+ if err := flypg .BroadcastReadonlyChange (ctx , node , false ); err != nil {
194
+ log .Printf ("errors while disabling readonly: %s" , err )
203
195
}
204
196
}
205
197
0 commit comments