Type_info type field empty

I’m tracking down not being to install a mender artifact created with mender-artifact 3.5.0 with mender-client 2.1.2. All artifacts have always been created with v3 flag.

Previously using mender-client 2.1.2 with artifact created with mender-artifact 3.2.1 works fine

The error i’m seeing on installation is:

ERRO[0000] Reading headers failed: installer: failed to read Artifact: type_info provides values not yet supported  module=standalone
DEBU[0000] statescript: timeout for executing scripts is not defined; using default of 1h0m0s seconds  module=executor
ERRO[0000] installer: failed to read Artifact: type_info provides values not yet supported  module=main

I am using --no-checksum-provide argument passed to artifact creation process as per the docs.
One important difference seems to be that the type field in the type-info file is empty in the artifact created with 3.5.0 compared to the one created with 3.2.1, and my understanding was that this was a required field. Has something changed? Is it a bug.

I have tested the mender-artifact out of yocto tree and the empty field is reproducible.

the type-info file with mender-artifact 3.2.1:

{"type":"rootfs-image","artifact_depends":{},"artifact_provides":{}}

the type-info file with mender-artifact 3.5.0:

{"type":"","artifact_provides":{"rootfs-image.version":"TY-K-TURN_2_0.0.28-5"},"clears_artifact_provides":["artifact_group","rootfs_image_checksum","rootfs-image.*"]}

I have also testing with latest upstream mender-artifact master (3f3eaa8d6da4c4b7c80909004d3dd7d9dc9c4568) and empty field is still produced.

@kacf can you help?

I have manually put back in the “type” to “rootfs-image” and the problem still exists, so I’ll need to investigate the other fields.

looks like all of the following is required to get past this error

-no-default-clears-provides --no-default-software-version --no-checksum-provide

albeit the type-info file now looks like this:

{"type":""}

so the question still remains is the required ‘type’ field no-longer required?

This is a bug! Good find, @dellgreen. Apparently this was introduced in 2019, so I’m surprised it has remained undetected for so long.

Regarding the flags you are using: Yes, they are required since they are introducing new features, which are on by default, and old clients do not support reading them.

The answer to your question about type-info is: The type field is required, and the client should not have accepted the Artifact without it. I have fixed the issue here. It means that new clients with this fix will not accept such corrupt Artifacts made with an old mender-artifact, but all clients will accept Artifacts made with the new mender-artifact, assuming the flags are used.

awesome thank you, mystery over :smiley:

1 Like