Fix data race during checkpointing (#82)

Make sure shard is locked during checkpointing.

Signed-off-by: Tao Jiang <taoj@vmware.com>
This commit is contained in:
Tao Jiang 2020-12-18 22:11:10 -06:00
parent 499e9cf1be
commit f1982602ff

View file

@ -65,6 +65,7 @@ func (pc *PreparedCheckpointer) Checkpoint() error {
func (rc *RecordProcessorCheckpointer) Checkpoint(sequenceNumber *string) error {
rc.shard.Mux.Lock()
defer rc.shard.Mux.Unlock()
// checkpoint the last sequence of a closed shard
if sequenceNumber == nil {
@ -73,7 +74,6 @@ func (rc *RecordProcessorCheckpointer) Checkpoint(sequenceNumber *string) error
rc.shard.Checkpoint = aws.StringValue(sequenceNumber)
}
rc.shard.Mux.Unlock()
return rc.checkpoint.CheckpointSequence(rc.shard)
}