performant-software / core-data-cloud

Core Data. In the Cloud.
0 stars 1 forks source link

Update IIIF server Java version #317

Open dleadbetter opened 6 days ago

dleadbetter commented 6 days ago

Currently, the IIIF server is using Java 11 to run Cantaloupe as specified in the docs.

We should upgrade to the latest on staging and test.

The Cantaloupe error logs are showing errors like:

javax.imageio.IIOException: Inconsistent metadata read from stream
    at java.desktop/com.sun.imageio.plugins.jpeg.JPEGMetadata.<init>(JPEGMetadata.java:363)
    at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReader.getImageMetadata(JPEGImageReader.java:1129)
    at edu.illinois.library.cantaloupe.processor.codec.jpeg.JPEGImageReader.getMetadata(JPEGImageReader.java:96)
    at edu.illinois.library.cantaloupe.processor.codec.jpeg.JPEGImageReader.getMetadata(JPEGImageReader.java:39)
    at edu.illinois.library.cantaloupe.processor.AbstractImageIOProcessor.readInfo(AbstractImageIOProcessor.java:95)
    at edu.illinois.library.cantaloupe.cache.InfoService.readInfo(InfoService.java:220)
    at edu.illinois.library.cantaloupe.cache.InfoService.getOrReadInfo(InfoService.java:153)
    at edu.illinois.library.cantaloupe.cache.CacheFacade.getOrReadInfo(CacheFacade.java:67)
    at edu.illinois.library.cantaloupe.resource.AbstractRequestHandler.getOrReadInfo(AbstractRequestHandler.java:39)
    at edu.illinois.library.cantaloupe.resource.ImageRequestHandler.handle(ImageRequestHandler.java:378)
    at edu.illinois.library.cantaloupe.resource.iiif.v3.ImageResource.doGET(ImageResource.java:130)
    at edu.illinois.library.cantaloupe.resource.HandlerServlet.handle(HandlerServlet.java:97)
    at edu.illinois.library.cantaloupe.resource.HandlerServlet.doGet(HandlerServlet.java:35)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    at org.eclipse.jetty.server.Server.handle(Server.java:516)
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
    at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905)
    at java.base/java.lang.Thread.run(Thread.java:829)

This looks like it may be an issue with the Java2d processor and the Java version. From the processor docs:

This processor relies the JDK's Image I/O JPEG plugin. This plugin implements the JFIF standard strictly and is known to fail to read certain images with error message such as, "Inconsistent metadata read from stream." If this turns out to be a problem, try updating to the latest JRE version and see if that fixes it. As a last resort, consider using TurboJpegProcessor instead.