**KEY FINDING:**
Parquet is trying to read 78 bytes starting at position 1275, but the file ends at 1275!
This means:
1. The Parquet footer metadata contains INCORRECT offsets or sizes
2. It thinks there's a column chunk or row group at bytes [1275-1353)
3. But the actual file is only 1275 bytes
During write, getPos() returned correct values (0, 190, 231, 262, etc., up to 1267).
Final file size: 1275 bytes (1267 data + 8-byte footer).
During read:
- Successfully reads [383, 1267) → 884 bytes ✅
- Successfully reads [1267, 1275) → 8 bytes ✅
- Successfully reads [4, 1275) → 1271 bytes ✅
- FAILS trying to read [1275, 1353) → 78 bytes ❌
The '78 bytes' is ALWAYS constant across all test runs, indicating a systematic
offset calculation error, not random corruption.
Files modified:
- SeaweedInputStream.java - Added EOF logging to early return path
- ROOT_CAUSE_CONFIRMED.md - Analysis document
- ParquetReproducerTest.java - Attempted standalone reproducer (incomplete)
- pom.xml - Downgraded Parquet to 1.13.1 (didn't fix issue)
Next: The issue is likely in how getPos() is called during column chunk writes.
The footer records incorrect offsets, making it expect data beyond EOF.