From ad2a8c9b95ff678bfc658f9c24545bde2deee98b Mon Sep 17 00:00:00 2001 From: Johnny Graettinger Date: Thu, 16 Jan 2025 16:28:35 -0600 Subject: [PATCH] broker: tear down a stale append pipeline before proxying This can happen if we were primary, but have been re-assigned as a replica without an observed cancellation of our assignment in between. We must tear down the stale pipeline to release replica spools before we return it. --- broker/append_fsm.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/broker/append_fsm.go b/broker/append_fsm.go index f8b49023..c1a7df31 100644 --- a/broker/append_fsm.go +++ b/broker/append_fsm.go @@ -154,7 +154,11 @@ func (b *appendFSM) onResolve() { b.state = stateError } else if b.resolved.ProcessId != b.resolved.localID { // If we hold the pipeline from a previous resolution but are no longer - // primary, we must release it. + // primary, we must tear it down to release replica spools. + if b.pln != nil { + go b.pln.shutdown(false) + b.pln = nil + } b.returnPipeline() b.state = stateAwaitDesiredReplicas // We must proxy. } else if b.plnReturnCh != nil {