count聚合出错0.13版本
- Lenguaje dominante
- Java
- Estrellas
- 6.4k
- Forks
- 1.2k
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 115
Descripción
查询可以,聚合出错
```
IoTDB> select * from root.sg.JIN_TNC order by Time desc limit 10
+-----------------------------+--------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------------+
| Time|root.sg.JIN_TNC.IO10|root.sg.JIN_TNC.IO1|root.sg.JIN_TNC.IO3|root.sg.JIN_TNC.IO2|root.sg.JIN_TNC.IO5|root.sg.JIN_TNC.IO4|root.sg.JIN_TNC.IO7|root.sg.JIN_TNC.IO6|root.sg.JIN_TNC.IO9|root.sg.JIN_TNC.IO8| root.sg.JIN_TNC.tm|
+-----------------------------+--------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------------+
|2022-06-25T13:20:35.183+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:34+08:00|
|2022-06-25T13:20:35.026+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:33+08:00|
|2022-06-25T13:20:34.558+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:33+08:00|
|2022-06-25T13:20:34.417+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:33+08:00|
|2022-06-25T13:20:34.292+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:33+08:00|
|2022-06-25T13:20:34.151+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:33+08:00|
|2022-06-25T13:20:33.933+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:32+08:00|
|2022-06-25T13:20:33.776+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:32+08:00|
|2022-06-25T13:20:33.323+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:32+08:00|
|2022-06-25T13:20:33.183+08:00| 1.00| 0.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00| 1.00|2022-06-25T13:20:32+08:00|
+-----------------------------+--------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------------+
Total line number = 10
It costs 0.025s
IoTDB> select count(*) from root.sg.JIN_TNC
Msg: 500: [INTERNAL_SERVER_ERROR(500)] Exception occurred: "select count(*) from root.sg.JIN_TNC". executeStatement failed. java.nio.BufferUnderflowException
```
IOTDB中的报错信息
```
2022-06-25 13:20:50,547 [pool-15-IoTDB-RPC-Client-1] WARN o.a.i.d.u.ErrorHandlingUtils:61 - Status code: INTERNAL_SERVER_ERROR(500), operation: "select count(*) from root.sg.JIN_TNC". executeStatement failed
java.util.concurrent.ExecutionException: java.nio.BufferUnderflowException
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl.submitQueryTask(TSServiceImpl.java:785)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl.executeStatement(TSServiceImpl.java:619)
at org.apache.iotdb.service.rpc.thrift.TSIService$Processor$executeStatement.getResult(TSIService.java:2853)
at org.apache.iotdb.service.rpc.thrift.TSIService$Processor$executeStatement.getResult(TSIService.java:2833)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:38)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.nio.BufferUnderflowException: null
at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:154)
at org.apache.iotdb.tsfile.utils.ReadWriteIOUtils.readVarIntString(ReadWriteIOUtils.java:601)
at org.apache.iotdb.tsfile.file.metadata.MetadataIndexEntry.deserializeFrom(MetadataIndexEntry.java:66)
at org.apache.iotdb.tsfile.file.metadata.MetadataIndexNode.deserializeFrom(MetadataIndexNode.java:103)
at org.apache.iotdb.tsfile.read.TsFileSequenceReader.getLeafMetadataIndexPair(TsFileSequenceReader.java:480)
at org.apache.iotdb.tsfile.read.TsFileSequenceReader.readTimeseriesMetadata(TsFileSequenceReader.java:444)
at org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache.get(TimeSeriesMetadataCache.java:199)
at org.apache.iotdb.db.utils.FileLoaderUtils.loadTimeSeriesMetadata(FileLoaderUtils.java:104)
at org.apache.iotdb.db.query.reader.series.SeriesReader.loadTimeSeriesMetadata(SeriesReader.java:1125)
at org.apache.iotdb.db.query.reader.series.SeriesReader.unpackSeqTsFileResource(SeriesReader.java:1091)
at org.apache.iotdb.db.query.reader.series.SeriesReader.tryToUnpackAllOverlappedFilesToTimeSeriesMetadata(SeriesReader.java:1014)
at org.apache.iotdb.db.query.reader.series.SeriesReader.hasNextFile(SeriesReader.java:263)
at org.apache.iotdb.db.query.reader.series.SeriesAggregateReader.hasNextFile(SeriesAggregateReader.java:93)
at org.apache.iotdb.db.query.executor.AggregationExecutor.aggregateFromReader(AggregationExecutor.java:390)
at org.apache.iotdb.db.query.executor.AggregationExecutor.aggregateOneSeries(AggregationExecutor.java:304)
at org.apache.iotdb.db.query.executor.AggregationExecutor.aggregateOneSeries(AggregationExecutor.java:195)
at org.apache.iotdb.db.query.executor.AggregationExecutor.executeWithoutValueFilter(AggregationExecutor.java:149)
at org.apache.iotdb.db.query.executor.QueryRouter.aggregate(QueryRouter.java:123)
at org.apache.iotdb.db.qp.executor.PlanExecutor.processDataQuery(PlanExecutor.java:630)
at org.apache.iotdb.db.qp.executor.PlanExecutor.processQuery(PlanExecutor.java:258)
at org.apache.iotdb.db.service.basic.ServiceProvider.createQueryDataSet(ServiceProvider.java:264)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl.executeQueryPlan(TSServiceImpl.java:821)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl.access$000(TSServiceImpl.java:163)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl$QueryTask.call(TSServiceImpl.java:221)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl$QueryTask.call(TSServiceImpl.java:165)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 common frames omitted
```
Guía de contribución
Línea de trabajo
Reproduce `select count(*) from root.sg.JIN_TNC` después de la consulta de datos exitosa y, a continuación, sigue el stack desde `AggregationExecutor` pasando por `SeriesReader` hasta `TsFileSequenceReader`. Inspecciona la deserialización de metadatos en `MetadataIndexEntry.deserializeFrom` y `MetadataIndexNode.deserializeFrom`; se considera terminado cuando la consulta de conteo ya no genere `BufferUnderflowException` para los datos indicados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100