aws-greengrass / aws-greengrass-client-device-auth

Apache License 2.0
2 stars 3 forks source link

(ParseException): Component configuration not working on the first try #394

Closed jjedd97 closed 1 year ago

jjedd97 commented 1 year ago

Describe the bug When deploying this component with my desired config it errors out with: "Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME "" at line 1, column 1." if I redeploy with a blank config and then my actual config again it works.

To Reproduce I have greengrass v2 set up in a docker container and use a config similar to the permissive policy.

Expected behavior If the config is functional it should work on the first try.

Actual behavior I have to redeploy to use this component

Environment

Additional context

2023-08-11T14:28:13.041Z [ERROR] (pool-2-thread-29) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: Unable to parse group configuration. {node=services.aws.greengrass.clientdevices.Auth.configuration.deviceGroups, serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW, event=initialized} java.lang.IllegalArgumentException: Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.aws.greengrass.clientdevices.auth.configuration.GroupConfiguration$GroupConfigurationBuilder["definitions"]->java.util.LinkedHashMap["MyPermissiveDeviceGroup"]) at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4393) at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.updateDeviceGroups(ClientDevicesAuthService.java:264) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.configChangeHandler(ClientDevicesAuthService.java:204) at com.aws.greengrass.config.Topics.subscribe(Topics.java:478) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.subscribeToConfigChanges(ClientDevicesAuthService.java:162) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.install(ClientDevicesAuthService.java:107) at com.aws.greengrass.lifecyclemanager.Lifecycle.lambda$handleCurrentStateNew$5(Lifecycle.java:502) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 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:829) Caused by: com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.aws.greengrass.clientdevices.auth.configuration.GroupConfiguration$GroupConfigurationBuilder["definitions"]->java.util.LinkedHashMap["MyPermissiveDeviceGroup"]) at com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47) at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:2047) at com.fasterxml.jackson.databind.DeserializationContext.handleInstantiationProblem(DeserializationContext.java:1400) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapInstantiationProblem(BeanDeserializerBase.java:1866) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:202) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4388) ... 12 more Caused by: com.aws.greengrass.clientdevices.auth.configuration.parser.ParseException: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.generateParseException(RuleExpression.java:312)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.jj_consume_token(RuleExpression.java:250)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.thingExpression(RuleExpression.java:132)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.unaryExpression(RuleExpression.java:124)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalANDExpression(RuleExpression.java:91)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalORExpression(RuleExpression.java:54)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.expression(RuleExpression.java:46)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.Start(RuleExpression.java:18)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition.<init>(GroupDefinition.java:30)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder.build(GroupDefinition.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200)
... 20 more

2023-08-11T14:28:13.042Z [ERROR] (pool-2-thread-29) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-errored. {serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW} com.aws.greengrass.clientdevices.auth.configuration.parser.ParseException: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.generateParseException(RuleExpression.java:312)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.jj_consume_token(RuleExpression.java:250)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.thingExpression(RuleExpression.java:132)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.unaryExpression(RuleExpression.java:124)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalANDExpression(RuleExpression.java:91)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalORExpression(RuleExpression.java:54)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.expression(RuleExpression.java:46)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.Start(RuleExpression.java:18)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition.<init>(GroupDefinition.java:30)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder.build(GroupDefinition.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4388)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.updateDeviceGroups(ClientDevicesAuthService.java:264)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.configChangeHandler(ClientDevicesAuthService.java:204)
at com.aws.greengrass.config.Topics.subscribe(Topics.java:478)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.subscribeToConfigChanges(ClientDevicesAuthService.java:162)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.install(ClientDevicesAuthService.java:107)
at com.aws.greengrass.lifecyclemanager.Lifecycle.lambda$handleCurrentStateNew$5(Lifecycle.java:502)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
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:829)

