mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-19 04:24:28 +02:00
fix(ec): detect truncated .ecx instead of treating it as clean EOF (#10217)
This commit is contained in:
1 parent
2480c2521a
commit
1d8a6e832c
2 files changed
+23
-6
No files matched your search
@@ -73,6 +73,22 @@ func TestHasLiveNeedles_EmptyFileIsFalse(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestHasLiveNeedles_TruncatedEcxErrors(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
|
||||
base := filepath.Join(dir, "foo_1")
|
||||
|
||||
entry := makeNeedleMapEntry(types.NeedleId(1), types.Offset{}, types.TombstoneFileSize)
|
||||
truncated := append(entry, entry[:types.NeedleIdSize]...)
|
||||
if err := os.WriteFile(base+".ecx", truncated, 0644); err != nil {
|
||||
t.Fatalf("write ecx: %v", err)
|
||||
}
|
||||
|
||||
if _, err := erasure_coding.HasLiveNeedles(base); err == nil {
|
||||
t.Fatalf("expected error for truncated ecx")
|
||||
}
|
||||
}
|
||||
|
||||
func makeNeedleMapEntry(key types.NeedleId, offset types.Offset, size types.Size) []byte {
|
||||
b := make([]byte, types.NeedleIdSize+types.OffsetSize+types.SizeSize)
|
||||
types.NeedleIdToBytes(b[0:types.NeedleIdSize], key)
|
||||
|
||||
Reference in new issue
Block a user