mkuchin / docker-registry-web

Web UI for private docker registry v2
https://hub.docker.com/r/hyper/docker-registry-web/
GNU General Public License v2.0
535 stars 133 forks source link

Cannot get property 'Cmd' on null object. Stacktrace follows: #105

Open darkhook opened 3 years ago

darkhook commented 3 years ago

2021-06-21 03:21:47,347 [http-bio-8080-exec-6] ERROR errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [GET] /repo/tag/country_archives%252Fapi/202106201241

Cannot get property 'Cmd' on null object. Stacktrace follows:

java.lang.NullPointerException: Cannot get property 'Cmd' on null object

at docker.registry.web.RepositoryController$_tag_closure10.doCall(RepositoryController.groovy:120)

at docker.registry.web.RepositoryController.tag(RepositoryController.groovy:118)

at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)

at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)

at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)

at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)

at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.java:59)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)
urwrstkn8mare commented 2 years ago

getting the same here

nayasis commented 1 year ago

getting the same here.

In my case, error raised when parsing docker image's tag detail from registry:v2's API.

image

registry          | 172.19.0.4 - - [25/Jan/2023:09:15:22 +0000] "GET /v2/sample/manifests/1.0 HTTP/1.1" 200 2269 "" "Java/1.7.0_111"
registry-manager  | 2023-01-25 09:15:23,252 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver  - NullPointerException occurred when processing request: [GET] /repo/tag/sample/1.0
registry-manager  | Cannot get property 'Cmd' on null object. Stacktrace follows:
registry-manager  | java.lang.NullPointerException: Cannot get property 'Cmd' on null object
registry-manager  |     at docker.registry.web.RepositoryController$_tag_closure10.doCall(RepositoryController.groovy:120)
registry-manager  |     at docker.registry.web.RepositoryController.tag(RepositoryController.groovy:118)
registry-manager  |     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
registry-manager  |     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
registry-manager  |     at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
registry-manager  |     at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)
registry-manager  |     at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.java:59)
registry-manager  |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
registry-manager  |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
registry-manager  |     at java.lang.Thread.run(Thread.java:745)

Docker registry(v2)'s API respone is like below

$ curl https://localhost:5000/v2/sample/manifests/latest

{
   "schemaVersion": 1,
   "name": "sample",
   "tag": "latest",
   "architecture": "amd64",
   "fsLayers": [
      {
         "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
      },
      {
         "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
      },
      {
         "blobSum": "sha256:6e3729cf69e0ce2de9e779575a1fec8b7fb5efdfa822829290ab6d5d1bc3e797"
      }
   ],
   "history": [
      {
         "v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"echo 'Hello, new world!'\"],\"ArgsEscaped\":true,\"OnBuild\":null},\"created\":\"2022-12-09T01:20:31.321639501Z\",\"id\":\"a27097f185bb1fa65ec5af3ae27a8a43971eee91c904efba7e77c91ffc1a814b\",\"os\":\"linux\",\"parent\":\"ac79fb3a270aca6e4ed6599796544bdcbcc79530ed477adc41e362a0a8077f3d\",\"throwaway\":true}"
      },
      {
         "v1Compatibility": "{\"id\":\"ac79fb3a270aca6e4ed6599796544bdcbcc79530ed477adc41e362a0a8077f3d\",\"parent\":\"b83eec157318296d7e835ceb33a308706d324c70a3351e2a4d7c0c78b2f10083\",\"created\":\"2022-12-09T01:20:31.321639501Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop)  CMD [\\\"bash\\\"]\"]},\"throwaway\":true}"
      },
      {
         "v1Compatibility": "{\"id\":\"b83eec157318296d7e835ceb33a308706d324c70a3351e2a4d7c0c78b2f10083\",\"created\":\"2022-12-09T01:20:30.834419054Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:481dd2da6de71525248eba186feeeafcc73cc956ade0a196a4e8b0c2424e74b9 in / \"]}}"
      }
   ],
   "signatures": [
      {
         "header": {
            "jwk": {
               "crv": "P-256",
               "kid": "KAQW:ZOK2:7DP2:KDOA:RI6A:ARYC:RMAE:KSWJ:E2UZ:3TUE:PWDS:DCL3",
               "kty": "EC",
               "x": "Zy7Wi1OZpCcAHQ7JZNokQdK1DH9pBajXp1DipZxHn7g",
               "y": "A1AOMPNaxagG6-NcOtyWmLEEDHmQIBvqjqlaPKGQ8xA"
            },
            "alg": "ES256"
         },
         "signature": "IPgk4PbUyl5NnMSIc_bbE7H38AtsEafWm80R8e9z6t0Bpz24w9C2MMabUYc5XV7xMWSRh0Wa0Aw-tEq_o03LTw",
         "protected": "eyJmb3JtYXRMZW5ndGgiOjE2MjUsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAyMy0wMS0yNlQwMTo1MDo1MFoifQ"
      }
   ]
}