Keep Run startup independent from log backlog
This commit is contained in:
@@ -219,6 +219,53 @@ func TestLogSpoolRestoresPendingAllocationWithoutWatermark(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogSpoolStartupDoesNotDecodeCorruptPendingSegment(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
logDir := filepath.Join(root, "logs")
|
||||
if err := os.MkdirAll(logDir, 0o755); err != nil {
|
||||
t.Fatalf("create log dir: %v", err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(logDir, "bad-00000000000000000001-00000000000000000001.json"), []byte("{"), 0o600); err != nil {
|
||||
t.Fatalf("write corrupt segment: %v", err)
|
||||
}
|
||||
logSpool, err := NewLogSpool(root)
|
||||
if err != nil {
|
||||
t.Fatalf("startup should not decode corrupt segment: %v", err)
|
||||
}
|
||||
pending, err := logSpool.Pending()
|
||||
if err != nil || len(pending) != 0 {
|
||||
t.Fatalf("expected corrupt segment to be quarantined when read, pending=%+v err=%v", pending, err)
|
||||
}
|
||||
rejected, err := os.ReadDir(filepath.Join(root, "logs-rejected"))
|
||||
if err != nil || len(rejected) != 1 {
|
||||
t.Fatalf("expected one rejected corrupt segment, rejected=%+v err=%v", rejected, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogSpoolStartupQuarantinesOversizedPendingSegment(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
logDir := filepath.Join(root, "logs")
|
||||
if err := os.MkdirAll(logDir, 0o755); err != nil {
|
||||
t.Fatalf("create log dir: %v", err)
|
||||
}
|
||||
oversized := make([]byte, maxDurableLogSegmentBytes+1)
|
||||
if err := os.WriteFile(filepath.Join(logDir, "huge-00000000000000000001-00000000000000000001.json"), oversized, 0o600); err != nil {
|
||||
t.Fatalf("write oversized segment: %v", err)
|
||||
}
|
||||
logSpool, err := NewLogSpool(root)
|
||||
if err != nil {
|
||||
t.Fatalf("startup should quarantine oversized segment: %v", err)
|
||||
}
|
||||
pending, err := logSpool.Pending()
|
||||
if err != nil || len(pending) != 0 {
|
||||
t.Fatalf("expected oversized segment to be quarantined, pending=%+v err=%v", pending, err)
|
||||
}
|
||||
rejected, err := os.ReadDir(filepath.Join(root, "logs-rejected"))
|
||||
if err != nil || len(rejected) != 1 {
|
||||
t.Fatalf("expected one rejected oversized segment, rejected=%+v err=%v", rejected, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogSpoolSourceCursorDeduplicatesAcknowledgedReplayAfterRestart(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
checksum := func(entries []protocol.LogEntry) (string, error) {
|
||||
|
||||
Reference in New Issue
Block a user