From ef98b6b14ab210911813a5b3b30084c0f754457d Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 6 Aug 2025 09:47:04 +0300 Subject: [PATCH] fix: use local lastSequence in ReadEvents to avoid state conflict --- ch05/ch05_05/transact.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ch05/ch05_05/transact.go b/ch05/ch05_05/transact.go index 8c10764..8bffb5d 100644 --- a/ch05/ch05_05/transact.go +++ b/ch05/ch05_05/transact.go @@ -122,6 +122,7 @@ func (l *TransactionLogger) ReadEvents() (<-chan Event, <-chan error) { go func() { var e Event + var lastSeq uint64 = 0 defer close(outEvent) defer close(outError) @@ -133,7 +134,7 @@ func (l *TransactionLogger) ReadEvents() (<-chan Event, <-chan error) { line, "%d\t%d\t%s\t%s", &e.Sequence, &e.EventType, &e.Key, &e.Value) - if l.lastSequence >= e.Sequence { + if lastSeq >= e.Sequence { outError <- fmt.Errorf("transaction numbers out of sequence") return } @@ -145,7 +146,7 @@ func (l *TransactionLogger) ReadEvents() (<-chan Event, <-chan error) { } e.Value = uv - l.lastSequence = e.Sequence + lastSeq = e.Sequence outEvent <- e }