Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fails to Return Images for Certain Items in Fedora #1

Open
kaladay opened this issue Sep 12, 2024 · 7 comments
Open

Fails to Return Images for Certain Items in Fedora #1

kaladay opened this issue Sep 12, 2024 · 7 comments
Assignees

Comments

@kaladay
Copy link

kaladay commented Sep 12, 2024

Certain images stored in Fedora and presented in an exhibit do not load in the Mirador viewer.

For instance, here is a work in one of our exhibits. Here is the tif that should be loaded by the image server in Fedora.

While the image is downloadable, it's not visible when it's served via Cantaloupe. For instance, here is its parent manifest, and here is that manifest loaded in mirador:

https://projectmirador.org/embed/?iiif-content=https://api.library.tamu.edu/iiif-service/fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9

As you can see, the image doesn't load. Let's take a closer look just at Cantaloupe.

This is the Cantaloupe Image API Response.

We can request the full image like this.

When we do that, the image server returns a 0 byte object and an HTTP 200 response. If we request a smaller version of that same image, the same thing happens.

This appears to happen with any request toward this base image; the server responds with a 200 and a 0 byte object.

Acceptance Criteria

  • Determine the cause of the 0 byte object and 200 Success response for certain resources like the one above so that we have documentation on how to address when this problem occurs in the future.
@kaladay kaladay self-assigned this Sep 13, 2024
@kaladay
Copy link
Author

kaladay commented Sep 17, 2024

I can confirm that the same image exists on the DEV server and it works fine.
I suspect there is some sort of problem with bad cache.
The API end point might be a good way to fix this by allowing for manual deletion of the cache data.
see: https://cantaloupe-project.github.io/manual/5.0/endpoints.html#HTTP%20API

However, there also appears to be existing upstream bug that describes nearly this exact issue:

And there is this related issue:

This is fixed in v5.0.6:

I suggest upgrading Cantaloupe.
After that, utilize the /tasks API end point (which needs an a user and password specified) for setting:

{
  "verb" : "PurgeItemFromCache",
  "identifier" : "MyIdentifier"
}

to purge a specific item.

@kaladay
Copy link
Author

kaladay commented Sep 17, 2024

