fix: synchronize DWH registry snapshots
This commit is contained in:
@@ -353,7 +353,7 @@ func TestConcurrentAddDoesNotOverwriteAndFindNeverReadsPartialRecord(t *testing.
|
||||
}
|
||||
}()
|
||||
}
|
||||
if err := readStore.Revoke(first.KeyID, "synthetic rotation", first.CreatedAt.Add(time.Hour)); err != nil {
|
||||
if err := left.Revoke(first.KeyID, "synthetic rotation", first.CreatedAt.Add(time.Hour)); err != nil {
|
||||
t.Fatalf("Revoke() during concurrent reads error = %v", err)
|
||||
}
|
||||
readers.Wait()
|
||||
@@ -597,11 +597,12 @@ func TestFindAndFindLegacyRejectExactExpiration(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadOperationsWaitAcrossRevokePublicationAndUnlink(t *testing.T) {
|
||||
func TestCrossStoreReadersWaitAcrossRevokePublicationAndUnlink(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
store := openStore(t, root)
|
||||
writer := openStore(t, root)
|
||||
reader := openStore(t, root)
|
||||
legacy := syntheticLegacyRecord()
|
||||
if err := store.Add(legacy); err != nil {
|
||||
if err := writer.Add(legacy); err != nil {
|
||||
t.Fatalf("Add() error = %v", err)
|
||||
}
|
||||
|
||||
@@ -610,17 +611,17 @@ func TestReadOperationsWaitAcrossRevokePublicationAndUnlink(t *testing.T) {
|
||||
writerDone := make(chan error, 1)
|
||||
revokedAt := legacy.CreatedAt.Add(time.Hour)
|
||||
go func() {
|
||||
writerDone <- store.withWriterLock(func() error {
|
||||
writerDone <- writer.withWriterLock(func() error {
|
||||
close(writerReady)
|
||||
<-releaseWriter
|
||||
revoked := revokedRecord(legacy, revokedAt, "synthetic rotation")
|
||||
if err := store.writeRecord(store.revoked, revoked); err != nil {
|
||||
if err := writer.writeRecord(writer.revoked, revoked); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := store.active.Remove(recordFileName(legacy.KeyID)); err != nil {
|
||||
if err := writer.active.Remove(recordFileName(legacy.KeyID)); err != nil {
|
||||
return err
|
||||
}
|
||||
return store.active.Sync()
|
||||
return writer.active.Sync()
|
||||
})
|
||||
}()
|
||||
<-writerReady
|
||||
@@ -633,10 +634,10 @@ func TestReadOperationsWaitAcrossRevokePublicationAndUnlink(t *testing.T) {
|
||||
name string
|
||||
run func() error
|
||||
}{
|
||||
{name: "Find", run: func() error { _, err := store.Find(legacy.KeyID); return err }},
|
||||
{name: "List", run: func() error { _, err := store.List(); return err }},
|
||||
{name: "Check", run: store.Check},
|
||||
{name: "FindLegacy", run: func() error { _, err := store.FindLegacy(); return err }},
|
||||
{name: "Find", run: func() error { _, err := reader.Find(legacy.KeyID); return err }},
|
||||
{name: "List", run: func() error { _, err := reader.List(); return err }},
|
||||
{name: "Check", run: reader.Check},
|
||||
{name: "FindLegacy", run: func() error { _, err := reader.FindLegacy(); return err }},
|
||||
}
|
||||
results := make(chan readResult, len(readers))
|
||||
var started sync.WaitGroup
|
||||
@@ -689,11 +690,12 @@ waitForReaders:
|
||||
}
|
||||
}
|
||||
|
||||
func TestScanReadersWaitForWriterTemporaryFile(t *testing.T) {
|
||||
func TestCrossStoreScanReadersWaitForWriterTemporaryFile(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
store := openStore(t, root)
|
||||
writer := openStore(t, root)
|
||||
reader := openStore(t, root)
|
||||
legacy := syntheticLegacyRecord()
|
||||
if err := store.Add(legacy); err != nil {
|
||||
if err := writer.Add(legacy); err != nil {
|
||||
t.Fatalf("Add() error = %v", err)
|
||||
}
|
||||
|
||||
@@ -702,8 +704,8 @@ func TestScanReadersWaitForWriterTemporaryFile(t *testing.T) {
|
||||
writerDone := make(chan error, 1)
|
||||
const temporary = ".tmp-regression"
|
||||
go func() {
|
||||
writerDone <- store.withWriterLock(func() error {
|
||||
file, err := store.active.CreateExclusive(temporary, 0o600)
|
||||
writerDone <- writer.withWriterLock(func() error {
|
||||
file, err := writer.active.CreateExclusive(temporary, 0o600)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -712,10 +714,10 @@ func TestScanReadersWaitForWriterTemporaryFile(t *testing.T) {
|
||||
}
|
||||
close(writerReady)
|
||||
<-releaseWriter
|
||||
if err := store.active.Remove(temporary); err != nil {
|
||||
if err := writer.active.Remove(temporary); err != nil {
|
||||
return err
|
||||
}
|
||||
return store.active.Sync()
|
||||
return writer.active.Sync()
|
||||
})
|
||||
}()
|
||||
<-writerReady
|
||||
@@ -728,9 +730,9 @@ func TestScanReadersWaitForWriterTemporaryFile(t *testing.T) {
|
||||
name string
|
||||
run func() error
|
||||
}{
|
||||
{name: "List", run: func() error { _, err := store.List(); return err }},
|
||||
{name: "Check", run: store.Check},
|
||||
{name: "FindLegacy", run: func() error { _, err := store.FindLegacy(); return err }},
|
||||
{name: "List", run: func() error { _, err := reader.List(); return err }},
|
||||
{name: "Check", run: reader.Check},
|
||||
{name: "FindLegacy", run: func() error { _, err := reader.FindLegacy(); return err }},
|
||||
}
|
||||
results := make(chan readResult, len(readers))
|
||||
var started sync.WaitGroup
|
||||
|
||||
Reference in New Issue
Block a user