[ 
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)

Reply via email to