From ee9586c60d18b7d03f3ac3d0a599b87d6c162071 Mon Sep 17 00:00:00 2001 From: Yuming Wang Date: Fri, 1 Aug 2025 12:53:46 +0800 Subject: [PATCH] AVRO-4170: Improve sync marker error message in DataFileStream --- .../src/main/java/org/apache/avro/file/DataFileStream.java | 5 ++++- .../test/java/org/apache/avro/TestDataFileCorruption.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lang/java/avro/src/main/java/org/apache/avro/file/DataFileStream.java b/lang/java/avro/src/main/java/org/apache/avro/file/DataFileStream.java index 2bb24b3fa12..e2e79d8eaed 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/file/DataFileStream.java +++ b/lang/java/avro/src/main/java/org/apache/avro/file/DataFileStream.java @@ -330,7 +330,10 @@ DataBlock nextRawBlock(DataBlock reuse) throws IOException { vin.readFixed(syncBuffer); availableBlock = false; if (!Arrays.equals(syncBuffer, header.sync)) - throw new IOException("Invalid sync!"); + throw new IOException("Invalid sync marker! The sync marker in the data block doesn't match the " + + "file header's sync marker. This likely indicates data corruption, truncated file, " + + "or incorrectly concatenated Avro files. Verify file integrity and ensure proper " + + "file transmission or creation."); return reuse; } diff --git a/lang/java/avro/src/test/java/org/apache/avro/TestDataFileCorruption.java b/lang/java/avro/src/test/java/org/apache/avro/TestDataFileCorruption.java index e4659488d17..1a8d54f3012 100644 --- a/lang/java/avro/src/test/java/org/apache/avro/TestDataFileCorruption.java +++ b/lang/java/avro/src/test/java/org/apache/avro/TestDataFileCorruption.java @@ -87,7 +87,10 @@ void corruptedFile() throws IOException { assertEquals("fig", r.next().toString()); assertFalse(r.hasNext()); } catch (AvroRuntimeException e) { - assertEquals("Invalid sync!", e.getCause().getMessage()); + assertEquals("Invalid sync marker! The sync marker in the data block doesn't match the " + + "file header's sync marker. This likely indicates data corruption, truncated file, " + + "or incorrectly concatenated Avro files. Verify file integrity and ensure proper " + + "file transmission or creation.", e.getCause().getMessage()); } }