You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@iotdb.apache.org by "Zhong Wang (Jira)" <ji...@apache.org> on 2021/12/30 13:51:00 UTC

[jira] [Assigned] (IOTDB-2234) Last queries cause NPE when last value is not cached

     [ https://issues.apache.org/jira/browse/IOTDB-2234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Zhong Wang reassigned IOTDB-2234:
---------------------------------

    Assignee: Zhong Wang

> Last queries cause NPE when last value is not cached
> ----------------------------------------------------
>
>                 Key: IOTDB-2234
>                 URL: https://issues.apache.org/jira/browse/IOTDB-2234
>             Project: Apache IoTDB
>          Issue Type: Bug
>            Reporter: Zhong Wang
>            Assignee: Zhong Wang
>            Priority: Major
>
> When the last value cache is absent, LastQueryExecutor will pass a MeasurementPath to the storage to get the last value. The MeasurementPath is constructed using the LastValueRequest, which doesn't contain the schema. But the storage engine assumes it does. Thus, an NPE is thrown when the storage engine constructs the ReadOnlyMemChunk using the MeasurementPath.
> Here's the full stack trace.
> {code}
> 2021-12-29 17:59:32,243 [pool-34-IoTDB-ClusterDataRPC-Client-17] ERROR o.a.t.ProcessFunction:47 - Internal error processing last
> java.lang.NullPointerException: null
>         at org.apache.iotdb.db.metadata.path.MeasurementPath.getReadOnlyMemChunkFromMemTable(MeasurementPath.java:272)
>         at org.apache.iotdb.db.engine.memtable.AbstractMemTable.query(AbstractMemTable.java:370)
>         at org.apache.iotdb.db.engine.storagegroup.TsFileProcessor.query(TsFileProcessor.java:1259)
>         at org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor.getFileResourceListForQuery(StorageGroupProcessor.java:1869)
>         at org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor.query(StorageGroupProcessor.java:1758)
>         at org.apache.iotdb.db.engine.StorageEngine.query(StorageEngine.java:763)
>         at org.apache.iotdb.db.query.control.QueryResourceManager.getQueryDataSource(QueryResourceManager.java:95)
>         at org.apache.iotdb.db.query.executor.LastQueryExecutor.calculateLastPairForSeriesLocally(LastQueryExecutor.java:171)
>         at org.apache.iotdb.cluster.query.LocalQueryExecutor.last(LocalQueryExecutor.java:1045)
>         at org.apache.iotdb.cluster.server.service.DataSyncService.last(DataSyncService.java:413)
>         at org.apache.iotdb.cluster.server.service.DataGroupServiceImpls.last(DataGroupServiceImpls.java:620)
>         at org.apache.iotdb.cluster.rpc.thrift.TSDataService$Processor$last.getResult(TSDataService.java:2515)
>         at org.apache.iotdb.cluster.rpc.thrift.TSDataService$Processor$last.getResult(TSDataService.java:2495)
>         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:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)