apache / apache/iotdb

[Bug] 2.0.2版本 设置设备模板后,插入数据报错

未关闭
#15,435 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
6.4k
派生
1.2k
平均合并
1 天 23 小时
30 天内合并 PR
115

描述

### Search before asking

- [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.

### Version

2.0.2

### Describe the bug and provide the minimal reproduce step

1.创建设备模板
2.挂载设备模板
3.使用maven项目引入依赖

org.apache.iotdb
iotdb-session
2.0.2

4.使用以下方法插入设备数据
sessionPool.insertRecord(deviceId, time, measurements, tsTypes, values);

### What did you expect to see?

数据成功插入到数据库

### What did you see instead?

iotdb数据库报错日志

2025-04-29 11:17:54,999 [pool-56-IoTDB-ClientRPC-Processor-1$20250429_031754_00048_1.1.0] WARN o.a.i.d.q.p.s.FragmentInstanceDispatcherImpl:514 - write locally failed. TSStatus: TSStatus(code:305, message:internal error. statemachine throws a runtime exception: java.lang.NullPointerException), message: internal error. statemachine throws a runtime exception: java.lang.NullPointerException
2025-04-29 11:18:55,506 [1@group-000200000009-StateMachineUpdater] ERROR o.a.i.c.r.ApplicationStateMachineProxy:157 - application statemachine throws a runtime exception:
java.lang.NullPointerException: null
at org.apache.iotdb.db.schemaengine.rescon.MemSchemaEngineStatistics.lambda$getTemplateSeriesNumber$0(MemSchemaEngineStatistics.java:142)
at java.util.stream.ReferencePipeline$5$1.accept(ReferencePipeline.java:227)
at java.util.concurrent.ConcurrentHashMap$EntrySpliterator.forEachRemaining(ConcurrentHashMap.java:3606)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.LongPipeline.reduce(LongPipeline.java:438)
at java.util.stream.LongPipeline.sum(LongPipeline.java:396)
at org.apache.iotdb.db.schemaengine.rescon.MemSchemaEngineStatistics.getTemplateSeriesNumber(MemSchemaEngineStatistics.java:144)
at org.apache.iotdb.db.schemaengine.rescon.MemSchemaEngineStatistics.getTotalSeriesNumber(MemSchemaEngineStatistics.java:124)
at org.apache.iotdb.db.schemaengine.rescon.MemSchemaRegionStatistics.getGlobalSeriesNumber(MemSchemaRegionStatistics.java:230)
at org.apache.iotdb.db.schemaengine.schemaregion.impl.SchemaRegionMemoryImpl.activateSchemaTemplate(SchemaRegionMemoryImpl.java:1358)
at org.apache.iotdb.db.consensus.statemachine.schemaregion.SchemaExecutionVisitor.visitActivateTemplate(SchemaExecutionVisitor.java:436)
at org.apache.iotdb.db.consensus.statemachine.schemaregion.SchemaExecutionVisitor.visitActivateTemplate(SchemaExecutionVisitor.java:94)
at org.apache.iotdb.db.queryengine.plan.planner.plan.node.metadata.write.ActivateTemplateNode.accept(ActivateTemplateNode.java:175)
at org.apache.iotdb.db.consensus.statemachine.schemaregion.SchemaRegionStateMachine.write(SchemaRegionStateMachine.java:182)
at org.apache.iotdb.consensus.ratis.ApplicationStateMachineProxy.applyTransaction(ApplicationStateMachineProxy.java:153)
at org.apache.ratis.server.impl.RaftServerImpl.applyLogToStateMachine(RaftServerImpl.java:1839)
at org.apache.ratis.server.impl.StateMachineUpdater.applyLog(StateMachineUpdater.java:255)
at org.apache.ratis.server.impl.StateMachineUpdater.run(StateMachineUpdater.java:193)
at java.lang.Thread.run(Thread.java:748)

### Anything else?

_No response_

### Are you willing to submit a PR?

- [ ] I'm willing to submit a PR!

贡献指南

打开贡献指南

调研方向

从 db/schemaengine/rescon/MemSchemaEngineStatistics.java 中的 getTemplateSeriesNumber 开始,尤其查看第 142 行,然后通过 SchemaRegionMemoryImpl.activateSchemaTemplate 跟踪激活路径。针对 2.0.2 版本复现设备模板设置和 sessionPool.insertRecord 调用;当模板激活不再引发 NullPointerException 且数据插入成功时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
databases
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。