Thumbnail generation failing with java error
All,
OS platform: Debian 6.0.4 (squeeze)
Subsonic version: 4.7
My Subsonic server went down during a power failure.
When it came back, some of my apt .list files were corrupt, including the one for openjdk, though this did not prevent Subsonic from starting.
Subsonic still basically works - I can browse to it on the web, my Android app still works, Periscope and Subwiji still work, etc.
Thumbnails that already exist are okay, but new ones fail to generate. subsonic.log reveals errors thrown by CoverArtController because of a "java.lang.NoClassDefFoundError" for the class "com.sun.imageio.plugins.jpeg.JPEGImageReader."
I have taken the following steps:
1) Replaced the "/var/lib/dpkg/info/openjdk-6-jre-lib.list" from a working box
2) Ran an apt-get clean
3) Ran an apt-get update
4) Removed the openjdk-6-jre-lib package
5) Removed the subsonic package after backing up the config
6) Reinstalled openjdk-6-jre-lib
7) Reinstalled subsonic
8) Restored subsonic configuration
Subsonic is still in the same state it was in before - it largely works but thumbnail generation fails.
Full error stack (tagged as "code" - let me know if that goes against convention here):
That stack is identical regardless of which thumb is being generated.
Can anyone point me in the right direction on this?
I suspect a jar file may have been corrupted, but I don't know how to confirm that or where the classpath is for this app.
OS platform: Debian 6.0.4 (squeeze)
Subsonic version: 4.7
My Subsonic server went down during a power failure.
When it came back, some of my apt .list files were corrupt, including the one for openjdk, though this did not prevent Subsonic from starting.
Subsonic still basically works - I can browse to it on the web, my Android app still works, Periscope and Subwiji still work, etc.
Thumbnails that already exist are okay, but new ones fail to generate. subsonic.log reveals errors thrown by CoverArtController because of a "java.lang.NoClassDefFoundError" for the class "com.sun.imageio.plugins.jpeg.JPEGImageReader."
I have taken the following steps:
1) Replaced the "/var/lib/dpkg/info/openjdk-6-jre-lib.list" from a working box
2) Ran an apt-get clean
3) Ran an apt-get update
4) Removed the openjdk-6-jre-lib package
5) Removed the subsonic package after backing up the config
6) Reinstalled openjdk-6-jre-lib
7) Reinstalled subsonic
8) Restored subsonic configuration
Subsonic is still in the same state it was in before - it largely works but thumbnail generation fails.
Full error stack (tagged as "code" - let me know if that goes against convention here):
- Code: Select all
[2013-04-16 12:51:52,324] WARN CoverArtController - Failed to create thumbnail for /media/music/KT Tunstall/Drastic Fantastic/cover.jpg
java.lang.NoClassDefFoundError: Could not initialize class com.sun.imageio.plugins.jpeg.JPEGImageReader
at com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.createReaderInstance(JPEGImageReaderSpi.java:107)
at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:317)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:519)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:503)
at javax.imageio.ImageIO.read(ImageIO.java:1433)
at javax.imageio.ImageIO.read(ImageIO.java:1342)
at net.sourceforge.subsonic.controller.CoverArtController.getCachedImage(CoverArtController.java:199)
at net.sourceforge.subsonic.controller.CoverArtController.handleRequest(CoverArtController.java:115)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:715)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:54)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:626)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
That stack is identical regardless of which thumb is being generated.
Can anyone point me in the right direction on this?
I suspect a jar file may have been corrupted, but I don't know how to confirm that or where the classpath is for this app.