iotdb
iotdb copied to clipboard
[Bug] MQTT消息插入失败,控制台反复执行
Search before asking
- [X] I searched in the issues and found nothing similar.
Version
iotdb:1.2.1 windows server 2016 openjdk 11
Describe the bug and provide the minimal reproduce step
写入iotdb为mqtt方式,之前有物理量名字不合法,中间有个空格。现在已经修改正确。
控制台情况
What did you expect to see?
报错日志如下 Uploading log_datanode_compaction.log…
What did you see instead?
猜测原因应该是mqtt消息可能有缓存,失败了会继续重新执行,但是不合法的消息会永久失败,可以对缓存做一定处理,如几次缓存都插入执行失败后舍弃mqtt消息内容,或者对持续插入失败的消息,单独给一个修订方式等
Anything else?
No response
Are you willing to submit a PR?
- [ ] I'm willing to submit a PR!
2023-10-16 11:23:26,767 [pool-21-IoTDB-Compaction-Worker-10] ERROR o.a.i.d.s.d.c.e.t.InnerSpaceCompactionTask:305 - root.advint-0 [Compaction] Meet errors in inner space compaction.
org.apache.iotdb.commons.exception.IllegalPathException: root.advint.zj3j.SiemensPLC1500.停止_桁架 1 is not a legal path
at org.apache.iotdb.commons.utils.PathUtils.splitPathToDetachedNodes(PathUtils.java:48)
at org.apache.iotdb.commons.path.PartialPath.
路径修改正确后可以尝试一下清理掉data目录重新写入,如果已经写入了脏数据有可能导致这个问题。
另外 mqtt的发送端程序也尽量指定一下 utf-8 编码。报错的路径不合法大概率是编码不一致导致的。
路径修改正确后可以尝试一下清理掉data目录重新写入,如果已经写入了脏数据有可能导致这个问题。
data目录内有数据如何清理?我不能为了解决mqtt错误消息而把整个data数据全删了吧,那我使用iotdb的价值又在哪里?
另外一个现象,log_confignode_error.log中有如下错误信息,我的数据好长一段时间都没存储到数据库,应该也是和MQTT消息中不合法测量量导致的。我清除data目录后,一切正常。
2023-10-20 07:28:27,062 [pool-14-IoTDB-ConfigNodeRPC-Processor-10] ERROR o.a.t.ProcessFunction:47 - Internal error processing getOrCreateDataPartitionTable java.lang.NullPointerException: null at org.apache.iotdb.confignode.manager.load.balancer.PartitionBalancer.allocateDataPartition(PartitionBalancer.java:193) at org.apache.iotdb.confignode.manager.load.LoadManager.allocateDataPartition(LoadManager.java:134) at org.apache.iotdb.confignode.manager.partition.PartitionManager.getOrCreateDataPartition(PartitionManager.java:374) at org.apache.iotdb.confignode.manager.ConfigManager.getOrCreateDataPartition(ConfigManager.java:824) at org.apache.iotdb.confignode.service.thrift.ConfigNodeRPCServiceProcessor.getOrCreateDataPartitionTable(ConfigNodeRPCServiceProcessor.java:501) at org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService$Processor$getOrCreateDataPartitionTable.getResult(IConfigNodeRPCService.java:7437) at org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService$Processor$getOrCreateDataPartitionTable.getResult(IConfigNodeRPCService.java:7417) 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.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) 2023-10-20 07:28:28,073 [pool-14-IoTDB-ConfigNodeRPC-Processor-10] ERROR o.a.t.ProcessFunction:47 - Internal error processing getOrCreateDataPartitionTable java.lang.NullPointerException: null at org.apache.iotdb.confignode.manager.load.balancer.PartitionBalancer.allocateDataPartition(PartitionBalancer.java:193) at org.apache.iotdb.confignode.manager.load.LoadManager.allocateDataPartition(LoadManager.java:134) at org.apache.iotdb.confignode.manager.partition.PartitionManager.getOrCreateDataPartition(PartitionManager.java:374) at org.apache.iotdb.confignode.manager.ConfigManager.getOrCreateDataPartition(ConfigManager.java:824) at org.apache.iotdb.confignode.service.thrift.ConfigNodeRPCServiceProcessor.getOrCreateDataPartitionTable(ConfigNodeRPCServiceProcessor.java:501) at org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService$Processor$getOrCreateDataPartitionTable.getResult(IConfigNodeRPCService.java:7437) at org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService$Processor$getOrCreateDataPartitionTable.getResult(IConfigNodeRPCService.java:7417) 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.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)