apache / apache/iotdb

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

オープン
#15,435 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
6.4k
フォーク
1.2k
平均マージ
1日 23時間
マージ済み PR(30日)
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 を短くまとめたダイジェスト。