2023-08-11T14:28:13.043Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-set-state. {serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW, newState=ERRORED} 2023-08-11T14:28:13.045Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.status.FleetStatusService: fss-status-update-published. Status update published to FSS. {trigger=ERRORED_COMPONENT, serviceName=FleetStatusService, currentState=RUNNING} 2023-08-11T14:28:13.045Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-set-state. {serviceName=aws.greengrass.clientdevices.Auth, currentState=ERRORED, newState=NEW} 2023-08-11T14:28:13.049Z [ERROR] (pool-2-thread-29) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: Unable to parse group configuration. {node=services.aws.greengrass.clientdevices.Auth.configuration.deviceGroups, serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW, event=initialized} java.lang.IllegalArgumentException: Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME"" at line 1, column 1. Was expecting: "thingName:" ...

at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.aws.greengrass.clientdevices.auth.configuration.GroupConfiguration$GroupConfigurationBuilder["definitions"]->java.util.LinkedHashMap["MyPermissiveDeviceGroup"]) at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4393) at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.updateDeviceGroups(ClientDevicesAuthService.java:264) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.configChangeHandler(ClientDevicesAuthService.java:204) at com.aws.greengrass.config.Topics.subscribe(Topics.java:478) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.subscribeToConfigChanges(ClientDevicesAuthService.java:162) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.install(ClientDevicesAuthService.java:107) at com.aws.greengrass.lifecyclemanager.Lifecycle.lambda$handleCurrentStateNew$5(Lifecycle.java:502) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 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:829) Caused by: com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.aws.greengrass.clientdevices.auth.configuration.GroupConfiguration$GroupConfigurationBuilder["definitions"]->java.util.LinkedHashMap["MyPermissiveDeviceGroup"]) at com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47) at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:2047) at com.fasterxml.jackson.databind.DeserializationContext.handleInstantiationProblem(DeserializationContext.java:1400) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapInstantiationProblem(BeanDeserializerBase.java:1866) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:202) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4388) ... 12 more Caused by: com.aws.greengrass.clientdevices.auth.configuration.parser.ParseException: Encountered " "NAME"" at line 1, column 1. Was expecting: "thingName:" ...

at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.generateParseException(RuleExpression.java:312)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.jj_consume_token(RuleExpression.java:250)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.thingExpression(RuleExpression.java:132)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.unaryExpression(RuleExpression.java:124)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalANDExpression(RuleExpression.java:91)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalORExpression(RuleExpression.java:54)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.expression(RuleExpression.java:46)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.Start(RuleExpression.java:18)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition.<init>(GroupDefinition.java:30)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder.build(GroupDefinition.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200)
... 20 more

2023-08-11T14:28:13.049Z [ERROR] (pool-2-thread-29) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-errored. {serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW} com.aws.greengrass.clientdevices.auth.configuration.parser.ParseException: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.generateParseException(RuleExpression.java:312)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.jj_consume_token(RuleExpression.java:250)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.thingExpression(RuleExpression.java:132)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.unaryExpression(RuleExpression.java:124)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalANDExpression(RuleExpression.java:91)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalORExpression(RuleExpression.java:54)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.expression(RuleExpression.java:46)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.Start(RuleExpression.java:18)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition.<init>(GroupDefinition.java:30)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder.build(GroupDefinition.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4388)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.updateDeviceGroups(ClientDevicesAuthService.java:264)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.configChangeHandler(ClientDevicesAuthService.java:204)
at com.aws.greengrass.config.Topics.subscribe(Topics.java:478)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.subscribeToConfigChanges(ClientDevicesAuthService.java:162)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.install(ClientDevicesAuthService.java:107)
at com.aws.greengrass.lifecyclemanager.Lifecycle.lambda$handleCurrentStateNew$5(Lifecycle.java:502)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
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:829)

2023-08-11T14:28:13.049Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-set-state. {serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW, newState=ERRORED} 2023-08-11T14:28:13.051Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.status.FleetStatusService: fss-status-update-published. Status update published to FSS. {trigger=ERRORED_COMPONENT, serviceName=FleetStatusService, currentState=RUNNING} 2023-08-11T14:28:13.051Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-set-state. {serviceName=aws.greengrass.clientdevices.Auth, currentState=ERRORED, newState=NEW} 2023-08-11T14:28:13.054Z [ERROR] (pool-2-thread-29) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: Unable to parse group configuration. {node=services.aws.greengrass.clientdevices.Auth.configuration.deviceGroups, serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW, event=initialized} java.lang.IllegalArgumentException: Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.aws.greengrass.clientdevices.auth.configuration.GroupConfiguration$GroupConfigurationBuilder["definitions"]->java.util.LinkedHashMap["MyPermissiveDeviceGroup"]) at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4393) at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.updateDeviceGroups(ClientDevicesAuthService.java:264) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.configChangeHandler(ClientDevicesAuthService.java:204) at com.aws.greengrass.config.Topics.subscribe(Topics.java:478) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.subscribeToConfigChanges(ClientDevicesAuthService.java:162) at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.install(ClientDevicesAuthService.java:107) at com.aws.greengrass.lifecyclemanager.Lifecycle.lambda$handleCurrentStateNew$5(Lifecycle.java:502) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 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:829) Caused by: com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder, problem: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.aws.greengrass.clientdevices.auth.configuration.GroupConfiguration$GroupConfigurationBuilder["definitions"]->java.util.LinkedHashMap["MyPermissiveDeviceGroup"]) at com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47) at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:2047) at com.fasterxml.jackson.databind.DeserializationContext.handleInstantiationProblem(DeserializationContext.java:1400) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapInstantiationProblem(BeanDeserializerBase.java:1866) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:202) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4388) ... 12 more Caused by: com.aws.greengrass.clientdevices.auth.configuration.parser.ParseException: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.generateParseException(RuleExpression.java:312)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.jj_consume_token(RuleExpression.java:250)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.thingExpression(RuleExpression.java:132)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.unaryExpression(RuleExpression.java:124)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalANDExpression(RuleExpression.java:91)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalORExpression(RuleExpression.java:54)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.expression(RuleExpression.java:46)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.Start(RuleExpression.java:18)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition.<init>(GroupDefinition.java:30)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder.build(GroupDefinition.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200)
... 20 more

2023-08-11T14:28:13.054Z [ERROR] (pool-2-thread-29) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-errored. {serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW} com.aws.greengrass.clientdevices.auth.configuration.parser.ParseException: Encountered " "NAME "" at line 1, column 1. Was expecting: "thingName:" ...

at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.generateParseException(RuleExpression.java:312)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.jj_consume_token(RuleExpression.java:250)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.thingExpression(RuleExpression.java:132)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.unaryExpression(RuleExpression.java:124)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalANDExpression(RuleExpression.java:91)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.logicalORExpression(RuleExpression.java:54)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.expression(RuleExpression.java:46)
at com.aws.greengrass.clientdevices.auth.configuration.parser.RuleExpression.Start(RuleExpression.java:18)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition.<init>(GroupDefinition.java:30)
at com.aws.greengrass.clientdevices.auth.configuration.GroupDefinition$GroupDefinitionBuilder.build(GroupDefinition.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293)
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4388)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.updateDeviceGroups(ClientDevicesAuthService.java:264)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.configChangeHandler(ClientDevicesAuthService.java:204)
at com.aws.greengrass.config.Topics.subscribe(Topics.java:478)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.subscribeToConfigChanges(ClientDevicesAuthService.java:162)
at com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService.install(ClientDevicesAuthService.java:107)
at com.aws.greengrass.lifecyclemanager.Lifecycle.lambda$handleCurrentStateNew$5(Lifecycle.java:502)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
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:829)