Another possible cause are these permanent redirects.
This is what the IRIIIF server shows for the problematic URL (https://projectmirador.org/embed/?iiif-content=https://api.library.tamu.edu/iiif-service/fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9):


2024-09-17 19:27:13.562 DEBUG 1 --- [io-8080-exec-31] o.s.security.web.FilterChainProxy        : Securing GET /fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9
2024-09-17 19:27:13.563 DEBUG 1 --- [io-8080-exec-31] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:13.563 DEBUG 1 --- [io-8080-exec-31] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:13.563 DEBUG 1 --- [io-8080-exec-31] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [GET /fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9] with attributes [permitAll]
2024-09-17 19:27:13.563 DEBUG 1 --- [io-8080-exec-31] o.s.security.web.FilterChainProxy        : Secured GET /fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9
2024-09-17 19:27:13.563 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.DispatcherServlet        : GET "/iiif-service/fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9", parameters={}
2024-09-17 19:27:13.564 DEBUG 1 --- [io-8080-exec-31] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.fedora.pcdm.FedoraPcdmPresentationManifestController#manifest(HttpServletResponse, ManifestRequest)
2024-09-17 19:27:13.564 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:13.565 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:13.566  INFO 1 --- [io-8080-exec-31] e.t.i.service.AbstractManifestService    : Manifest already in redis: 238977d1-fad9-41a8-9d35-bfcb07fda994 (1726254351804)
2024-09-17 19:27:13.566  INFO 1 --- [io-8080-exec-31] e.t.i.service.AbstractManifestService    : Manifest requested: 3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/9
2024-09-17 19:27:13.566 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2024-09-17 19:27:13.566 DEBUG 1 --- [io-8080-exec-31] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.016 DEBUG 1 --- [io-8080-exec-30] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.017 DEBUG 1 --- [io-8080-exec-30] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.017 DEBUG 1 --- [io-8080-exec-30] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.017 DEBUG 1 --- [io-8080-exec-30] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.017 DEBUG 1 --- [io-8080-exec-30] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.017 DEBUG 1 --- [io-8080-exec-30] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.017 DEBUG 1 --- [io-8080-exec-30] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.025 DEBUG 1 --- [io-8080-exec-18] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.026 DEBUG 1 --- [io-8080-exec-18] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.026 DEBUG 1 --- [io-8080-exec-18] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.026 DEBUG 1 --- [io-8080-exec-18] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.026 DEBUG 1 --- [io-8080-exec-18] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.035 DEBUG 1 --- [io-8080-exec-27] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.035 DEBUG 1 --- [io-8080-exec-27] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.035 DEBUG 1 --- [io-8080-exec-27] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.036 DEBUG 1 --- [io-8080-exec-27] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.036 DEBUG 1 --- [io-8080-exec-27] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.036 DEBUG 1 --- [io-8080-exec-27] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.036 DEBUG 1 --- [io-8080-exec-27] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.036 DEBUG 1 --- [io-8080-exec-27] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.037 DEBUG 1 --- [io-8080-exec-27] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.037 DEBUG 1 --- [io-8080-exec-27] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.037 DEBUG 1 --- [io-8080-exec-27] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.037 DEBUG 1 --- [io-8080-exec-27] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.037 DEBUG 1 --- [io-8080-exec-27] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.037 DEBUG 1 --- [io-8080-exec-27] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.046 DEBUG 1 --- [io-8080-exec-25] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.046 DEBUG 1 --- [io-8080-exec-25] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.046 DEBUG 1 --- [io-8080-exec-25] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.047 DEBUG 1 --- [io-8080-exec-25] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.047 DEBUG 1 --- [io-8080-exec-25] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.047 DEBUG 1 --- [io-8080-exec-25] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.047 DEBUG 1 --- [io-8080-exec-25] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.047 DEBUG 1 --- [io-8080-exec-25] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.048 DEBUG 1 --- [io-8080-exec-25] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.048 DEBUG 1 --- [io-8080-exec-25] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.048 DEBUG 1 --- [io-8080-exec-25] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.048 DEBUG 1 --- [io-8080-exec-25] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.048 DEBUG 1 --- [io-8080-exec-25] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.048 DEBUG 1 --- [io-8080-exec-25] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.051 DEBUG 1 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.051 DEBUG 1 --- [nio-8080-exec-1] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.052 DEBUG 1 --- [nio-8080-exec-1] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.053 DEBUG 1 --- [nio-8080-exec-1] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.053 DEBUG 1 --- [nio-8080-exec-1] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.053 DEBUG 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.053 DEBUG 1 --- [nio-8080-exec-1] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.139 DEBUG 1 --- [io-8080-exec-26] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.139 DEBUG 1 --- [io-8080-exec-26] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.139 DEBUG 1 --- [io-8080-exec-26] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.139 DEBUG 1 --- [io-8080-exec-26] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.139 DEBUG 1 --- [io-8080-exec-26] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.139 DEBUG 1 --- [io-8080-exec-26] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.140 DEBUG 1 --- [io-8080-exec-26] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.342 DEBUG 1 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.342 DEBUG 1 --- [nio-8080-exec-7] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.343 DEBUG 1 --- [nio-8080-exec-7] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.344 DEBUG 1 --- [nio-8080-exec-7] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.344 DEBUG 1 --- [nio-8080-exec-7] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.344 DEBUG 1 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.344 DEBUG 1 --- [nio-8080-exec-7] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.352 DEBUG 1 --- [nio-8080-exec-5] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.353 DEBUG 1 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.353 DEBUG 1 --- [nio-8080-exec-5] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.372 DEBUG 1 --- [io-8080-exec-15] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.372 DEBUG 1 --- [io-8080-exec-15] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.373 DEBUG 1 --- [io-8080-exec-15] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.373 DEBUG 1 --- [io-8080-exec-15] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.373 DEBUG 1 --- [io-8080-exec-15] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.373 DEBUG 1 --- [io-8080-exec-15] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.373 DEBUG 1 --- [io-8080-exec-15] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.373 DEBUG 1 --- [io-8080-exec-15] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.374 DEBUG 1 --- [io-8080-exec-15] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.374 DEBUG 1 --- [io-8080-exec-15] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.374 DEBUG 1 --- [io-8080-exec-15] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.375 DEBUG 1 --- [io-8080-exec-15] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.375 DEBUG 1 --- [io-8080-exec-15] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.375 DEBUG 1 --- [io-8080-exec-15] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request
2024-09-17 19:27:14.538 DEBUG 1 --- [io-8080-exec-31] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:27:14.539 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 19:27:14.540 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 19:27:14.540 DEBUG 1 --- [io-8080-exec-31] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request

However, a working URL (like https://projectmirador.org/embed/?iiif-content=https://api.library.tamu.edu/iiif-service/fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/10) produces:

2024-09-17 19:34:29.466 DEBUG 1 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy        : Securing GET /fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/10
2024-09-17 19:34:29.468 DEBUG 1 --- [nio-8080-exec-7] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 19:34:29.468 DEBUG 1 --- [nio-8080-exec-7] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 19:34:29.468 DEBUG 1 --- [nio-8080-exec-7] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [GET /fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/10] with attributes [permitAll]
2024-09-17 19:34:29.468 DEBUG 1 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy        : Secured GET /fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/10
2024-09-17 19:34:29.468 DEBUG 1 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet        : GET "/iiif-service/fedora/presentation/3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/10", parameters={}
2024-09-17 19:34:29.470 DEBUG 1 --- [nio-8080-exec-7] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.fedora.pcdm.FedoraPcdmPresentationManifestController#manifest(HttpServletResponse, ManifestRequest)
2024-09-17 19:34:29.471 DEBUG 1 --- [nio-8080-exec-7] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 19:34:29.472 DEBUG 1 --- [nio-8080-exec-7] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 19:34:29.472  INFO 1 --- [nio-8080-exec-7] e.t.i.service.AbstractManifestService    : Manifest already in redis: 403fd18a-12f6-4053-b9ea-f723c078a646 (1726260996782)
2024-09-17 19:34:29.473  INFO 1 --- [nio-8080-exec-7] e.t.i.service.AbstractManifestService    : Manifest requested: 3b/6f/c3/25/3b6fc325-f6ca-41d8-b91e-8c5db3be8c13/london-collection_objects/10
2024-09-17 19:34:29.477 DEBUG 1 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2024-09-17 19:34:29.477 DEBUG 1 --- [nio-8080-exec-7] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request

@kaladay
Copy link
Author

kaladay commented Sep 17, 2024

I have also observed this stack trace in the logs:

 Servlet.service() for servlet [dispatcherServlet] in context with path [/iiif-service] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: "500 Internal Server Error<EOL><EOL>I/O error reading image metadata!<EOL><EOL><EOL>javax.imageio.IIOException: I/O error reading image metadata!<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.readMetadata(TIFFImageReader.java:883)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.seekToImage(TIFFImageReader.java:830)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.seekToImage(TIFFImageReader.java:788)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.getWidth(TIFFImageReader.java:1046)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.AbstractIIOImageReader.getSize(AbstractIIOImageReader.java:196)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.AbstractIIOImageReader.getNumImages(AbstractIIOImageReader.java:149)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.tiff.TIFFImageReader.isPyramidal(TIFFImageReader.java:134)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.tiff.TIFFImageReader.getNumResolutions(TIFFImageReader.java:124)<EOL>?at edu.illinois.library.cantaloupe.processor.AbstractImageIOProcessor.readInfo(AbstractImageIOProcessor.java:77)<EOL>?at edu.illinois.library.cantaloupe.cache.InfoService.readInfo(InfoService.java:220)<EOL>?at edu.illinois.library.cantaloupe.cache.InfoService.getOrReadInfo(InfoService.java:153)<EOL>?at edu.illinois.library.cantaloupe.cache.CacheFacade.getOrReadInfo(CacheFacade.java:67)<EOL>?at edu.illinois.library.cantaloupe.resource.AbstractRequestHandler.getOrReadInfo(AbstractRequestHandler.java:39)<EOL>?at edu.illinois.library.cantaloupe.reso
urce.InformationRequestHandler.handle(InformationRequestHandler.java:287)<EOL>?at edu.illinois.library.cantaloupe.resource.iiif.v2.InformationResource.doGET(InformationResource.java:85)<EOL>?at edu.illinois.library.cantaloupe.resource.HandlerServlet.handle(HandlerServlet.java:97)<EOL>?at edu.illinois.library.cantaloupe.resource.HandlerServlet.doGet(HandlerServlet.java:35)<EOL>?at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)<EOL>?at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)<EOL>?at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)<EOL>?at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)<EOL>?at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)<EOL>?at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)<EOL>?at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)<EOL>?at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)<EOL>?at org.eclipse.jetty.server.Server.handle(Server.java:516)<EOL>?at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)<EOL>?at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)<EOL>?at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)<EOL>?at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)<EOL>?at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)<EOL>?at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)<EOL>?at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)<EOL>?at org.eclipse.jetty.util.threa
d.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)<EOL>?at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)<EOL>?at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773)<EOL>?at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905)<EOL>?at java.base/java.lang.Thread.run(Thread.java:840)<EOL>Caused by: java.io.EOFException<EOL>?at it.geosolutions.imageio.stream.eraf.EnhancedRandomAccessFile.readUnsignedShort(EnhancedRandomAccessFile.java:978)<EOL>?at it.geosolutions.imageio.stream.input.FileImageInputStreamExtImpl.readUnsignedShort(FileImageInputStreamExtImpl.java:130)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFIFD.initialize(TIFFIFD.java:237)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageMetadata.initializeFromStream(TIFFImageMetadata.java:148)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.readMetadata(TIFFImageReader.java:877)<EOL>?... 44 more<EOL><EOL>"] with root cause
org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: "500 Internal Server Error<EOL><EOL>I/O error reading image metadata!<EOL><EOL><EOL>javax.imageio.IIOException: I/O error reading image metadata!<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.readMetadata(TIFFImageReader.java:883)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.seekToImage(TIFFImageReader.java:830)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.seekToImage(TIFFImageReader.java:788)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.getWidth(TIFFImageReader.java:1046)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.AbstractIIOImageReader.getSize(AbstractIIOImageReader.java:196)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.AbstractIIOImageReader.getNumImages(AbstractIIOImageReader.java:149)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.tiff.TIFFImageReader.isPyramidal(TIFFImageReader.java:134)<EOL>?at edu.illinois.library.cantaloupe.processor.codec.tiff.TIFFImageReader.getNumResolutions(TIFFImageReader.java:124)<EOL>?at edu.illinois.library.cantaloupe.processor.AbstractImageIOProcessor.readInfo(AbstractImageIOProcessor.java:77)<EOL>?at edu.illinois.library.cantaloupe.cache.InfoService.readInfo(InfoService.java:220)<EOL>?at edu.illinois.library.cantaloupe.cache.InfoService.getOrReadInfo(InfoService.java:153)<EOL>?at edu.illinois.library.cantaloupe.cache.CacheFacade.getOrReadInfo(CacheFacade.java:67)<EOL>?at edu.illinois.library.cantaloupe.resource.AbstractRequestHandler.getOrReadInfo(AbstractRequestHandler.java:39)<EOL>?at edu.illinois.library.cantaloupe.resource.InformationRequestHandler.handle(InformationRequestHandler.java:287)<EOL>?at edu.illinois.library.cantaloupe.resource.iiif.v2.InformationResource.doGET(InformationResource.java:85)<EOL>?at edu.illinois.library.cantaloupe.resource.HandlerServlet.handle(HandlerServlet.java:97)<EOL>?at edu.illinois.library.cantaloupe.resourc
e.HandlerServlet.doGet(HandlerServlet.java:35)<EOL>?at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)<EOL>?at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)<EOL>?at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)<EOL>?at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)<EOL>?at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)<EOL>?at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)<EOL>?at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)<EOL>?at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)<EOL>?at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)<EOL>?at org.eclipse.jetty.server.Server.handle(Server.java:516)<EOL>?at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)<EOL>?at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)<EOL>?at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)<EOL>?at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)<EOL>?at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)<EOL>?at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)<EOL>?at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)<EOL>?at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatY
ouKill.java:129)<EOL>?at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)<EOL>?at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773)<EOL>?at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905)<EOL>?at java.base/java.lang.Thread.run(Thread.java:840)<EOL>Caused by: java.io.EOFException<EOL>?at it.geosolutions.imageio.stream.eraf.EnhancedRandomAccessFile.readUnsignedShort(EnhancedRandomAccessFile.java:978)<EOL>?at it.geosolutions.imageio.stream.input.FileImageInputStreamExtImpl.readUnsignedShort(FileImageInputStreamExtImpl.java:130)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFIFD.initialize(TIFFIFD.java:237)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageMetadata.initializeFromStream(TIFFImageMetadata.java:148)<EOL>?at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader.readMetadata(TIFFImageReader.java:877)<EOL>?... 44 more<EOL><EOL>"
  at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:100) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:170) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:825) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:783) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:717) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:340) ~[spring-web-5.3.24.jar!/:5.3.24]
  at edu.tamu.iiif.service.AbstractManifestService.fetchImageInfo(AbstractManifestService.java:285) ~[classes!/:na]
  at edu.tamu.iiif.service.AbstractManifestService.getImageInfo(AbstractManifestService.java:494) ~[classes!/:na]
  at edu.tamu.iiif.service.AbstractManifestService.generateImageResource(AbstractManifestService.java:218) ~[classes!/:na]
  at edu.tamu.iiif.service.AbstractManifestService.generateImage(AbstractManifestService.java:197) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.getFedoraRdfCanvas(AbstractFedoraPcdmManifestService.java:284) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateCanvas(AbstractFedoraPcdmManifestService.java:77) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:244) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateOrderedCanvases(AbstractFedoraPcdmManifestService.java:255) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.getCanvases(AbstractFedoraPcdmManifestService.java:196) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.AbstractFedoraPcdmManifestService.generateSequence(AbstractFedoraPcdmManifestService.java:70) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmPresentationManifestService.getSequences(FedoraPcdmPresentationManifestService.java:88) ~[classes!/:na]
  at edu.tamu.iiif.service.fedora.pcdm.FedoraPcdmPresentationManifestService.generateManifest(FedoraPcdmPresentationManifestService.java:56) ~[classes!/:na]
  at edu.tamu.iiif.service.AbstractManifestService.getManifest(AbstractManifestService.java:131) ~[classes!/:na]
  at edu.tamu.iiif.controller.AbstractManifestController.sendManifest(AbstractManifestController.java:26) ~[classes!/:na]
  at edu.tamu.iiif.controller.fedora.pcdm.FedoraPcdmPresentationManifestController.manifest(FedoraPcdmPresentationManifestController.java:25) ~[classes!/:na]
  at jdk.internal.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) ~[na:na]
  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
  at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:670) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.24.jar!/:5.3.24]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:150) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.6.9.jar!/:5.6.9]
  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) ~[spring-boot-actuator-2.6.14.jar!/:2.6.14]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar!/:5.3.24]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:769) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.69.jar!/:na]
  at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

