From 4f2f2cf0232d7f89b8255208eef87370155b67af Mon Sep 17 00:00:00 2001 From: Kenan Kessler Date: Tue, 2 Nov 2021 17:11:41 -0400 Subject: [PATCH] fix manifest rewriting so unit test will pass using a injected latency on os.file.Sync() --- manifest.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/manifest.go b/manifest.go index 65ae9be62..0b15badb1 100644 --- a/manifest.go +++ b/manifest.go @@ -212,19 +212,17 @@ func (mf *manifestFile) addChanges(changesParam []*pb.ManifestChange) error { } // Maybe we could use O_APPEND instead (on certain file systems) mf.appendLock.Lock() + defer mf.appendLock.Unlock() if err := applyChangeSet(&mf.manifest, &changes); err != nil { - mf.appendLock.Unlock() return err } if mf.inMemory { - mf.appendLock.Unlock() return nil } // Rewrite manifest if it'd shrink by 1/10 and it's big enough to care if mf.manifest.Deletions > mf.deletionsRewriteThreshold && mf.manifest.Deletions > manifestDeletionsRatio*(mf.manifest.Creations-mf.manifest.Deletions) { if err := mf.rewrite(); err != nil { - mf.appendLock.Unlock() return err } } else { @@ -233,12 +231,10 @@ func (mf *manifestFile) addChanges(changesParam []*pb.ManifestChange) error { binary.BigEndian.PutUint32(lenCrcBuf[4:8], crc32.Checksum(buf, y.CastagnoliCrcTable)) buf = append(lenCrcBuf[:], buf...) if _, err := mf.fp.Write(buf); err != nil { - mf.appendLock.Unlock() return err } } - mf.appendLock.Unlock() return syncFunc(mf.fp) }