apache / apache/iotdb

[Bug] An error occurred when executing getDeviceToStorageGroup():root is not a legal path

Offen
#12,966 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
6.4k
Forks
1.2k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
115

Beschreibung

### Search before asking

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

### Version

1.3.2

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

Insert data via restful api, the request payload is as below:
```json
{
"time": "2024-07-18T11:14:37.669158+00:00",
"msg": "action_template_rendered",
"meta": {
"trace_tag": "QUERY_RENDER",
"rule_trigger_ts": [
1721301277619
],
"rule_ids": [
"rule_9f32_duplication"
],
"result": {
"url": "{http,{8,130,129,18},18080,\"/rest/v2/insertTablet\"}",
"timeout": 30000,
"port": 18080,
"path": "/rest/v2/insertTablet",
"method": "post",
"host": "8.130.129.18",
"headers": {
"Content-type": "application/json",
"Authorization": "******"
},
"body": "{\"is_aligned\":false,\"device\":\"mock_client_15\",\"data_types\":[\"FLOAT\",\"FLOAT\",\"FLOAT\",\"FLOAT\",\"FLOAT\",\"FLOAT\",\"FLOAT\",\"FLOAT\",\"TEXT\"],\"measurements\":[\"temperature\",\"humidity\",\"volume\",\"PM10\",\"pm25\",\"SO2\",\"NO2\",\"CO\",\"area\"],\"timestamps\":[1721301277657,1721301277657,1721301277657,1721301277657,1721301277657,1721301277657,1721301277657,1721301277657,1721301277657],\"values\":[[36.62,null,null,null,null,null,null,null,null],[null,78.38,null,null,null,null,null,null,null],[null,null,134.72,null,null,null,null,null,null],[null,null,null,203.57,null,null,null,null,null],[null,null,null,null,28.1,null,null,null,null],[null,null,null,null,null,16.15,null,null,null],[null,null,null,null,null,null,2.1,null,null],[null,null,null,null,null,null,null,29.68,null],[null,null,null,null,null,null,null,null,\"77\"]]}"
},
"client_ids": [
"mock_client_15"
],
"action_info": {
"type": "iotdb",
"name": "IoTDB"
}
},
"level": "debug"
}
```

response from restful api:
```json
{
"time": "2024-07-18T11:14:37.678849+00:00",
"msg": "action_failed",
"meta": {
"trace_tag": "ACTION",
"rule_trigger_ts": [
1721301277619
],
"rule_id": "rule_9f32_duplication",
"reason": {
"message": "An error occurred when executing getDeviceToStorageGroup():root is not a legal path",
"code": 507
},
"clientid": "mock_client_15",
"action_info": {
"type": "iotdb",
"name": "IoTDB"
}
},
"level": "debug"
}
```

Server logs
```
iotdb-service | org.apache.iotdb.db.exception.sql.StatementAnalyzeException: An error occurred when executing getDeviceToStorageGroup():root is not a legal path
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.cache.partition.PartitionCache.getStorageGroupCacheResult(PartitionCache.java:369)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.cache.partition.PartitionCache.getStorageGroupToDevice(PartitionCache.java:143)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.ClusterPartitionFetcher.getOrCreateSchemaPartition(ClusterPartitionFetcher.java:134)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.visitInternalCreateTimeseries(AnalyzeVisitor.java:2422)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.visitInternalCreateTimeseries(AnalyzeVisitor.java:198)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.statement.internal.InternalCreateTimeSeriesStatement.accept(InternalCreateTimeSeriesStatement.java:110)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor.process(StatementVisitor.java:135)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.Analyzer.analyze(Analyzer.java:47)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.planner.TreeModelPlanner.analyze(TreeModelPlanner.java:94)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.analyze(QueryExecution.java:253)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.(QueryExecution.java:121)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.createQueryExecutionForTreeModel(Coordinator.java:211)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.lambda$executeForTreeModel$0(Coordinator.java:175)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.execution(Coordinator.java:127)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.executeForTreeModel(Coordinator.java:170)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.AutoCreateSchemaExecutor.executeStatement(AutoCreateSchemaExecutor.java:86)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.AutoCreateSchemaExecutor.executeInternalCreateTimeseriesStatement(AutoCreateSchemaExecutor.java:508)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.AutoCreateSchemaExecutor.internalCreateTimeSeries(AutoCreateSchemaExecutor.java:472)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.AutoCreateSchemaExecutor.autoCreateTimeSeries(AutoCreateSchemaExecutor.java:130)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.NormalSchemaFetcher.processNormalTimeSeries(NormalSchemaFetcher.java:179)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.ClusterSchemaFetcher.fetchAndComputeSchemaWithAutoCreate(ClusterSchemaFetcher.java:177)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.schema.SchemaValidator.validate(SchemaValidator.java:48)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.validateSchema(AnalyzeVisitor.java:2694)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.visitInsertTablet(AnalyzeVisitor.java:2513)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeVisitor.visitInsertTablet(AnalyzeVisitor.java:198)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement.accept(InsertTabletStatement.java:137)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor.process(StatementVisitor.java:135)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.analyze.Analyzer.analyze(Analyzer.java:47)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.planner.TreeModelPlanner.analyze(TreeModelPlanner.java:94)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.analyze(QueryExecution.java:253)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.(QueryExecution.java:121)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.createQueryExecutionForTreeModel(Coordinator.java:211)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.lambda$executeForTreeModel$0(Coordinator.java:175)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.execution(Coordinator.java:127)
iotdb-service | at org.apache.iotdb.db.queryengine.plan.Coordinator.executeForTreeModel(Coordinator.java:170)
iotdb-service | at org.apache.iotdb.db.protocol.rest.v2.impl.RestApiServiceImpl.insertTablet(RestApiServiceImpl.java:244)
iotdb-service | at org.apache.iotdb.db.protocol.rest.v2.RestApi.insertTablet(RestApi.java:115)
iotdb-service | at jdk.internal.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
iotdb-service | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
iotdb-service | at java.base/java.lang.reflect.Method.invoke(Unknown Source)
iotdb-service | at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
iotdb-service | at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
iotdb-service | at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
iotdb-service | at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
iotdb-service | at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
iotdb-service | at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
iotdb-service | at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
iotdb-service | at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
iotdb-service | at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
iotdb-service | at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
iotdb-service | at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
iotdb-service | at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
iotdb-service | at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
iotdb-service | at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
iotdb-service | at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
iotdb-service | at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
iotdb-service | at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
iotdb-service | at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
iotdb-service | at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
iotdb-service | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)
iotdb-service | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
iotdb-service | at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
iotdb-service | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
iotdb-service | at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)
iotdb-service | at org.apache.iotdb.db.protocol.rest.filter.ApiOriginFilter.doFilter(ApiOriginFilter.java:37)
iotdb-service | at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
iotdb-service | at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
iotdb-service | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
iotdb-service | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
iotdb-service | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
iotdb-service | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
iotdb-service | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
iotdb-service | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
iotdb-service | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
iotdb-service | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
iotdb-service | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
iotdb-service | at org.eclipse.jetty.server.Server.handle(Server.java:516)
iotdb-service | at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
iotdb-service | at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
iotdb-service | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
iotdb-service | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
iotdb-service | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
iotdb-service | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
iotdb-service | at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
iotdb-service | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
iotdb-service | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
iotdb-service | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
iotdb-service | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
iotdb-service | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
iotdb-service | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
iotdb-service | at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
iotdb-service | at java.base/java.lang.Thread.run(Unknown Source)
```

### What did you expect to see?

Data inserted successfully

### What did you see instead?

An error happended: 2024-07-18 10:59:47,463 [qtp1038651236-54] WARN o.a.i.d.p.r.v.h.ExceptionHandler:84 - An error occurred when executing getDeviceToStorageGroup():root is not a legal path

### Anything else?

_No response_

### Are you willing to submit a PR?

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Reproduzieren Sie die REST v2 insertTablet-Anfrage aus dem Issue und verfolgen Sie anschließend den Fehler von RestApiServiceImpl.insertTablet über ClusterPartitionFetcher.getOrCreateSchemaPartition bis zu PartitionCache.getStorageGroupCacheResult. Ermitteln Sie, warum der Gerätepfad als ungültig abgelehnt wird, und überprüfen Sie, dass dieselbe Anfrage ohne den getDeviceToStorageGroup-Fehler abgeschlossen wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
api, databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.