[solved]: Synology Permissins on Cover Art downloading /java

Need help? Post your questions here.
User avatar
Matt Zornig
Contributor
Contributor
Posts: 242
Joined: 14 Feb 2017, 12:03
Has thanked: 38 times
Been thanked: 28 times

[solved]: Synology Permissins on Cover Art downloading /java

Unread post by Matt Zornig »

Code: Select all

=========================================================================================
VERSION: MADSONIC 6.2 | BUILD: 9080.619dd31.20161222.0327
REST: MADSONIC REST API v2.5.0, SUBSONIC REST API v1.14.0
OS: Linux 3.10.77 #8451 SMP Wed Jan 4 00:31:32 CST 2017 x86_64 GNU/Linux
SERVER: jetty/8.y.z-SNAPSHOT, java 1.8.0_121, Linux 3.10.77 (amd64)
HOST: Synology NAS 1815+ (DSM 6.0.2-8451 Update 9) | CPU: INTEL Atom C2538| ARCH: X64 | MEMORY: 6GB | HDD: 36TB, RAID6
BROWSER: FF 51.x
CLIENT: see browser
JAVA: ORACLE JDK 1.8.121
logged in as admin
========================================================================================
When trying to change a cover art, it gives the error:

java.io.FileNotFoundException: /volume1/Music/S/Sven Väth/1998 - Fusion [CDA]/cover.png (Permission denied)

error occours, when no/wrong permissions for the madsonic server are given to you media library-folders. This could be for some early or beta packages of madsonic for your DS
error occours, when no/wrong permissions for the madsonic server are given to you media library-folders. This could be for some early or beta packages of madsonic for your DS
Log:

Code: Select all

[2017-03-04 13:51:11,139] WARN CoverArtService - Failed to save cover art for album 453490
java.io.FileNotFoundException: /volume1/Music/S/Sven Väth/1998 - Fusion [CDA]/cover.png (Permission denied)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:270)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
        at org.madsonic.ajax.CoverArtService.saveCoverArt(CoverArtService.java:132)
        at org.madsonic.ajax.CoverArtService.setCoverArtImage(CoverArtService.java:82)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.directwebremoting.impl.CreatorModule$1.doFilter(CreatorModule.java:172)
        at org.directwebremoting.impl.CreatorModule.executeMethod(CreatorModule.java:184)
        at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:353)
        at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:306)
        at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:110)
        at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:211)
        at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:185)
        at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:144)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1507)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1495)
        at org.madsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1495)
        at org.madsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1495)
        at org.madsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:58)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1487)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:370)
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
        at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:745)
To solve this, you need to grant the madsonic user (which runs the madsonic package on your synology diskstation server) the permissions to write to your media/music folders which you have configured madsonic server should use for indexing your media/music.

On your DS:
go to control-panel and edit the shared-folder, which contains your media/music-library configured in Madsonic Server-&gt;Settings-&gt;Media folders
go to control-panel and edit the shared-folder, which contains your media/music-library configured in Madsonic Server->Settings->Media folders
synology-control-panel-shared-folders.png (39.29 KiB) Viewed 3878 times
change the permission for the madsonic user as in the screenshot
change the permission for the madsonic user as in the screenshot

Now the Madsonic server can download cover art and store it into the same folder, as the music/media is.
Post Reply