@Override
  public T deserialize(InputStream inputStream) throws IOException {
    dataInputStream.changeInputStream(inputStream);
    int logLength = dataInputStream.readInt();
    if (logLength <= 0) {
      LOGGER.error("Read log length {} is negative.", logLength);
      throw new IOException(
          new IllegalArgumentException(
              String.format("Read log length %s is negative.", logLength)));
    }

    byte[] logBuffer = new byte[logLength];
    if (logLength < inputStream.read(logBuffer, 0, logLength)) {
      throw new EOFException();
    }

    T result = deserializer.deserialize(ByteBuffer.wrap(logBuffer));

    // read a long to keep compatible with old version (CRC32 code)
    dataInputStream.readLong();
    return result;
  }
This classed is used for keep mlog compatible with that of 0.14 snapshot versions. The element T
will be deserialized from InputStream as format: content data length (4B) + content data (var
length) + validation code (long). The validation code will be filled by a meaningless long value,
and it will be read for no usage.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/FakeCRC32Deserializer.java