2023-08-11T14:28:13.054Z [INFO] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-set-state. {serviceName=aws.greengrass.clientdevices.Auth, currentState=NEW, newState=BROKEN} 2023-08-11T14:28:13.055Z [ERROR] (aws.greengrass.clientdevices.Auth-lifecycle) com.aws.greengrass.clientdevices.auth.ClientDevicesAuthService: service-broken. service is broken. Deployment is needed. {serviceName=aws.greengrass.clientdevices.Auth, currentState=BROKEN} 2023-08-11T14:28:13.446Z [WARN] (pool-2-thread-16) com.aws.greengrass.deployment.DeploymentConfigMerger: merge-config. merge-config-service BROKEN. {serviceName=aws.greengrass.clientdevices.Auth} 2023-08-11T14:28:13.447Z [ERROR] (pool-2-thread-16) com.aws.greengrass.deployment.activator.DeploymentActivator: merge-config. Deployment failed. {deploymentId=bcc6d0da-30cb-4db1-a622-c914bf26d0a0} com.aws.greengrass.deployment.exceptions.ServiceUpdateException: Service aws.greengrass.clientdevices.Auth in broken state after deployment at com.aws.greengrass.deployment.DeploymentConfigMerger.waitForServicesToStart(DeploymentConfigMerger.java:200) at com.aws.greengrass.deployment.activator.DefaultActivator.activate(DefaultActivator.java:83) at com.aws.greengrass.deployment.DeploymentConfigMerger.updateActionForDeployment(DeploymentConfigMerger.java:152) at com.aws.greengrass.deployment.DeploymentConfigMerger.lambda$mergeInNewConfig$0(DeploymentConfigMerger.java:104) at com.aws.greengrass.lifecyclemanager.UpdateSystemPolicyService.runUpdateActions(UpdateSystemPolicyService.java:95) at com.aws.greengrass.lifecyclemanager.UpdateSystemPolicyService.lambda$startup$0(UpdateSystemPolicyService.java:169) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 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:829)

jcosentino11 commented 1 year ago

Hi @jjedd97, taking a look, are you able to share the exact configuration that was used on the first attempt that failed?

And to confirm, did you do any deployments with configuration prior? May have been that you need to RESET some configuration values before deployment.

jjedd97 commented 1 year ago

My configuration follows https://docs.aws.amazon.com/greengrass/v2/developerguide/client-device-auth-component.html - using a permissive policy) The workflow is that I deploy with that policy initially and it fails, I then deploy again with no config and it succeeds, once that is done I re-add that policy and it succeeds I have also noticed that if I restart my docker-container the error can happen again.

jcosentino11 commented 1 year ago

Thanks for the confirmation/report, will repro and get back to you, thanks!

jcosentino11 commented 1 year ago

@jjedd97 you mentioned in your initial description that you used a config similar to the permissive config. Just to be precise would you mind pasting the exact configuration document you're using?

jcosentino11 commented 1 year ago

I just deployed a fresh greengrass core device on docker using the following configuration successfully

{
  "reset": [],
  "merge": {
    "deviceGroups": {
      "formatVersion": "2021-03-05",
      "definitions": {
        "MyPermissiveDeviceGroup": {
          "selectionRule": "thingName: *",
          "policyName": "MyPermissivePolicy"
        }
      },
      "policies": {
        "MyPermissivePolicy": {
          "AllowAll": {
            "statementDescription": "Allow client devices to perform all actions.",
            "operations": [
              "*"
            ],
            "resources": [
              "*"
            ]
          }
        }
      }
    }
  }
}

So knowing your exact config may help, and also try doing a RESET: [""] in your deployment and see if the error goes away

jjedd97 commented 1 year ago

I want to avoid posting the exact policy but I did find an issue with the way my selectionRule was formatted. Fixing that does resolve the issue. It does beg the question on why the reconfigured deployment would report a success, but I'm fine to close this

jcosentino11 commented 1 year ago

Yeah, it's hard to say without configuration and logs--glad to hear the issue is resolved!