private static boolean isValidCheckedStream()

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;
  }