Zhong Wang created IOTDB-2234:
---------------------------------

             Summary: 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


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