Page 1 of 1

Feedback Beta1 Build 3462

Posted: 27 Apr 2013, 08:23
by megamorf
I run subsonic (standalone with jetty) on a raspberry pi and apart from the initial loading of the web interface the performance has been really good for music streaming. I exchanged the war files, got rid of the cached files in jetty and rebooted the server.

The web interface wouldn't load properly for 10 minutes, possibly due to the update procedure running in the background. I got some events in the subsonic.log that I'd like to be addressed/explained.

I have the feeling that this release generally consumes more CPU resources than the vanilla subsonic 4.8. top often shows a cpu load of ~99% when I do something in the web interface and now even in MiniSub. I got the feeling this has to do with the cover arts because loading in both the web interface and MiniSub felt rather sluggish.

Thumbnail creation failed

Code: Select all

[2013-04-26 23:23:02,037] WARN CoverArtController - Failed to create thumbnail for /var/music/Static X/Static-X - Cult Of Static/cover.jpg
java.lang.Exception: Unable to decode image.
        at net.sourceforge.subsonic.controller.CoverArtController.getCachedImage(CoverArtController.java:226)
        at net.sourceforge.subsonic.controller.CoverArtController.handleRequest(CoverArtController.java:126)
        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:124)
        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:174)
        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.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
OutOfMemory Errors

Code: Select all

[2013-04-26 23:24:23,649] WARN CoverArtController - Failed to create thumbnail for /var/music/Chainreactor/Chainreactor - 2011 - Insomniac/Cover.jpg
java.lang.OutOfMemoryError: Java heap space
        at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:92)
        at java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:415)
        at java.awt.image.Raster.createWritableRaster(Raster.java:944)
        at javax.imageio.ImageTypeSpecifier.createBufferedImage(ImageTypeSpecifier.java:1073)
        at javax.imageio.ImageReader.getDestination(ImageReader.java:2896)
        at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:998)
        at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:966)
        at javax.imageio.ImageIO.read(ImageIO.java:1448)
        at javax.imageio.ImageIO.read(ImageIO.java:1352)
        at net.sourceforge.subsonic.controller.CoverArtController.getCachedImage(CoverArtController.java:224)
        at net.sourceforge.subsonic.controller.CoverArtController.handleRequest(CoverArtController.java:126)
        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:124)
        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)

Album update failed - the log is full of these. I got 80000 lines for ~3500 songs and my library is much larger than that

Code: Select all

[2013-04-26 23:30:16,277] ERROR MediaScannerService - Failed to Update Album for file: /var/music/X-Rx/Unmoglich Erregend (2008) [320kb]/14 Crime.mp3
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [insert into album (id, path, name, SetName, artist, albumartist, song_count, duration_seconds, cover_art_path, play_count, last_played, comment, created, last_scanned, present, mediaFileId, genre, year) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; Attempt to insert null into a non-nullable column: column: NAME table: ALBUM in statement [insert into album (id, path, name, SetName, artist, albumartist, song_count, duration_seconds, cover_art_path, play_count, last_played, comment, created, last_scanned, present, mediaFileId, genre, year) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is java.sql.SQLException: Attempt to insert null into a non-nullable column: column: NAME table: ALBUM in statement [insert into album (id, path, name, SetName, artist, albumartist, song_count, duration_seconds, cover_art_path, play_count, last_played, comment, created, last_scanned, present, mediaFileId, genre, year) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
        at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:100)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
        at net.sourceforge.subsonic.dao.AbstractDao.update(AbstractDao.java:71)
        at net.sourceforge.subsonic.dao.AlbumDao.createOrUpdateAlbum(AlbumDao.java:155)
        at net.sourceforge.subsonic.service.MediaScannerService.updateAlbum(MediaScannerService.java:337)
        at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:244)
        at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:229)
        at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:232)
        at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:232)
        at net.sourceforge.subsonic.service.MediaScannerService.doScanLibrary(MediaScannerService.java:180)
        at net.sourceforge.subsonic.service.MediaScannerService.access$000(MediaScannerService.java:48)
        at net.sourceforge.subsonic.service.MediaScannerService$2.run(MediaScannerService.java:148)
Caused by: java.sql.SQLException: Attempt to insert null into a non-nullable column: column: NAME table: ALBUM in statement [insert into album (id, path, name, SetName, artist, albumartist, song_count, duration_seconds, cover_art_path, play_count, last_played, comment, created, last_scanned, present, mediaFileId, genre, year) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
        at org.hsqldb.jdbc.Util.throwError(Unknown Source)
        at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
        ... 13 more
I don't really like the inclusion of JamStash in your latest build. I prefer the previous release of MiniSub and like to know how the other users think about this.

Re: Feedback Beta1 Build 3462

Posted: 29 Apr 2013, 20:15
by Madsonic
Hi there,

I found this guide very useful:
votti wrote:I can highly recommend this guide for installation of Subsonic on the Pi:
http://mj2p.co.uk/?p=57

Java 8 with hard float really boosted the performance compared to my previous installation with java 6 and my system runs now really smoothly (with > 10'000 songs).

The guide also includes how to setup the jukebox mode, however I had no chance to test it yet.
best regards

Re: Feedback Beta1 Build 3462

Posted: 29 Apr 2013, 22:14
by megamorf
Madevil wrote:Hi there,

I found this guide very useful:
votti wrote:I can highly recommend this guide for installation of Subsonic on the Pi:
http://mj2p.co.uk/?p=57

Java 8 with hard float really boosted the performance compared to my previous installation with java 6 and my system runs now really smoothly (with > 10'000 songs).

The guide also includes how to setup the jukebox mode, however I had no chance to test it yet.
best regards
Thanks for the guide. I'll post feedback here once installed to confirm the possible performance gain.
The thumbnail creation errors as well as the album update errors don't seem to be related to java because the out-of-memory event occurred only once. Is there a way we can verify the integrity of embedded meta data with subsonic or at least get some debug information? It would be great if other users could check their subsonic log for these events during a re-scan of their media library.