UNAUTHORIZED_NUCLEUS_MINOR_VERSION_UPDATE: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-2.9.6 to aws.greengrass.Nucleus-2.10.0 but no component of type nucleus was incl...

0

Hi,

I have a greengrass core device running greengrass 2.9.6. It provisions itself without any difficulty. I have a private component which has the following dependency:

aws.greengrass.ShadowManager:
    VersionRequirement: ^2
    DependencyType: HARD

Now I create a deployment:

greengrass.create_deployment(
        targetArn=f"arn:aws:iot:{aws_region}:{aws_account_id}:thing/{thing_name}",
        components={
            f'{my_component_id}': {
                'componentVersion': my_component_version
            },
        },
        deploymentPolicies={
            'failureHandlingPolicy': 'DO_NOTHING',
            'componentUpdatePolicy': {
                'timeoutInSeconds': 120,
                'action': 'SKIP_NOTIFY_COMPONENTS'
            },
            'configurationValidationPolicy': {
                'timeoutInSeconds': 120
            }
        },
    )

The deployment gets created but after a while I get the following error:

UNAUTHORIZED_NUCLEUS_MINOR_VERSION_UPDATE: FAILED_NO_STATE_CHANGE: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-2.9.6 to aws.greengrass.Nucleus-2.10.0 but no component of type nucleus was included as target component, please add the desired nucleus version as top level component if you wish to update the nucleus to a different minor/major version

I found and explanation at https://docs.aws.amazon.com/greengrass/v2/developerguide/troubleshooting.html#deployment-error-nucleus-minor-version-update but not way to work around the issue.

I tried multiple deployment variations (adding only Nucleus, only ShadowManager, or both) but nothing seems to help. The strange things is that I never mention Nucleus version 2.10.0 in the deployment and I also don't see this in the dependencies of the public components.

greengrass.create_deployment(
        targetArn=f"arn:aws:iot:{aws_region}:{aws_account_id}:thing/{thing_name}",
        components={
            f'{my_component_id}': {
                'componentVersion': my_component_version
            },
            "aws.greengrass.Nucleus": {
                'componentVersion': "2.9.6",
            },
            "aws.greengrass.StreamManager": {
                "componentVersion": "2.1.4",
            },
            "aws.greengrass.ShadowManager": {
                "componentVersion": "2.3.1",
            },
        },
        deploymentPolicies={
            'failureHandlingPolicy': 'DO_NOTHING',
            'componentUpdatePolicy': {
                'timeoutInSeconds': 120,
                'action': 'SKIP_NOTIFY_COMPONENTS'
            },
            'configurationValidationPolicy': {
                'timeoutInSeconds': 120
            }
        },
    )

Has anyone seen this issue before?

Thanks, Leen

  • Your updated deployment will work because you are explicitly setting the Nucleus version to deploy as 2.9.6.

    Make sure the deployment is created properly by looking at the AWS Console for the deployment and observing what components are included.

  • It looks like a concurrency issue. The deployment is created a couple of seconds after the core device provisions itself (targetArn is the thing name, not a group). It looks as if the core device is updating itself to nucleus 2.10.0 and then the deployment arrives at the core device to install 2.9.6. When I revise the deployment after it fails to install, the second time it does work

asked a year ago82 views
No Answers

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions