Docker: unable to pull from nexus3 proxy since update to OSS 3.19.0-01 (Errror 500 & DockerProxyFacetImpl NullPointerException)

Since the update of our 3 Nexus Repository to version 3.19.0-01

|Edition|OSS|
|Build Revision|2dd186f4225540631fb7aac1a936ae61f7337f26|
|Build Timestamp|2019-09-25-1001-23448|

we can no longer pull images.
We have 2 local nexus, configured as proxy of a main nexus on cloud.

docker pull foo/image:tag

result in

Error response from daemon: received unexpected HTTP status: 500 Server Error

docker version is Docker version 19.03.2, build 6a30dfca03 on a linux (ubuntu 19.10) box

The nexus3 proxy logs :

     2019-10-03 09:00:04,607+0000 WARN  [qtp172103249-351]  docker org.sonatype.nexus.repository.docker.internal.V2Handlers - Error: GET /v2/xxxx/yyyyy/manifests/0.0.16
java.lang.NullPointerException: null
	at org.sonatype.nexus.repository.docker.internal.DockerProxyFacetImpl.getManifest(DockerProxyFacetImpl.java:921)
	at org.sonatype.nexus.repository.docker.internal.DockerProxyFacetImpl.getCachedContent(DockerProxyFacetImpl.java:310)
	at org.sonatype.nexus.repository.proxy.ProxyFacetSupport.maybeGetCachedContent(ProxyFacetSupport.java:369)
	at org.sonatype.nexus.repository.proxy.ProxyFacetSupport.get(ProxyFacetSupport.java:229)
	at org.sonatype.nexus.repository.proxy.ProxyHandler.handle(ProxyHandler.java:52)
	at org.sonatype.nexus.repository.view.Context.proceed(Context.java:80)
	at org.sonatype.nexus.repository.view.handlers.LastDownloadedHandler.handle(LastDownloadedHandler.java:63)
	at org.sonatype.nexus.repository.view.Context.proceed(Context.java:80)
	at org.sonatype.nexus.repository.storage.UnitOfWorkHandler.handle(UnitOfWorkHandler.java:39)
	at org.sonatype.nexus.repository.view.Context.proceed(Context.java:80)
	at org.sonatype.nexus.repository.view.Context$proceed.call(Unknown Source)
	at org.sonatype.nexus.repository.docker.internal.V2Handlers$_closure16.doCall(V2Handlers.groovy:273)
	at sun.reflect.GeneratedMethodAccessor383.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:418)
	at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:54)
	at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:124)
	at com.sun.proxy.$Proxy189.handle(Unknown Source)
	at org.sonatype.nexus.repository.view.Context.proceed(Context.java:80)

when I remove the image (docker rmi) I can pull successfully. But when the image is already loaded in my box I can no longer pull it.

I have found a workaround : I have disabled the support of v1 api in my nexus3 proxy repositiory configation. Docker pull was then ok!
I have then re-enabled support of v1 api, and docker pull was still ok.

May be you only need to re save you docker repo configuration.

Version 3.19.0 add support of a new option for docker proxy (NEXUS-19120) : Foreign Layers.
May be the config file has to be updated …

Still, just making a modif + save + restore original config + save should do the trick. Hopefully.

I’ve opened a bug to track this here:

For anyone affected, re-saving the configuration of the docker proxy repository will fix this.