@Override
  void readChunk(ChunkMetadataElement chunkMetadataElement) throws IOException {
    updateSummary(chunkMetadataElement, ChunkStatus.READ_IN);
    chunkMetadataElement.chunk =
        readerCacheMap
            .get(chunkMetadataElement.fileElement.resource)
            .readMemChunk((ChunkMetadata) chunkMetadataElement.chunkMetadata);

    if (!hasStartMeasurement) {
      // for nonAligned sensors, only after getting chunkMetadatas can we create metadata to
      // start
      // measurement; for aligned sensors, we get all schemas of value sensors and
      // startMeasurement() in the previous process, because we need to get all chunk metadatas of
      // sensors and their schemas under the current device, but since the compaction process is
      // to read a batch of overlapped files each time, which may not contain all the sensors.
      ChunkHeader header = chunkMetadataElement.chunk.getHeader();
      MeasurementSchema schema =
          new MeasurementSchema(
              header.getMeasurementID(),
              header.getDataType(),
              header.getEncodingType(),
              header.getCompressionType());
      compactionWriter.startMeasurement(
          schema.getMeasurementName(), new ChunkWriterImpl(schema, true), subTaskId);
      hasStartMeasurement = true;
      seriesCompressionType = header.getCompressionType();
      seriesTSEncoding = header.getEncodingType();
      chunkMetadataElement.needForceDecodingPage = false;
    } else {
      ChunkHeader header = chunkMetadataElement.chunk.getHeader();
      chunkMetadataElement.needForceDecodingPage =
          header.getCompressionType() != seriesCompressionType
              || header.getEncodingType() != seriesTSEncoding;
    }
  }
Deserialize chunk into pages without uncompressing and put them into the page queue.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/fast/FastNonAlignedSeriesCompactionExecutor.java