session查询sql时报错
- 主要言語
- Java
- スター
- 6.4k
- フォーク
- 1.2k
- 平均マージ
- 1日 23時間
- マージ済み PR(30日)
- 115
説明
session查询数据时出现解析sql非法参数异常, 但执行max_time没问题
ERROR o.a.i.d.q.d.RawQueryDataSetWithoutValueFilter$ReadTask:148 - Something gets wrong:
java.lang.IllegalArgumentException: Invalid input: 63
at org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding.getTsEncoding(TSEncoding.java:69)
at org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding.deserialize(TSEncoding.java:45)
at org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.readEncoding(ReadWriteIOUtils.java:809)
at org.apache.iotdb.tsfile.file.header.ChunkHeader.deserializeFrom(ChunkHeader.java:170)
at org.apache.iotdb.tsfile.read.TsFileSequenceReader.readChunkHeader(TsFileSequenceReader.java:889)
at org.apache.iotdb.tsfile.read.TsFileSequenceReader.readMemChunk(TsFileSequenceReader.java:911)
at org.apache.iotdb.db.engine.cache.ChunkCache.lambda$new$1(ChunkCache.java:80)
at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:141)
at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139)
at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2405)
at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853)
at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2403)
at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2386)
at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108)
at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:54)
at org.apache.iotdb.db.engine.cache.ChunkCache.get(ChunkCache.java:109)
at org.apache.iotdb.db.query.reader.chunk.DiskChunkLoader.loadChunk(DiskChunkLoader.java:40)
at org.apache.iotdb.db.utils.FileLoaderUtils.loadPageReaderList(FileLoaderUtils.java:172)
at org.apache.iotdb.db.query.reader.series.SeriesReader.unpackOneChunkMetaData(SeriesReader.java:525)
at org.apache.iotdb.db.query.reader.series.SeriesReader.unpackAllOverlappedChunkMetadataToPageReaders(SeriesReader.java:514)
at org.apache.iotdb.db.query.reader.series.SeriesReader.hasNextOverlappedPage(SeriesReader.java:691)
at org.apache.iotdb.db.query.reader.series.SeriesReader.isExistOverlappedPage(SeriesReader.java:463)
at org.apache.iotdb.db.query.reader.series.SeriesReader.hasNextPage(SeriesReader.java:441)
at org.apache.iotdb.db.query.reader.series.SeriesRawDataBatchReader.readPageData(SeriesRawDataBatchReader.java:182)
at org.apache.iotdb.db.query.reader.series.SeriesRawDataBatchReader.readChunkData(SeriesRawDataBatchReader.java:174)
at org.apache.iotdb.db.query.reader.series.SeriesRawDataBatchReader.hasNextBatch(SeriesRawDataBatchReader.java:130)
at org.apache.iotdb.db.query.dataset.RawQueryDataSetWithoutValueFilter$ReadTask.runMayThrow(RawQueryDataSetWithoutValueFilter.java:89)
at org.apache.iotdb.db.concurrent.WrappedRunnable.run(WrappedRunnable.java:32)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
コントリビューションガイド
調査の方向性
まずセッションクエリを再現し、動作する max_time クエリと比較します。RawQueryDataSetWithoutValueFilter$ReadTask から ChunkCache、TsFileSequenceReader.readChunkHeader を経て TSEncoding.getTsEncoding まで、失敗の経路を追跡します。encoding 値 63 が読み取られる理由を特定し、セッションクエリが無効なパラメータ例外を発生させなくなったことを確認できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- databases
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100