@kaladay
Copy link
Author

kaladay commented Sep 17, 2024

Looking at the manifest, the thumbnail at least works:

But changing it to a png:

Results in a 0-byte length (empty) PNG file of the thumbnail.

The first link (the JPG), which works, does not cause a log in the IRIIIF service on refresh.
The second link (the PNG), which does not work, causes a log in the IRIIIF service on refresh.
The response log for the second link are:

2024-09-17 20:20:17.333 DEBUG 1 --- [io-8080-exec-31] o.s.security.web.FilterChainProxy        : Securing HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 20:20:17.333 DEBUG 1 --- [io-8080-exec-31] s.s.w.c.SecurityContextPersistenceFilter : Set SecurityContextHolder to empty SecurityContext
2024-09-17 20:20:17.334 DEBUG 1 --- [io-8080-exec-31] o.s.s.w.a.AnonymousAuthenticationFilter  : Set SecurityContextHolder to anonymous SecurityContext
2024-09-17 20:20:17.334 DEBUG 1 --- [io-8080-exec-31] o.s.s.w.a.i.FilterSecurityInterceptor    : Authorized filter invocation [HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect] with attributes [permitAll]
2024-09-17 20:20:17.334 DEBUG 1 --- [io-8080-exec-31] o.s.security.web.FilterChainProxy        : Secured HEAD /resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect
2024-09-17 20:20:17.334 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.DispatcherServlet        : HEAD "/iiif-service/resources/30066df1-4152-3352-9b77-a1a8902f31cf/redirect", parameters={}
2024-09-17 20:20:17.334 DEBUG 1 --- [io-8080-exec-31] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to edu.tamu.iiif.controller.ResourceController#redirectToResource(String)
2024-09-17 20:20:17.334 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 20:20:17.335 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 20:20:17.335 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Fetching Redis Connection from RedisConnectionFactory
2024-09-17 20:20:17.335 DEBUG 1 --- [io-8080-exec-31] o.s.d.redis.core.RedisConnectionUtils    : Closing Redis Connection.
2024-09-17 20:20:17.335 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.view.RedirectView        : View [RedirectView], model {}
2024-09-17 20:20:17.335 DEBUG 1 --- [io-8080-exec-31] o.s.web.servlet.DispatcherServlet        : Completed 301 MOVED_PERMANENTLY
2024-09-17 20:20:17.335 DEBUG 1 --- [io-8080-exec-31] s.s.w.c.SecurityContextPersistenceFilter : Cleared SecurityContextHolder to complete request

@kaladay
Copy link
Author

kaladay commented Sep 17, 2024

The (forked) cantaloup is also behind:

@kaladay
Copy link
Author

kaladay commented Sep 20, 2024

PROD likely has a mis-configuration where the fallback processor is being set to a stream processor:

- env:
  - name: PROCESSOR_FALLBACK_RETRIEVAL_STRATEGY
    value: StreamStrategy
  - name: PROCESSOR_STREAM_RETRIEVAL_STRATEGY
    value: CacheStrategy

According to the documentation on fallback processor:

The fallback retrieval strategy (processor.fallback_retrieval_strategy) controls how an incompatible StreamSource/FileProcessor combination is dealt with.

A StreamStrategy probably should be used here and is likely not valid as a fallback.
Only DownloadStrategy, CacheStrategy, and AbortStrategy are allowed based on the documentation.

@kaladay
Copy link
Author

kaladay commented Sep 24, 2024

The data was brought in from PROD to PRE.
The collection works on PRE:

I think many of the bad images are a result of incorrectly imported collections or bad cache.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant