iotdb icon indicating copy to clipboard operation
iotdb copied to clipboard

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

Open oliverzgy opened this issue 1 year ago • 3 comments

Search before asking

  • [X] I searched in the 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:

{
  "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:

{
  "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.<init>(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.<init>(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!

oliverzgy avatar Jul 18 '24 11:07 oliverzgy

Hi, this is your first issue in IoTDB project. Thanks for your report. Welcome to join the community!

github-actions[bot] avatar Jul 18 '24 11:07 github-actions[bot]

mock_client_15 is not a legal device id for IoTDB, you can change it to for example root.db.mock_client_15.

HTHou avatar Jul 19 '24 01:07 HTHou

mock_client_15 is not a legal device id for IoTDB, you can change it to for example root.db.mock_client_15.

It works. Thanks for your timing help! By the way is there any plan to add a default prefix if the device didn't contain full path?

oliverzgy avatar Jul 19 '24 01:07 oliverzgy