in kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-36/src/main/java/org/apache/zookeeper/server/persistence/SnapStream.java [262:291]
private static boolean isValidCheckedStream(File f) throws IOException {
try (RandomAccessFile raf = new RandomAccessFile(f, "r")) {
// including the header and the last / bytes
// the snapshot should be at least 10 bytes
if (raf.length() < 10) {
return false;
}
raf.seek(raf.length() - 5);
byte[] bytes = new byte[5];
int readlen = 0;
int l;
while (readlen < 5 && (l = raf.read(bytes, readlen, bytes.length - readlen)) >= 0) {
readlen += l;
}
if (readlen != bytes.length) {
LOG.info("Invalid snapshot {}. too short, len = {} bytes", f.getName(), readlen);
return false;
}
ByteBuffer bb = ByteBuffer.wrap(bytes);
int len = bb.getInt();
byte b = bb.get();
if (len != 1 || b != '/') {
LOG.info("Invalid snapshot {}. len = {}, byte = {}", f.getName(), len, (b & 0xff));
return false;
}
}
return true;
}