docker-client icon indicating copy to clipboard operation
docker-client copied to clipboard

Container and ContainerConfig fields in Image inspect removed

Open LEDfan opened this issue 1 year ago • 1 comments

Is this a BUG REPORT or FEATURE REQUEST?: Yes

(thank you for merging and updating my previous RP!)

Description

In Docker v1.26 two fields were removed from the ImageInfo field, see: https://docs.docker.com/engine/deprecated/#container-and-containerconfig-fields-in-image-inspect

I think we can again add @Nullable, but I'm not sure whether a fallback is possible, therefore I'm opening this issue instead of opening a PR.

How to reproduce

  • use Docker v1.26
  • inspect an image

What do you expect

It works.

What happened instead

An exception is thrown, see below.

Software:

  • docker version: 26.0.0
  • Spotify's docker-client version: master

Full backtrace

Caused by: jakarta.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `org.mandas.docker.client.messages.ImmutableImageInfo$Builder`, problem: Cannot build ImageInfo, some of required attributes are not set [container, containerConfig]
 at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 3958]
	at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:745) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:675) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:697) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:691) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:205) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:691) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:674) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:422) ~[jersey-client-3.1.5.jar:na]
	at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2434) ~[docker-client-7.0.8-OA-1.jar:na]
	... 14 common frames omitted
Caused by: com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `org.mandas.docker.client.messages.ImmutableImageInfo$Builder`, problem: Cannot build ImageInfo, some of required attributes are not set [container, containerConfig]
 at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 3958]
	at com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:2058) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.DeserializationContext.handleInstantiationProblem(DeserializationContext.java:1411) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapInstantiationProblem(BeanDeserializerBase.java:1898) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:202) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:2079) ~[jackson-databind-2.15.3.jar:2.15.3]
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1229) ~[jackson-databind-2.15.3.jar:2.15.3]
	at org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:829) ~[jersey-media-json-jackson-3.1.5.jar:na]
	at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:233) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:212) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1072) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:919) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:853) ~[jersey-common-3.1.5.jar:na]
	at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:298) ~[jersey-client-3.1.5.jar:na]
	at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:742) ~[jersey-client-3.1.5.jar:na]
	... 25 common frames omitted
Caused by: java.lang.IllegalStateException: Cannot build ImageInfo, some of required attributes are not set [container, containerConfig]
	at org.mandas.docker.client.messages.ImmutableImageInfo$Builder.build(ImmutableImageInfo.java:942) ~[docker-client-7.0.8-OA-1.jar:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.finishBuild(BuilderBasedDeserializer.java:200) ~[jackson-databind-2.15.3.jar:2.15.3]
	... 38 common frames omitted


LEDfan avatar Apr 04 '24 09:04 LEDfan

Hi @LEDfan,

(happy to accept contributions)

The error you are describing is not happening in the master branch where the proper nullables have been added. The only problem is that they are not part of a release yet given that this is considered a breaking change (for this library).

dmandalidis avatar Apr 05 '24 04:04 dmandalidis

Hi @dmandalidis , thank you for your reply! Indeed it is working on the master branch, I thought I pulled the latest changes, but must have a mistake. Thanks!

LEDfan avatar Apr 18 '24 07:04 LEDfan