You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Short version:
Changing cover art fails and results in an exception.
java.nio.file.FileSystemException: /srv/mp3/Artist - Album (1970) [FLAC]/cover.png: Read-only file system
As a last resort I've changed ownership and group to airsonic:airsonic and mode to 777, still fails.
Long version:
I like anything to have as little permissions as possible.
So I've set up my music dirs to be only readable by a group the airsonic user is in.
To be able for airsonic to change or add coverart, I wanted to just simply touch cover.png and cover.png.backup with ownership granted to airsonic. In other words: all media readable by airsonic and only coverart given full permissions to airsonic. This resulted in exceptions. So I started taking steps back, created a new path and added it to the library, still fails.
Steps to reproduce
/srv has ownership root:root
mkdir /srv/mp3
Copy an album in it (without coverart)
chown -R airsonic:airsonic /srv/mp3
chmod -R 777 /srv/mp3
Go to the web interface and try to change the coverart
Results in:
Failed to download image.
java.nio.file.FileSystemException: /srv/mp3/Artist - Album (1970) [FLAC]/cover.png: Read-only file system
Note that I first had
ProtectSystem=strict
ProtectHome=true
Changing them back to
ProtectSystem=full
ProtectHome=false
has no effect.
Version
11.1.x (Edge)
Version Detail
11.1.3 – February 6, 2024 at 1:14:16 PM CET [Commit: 154574b]
Operating System
openSUSE Leap 15.5
Java Version
Apache Tomcat/9.0.83, java 17.0.10
Database
Other
DB Detail
hsql
Configuration paramter
.
Proxy Server
Apache 2
client detail
Firefox
language
English
Relevant log output
2024-02-16 21:44:03.757 WARN --- o.a.p.service.CoverArtService : Failed to create image file backup /srv/mp3/Artist - Album (1970) [FLAC]/cover.png.backupjava.nio.file.FileSystemException: /srv/mp3/Artist - Album (1970) [FLAC]/cover.png -> /srv/mp3/Artist - Album (1970) [FLAC]/cover.png.backup: Read-only file system at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100) ~[na:na] at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) ~[na:na] at java.base/sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:477) ~[na:na] at java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:266) ~[na:na] at java.base/java.nio.file.Files.move(Files.java:1432) ~[na:na] at org.airsonic.player.service.CoverArtService.backupCoverArt(CoverArtService.java:191) ~[classes!/:11.1.3] at org.airsonic.player.service.CoverArtService.saveCoverArt(CoverArtService.java:177) ~[classes!/:11.1.3] at org.airsonic.player.service.CoverArtService.setCoverArtImageFromUrl(CoverArtService.java:145) ~[classes!/:11.1.3] at org.airsonic.player.ajax.CoverArtWSController.setCoverArtImage(CoverArtWSController.java:40) ~[classes!/:11.1.3] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:569) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:511) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:94) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:524) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:458) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:144) ~[spring-messaging-5.3.31.jar!/:5.3.31] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]2024-02-16 21:44:03.781 WARN --- o.a.p.ajax.CoverArtWSController : Failed to save cover art for media file 12306java.nio.file.FileSystemException: /srv/mp3/Artist - Album (1970) [FLAC]/cover.png: Read-only file system at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100) ~[na:na] at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) ~[na:na] at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[na:na] at java.base/sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:248) ~[na:na] at java.base/sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:110) ~[na:na] at java.base/java.nio.file.Files.deleteIfExists(Files.java:1191) ~[na:na] at java.base/java.nio.file.Files.copy(Files.java:3148) ~[na:na] at org.airsonic.player.service.CoverArtService.saveCoverArt(CoverArtService.java:180) ~[classes!/:11.1.3] at org.airsonic.player.service.CoverArtService.setCoverArtImageFromUrl(CoverArtService.java:145) ~[classes!/:11.1.3] at org.airsonic.player.ajax.CoverArtWSController.setCoverArtImage(CoverArtWSController.java:40) ~[classes!/:11.1.3] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:569) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:511) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:94) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:524) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:458) ~[spring-messaging-5.3.31.jar!/:5.3.31] at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:144) ~[spring-messaging-5.3.31.jar!/:5.3.31] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
The text was updated successfully, but these errors were encountered:
What happened?
Short version:
Changing cover art fails and results in an exception.
java.nio.file.FileSystemException: /srv/mp3/Artist - Album (1970) [FLAC]/cover.png: Read-only file system
As a last resort I've changed ownership and group to airsonic:airsonic and mode to 777, still fails.
Long version:
I like anything to have as little permissions as possible.
So I've set up my music dirs to be only readable by a group the airsonic user is in.
To be able for airsonic to change or add coverart, I wanted to just simply touch cover.png and cover.png.backup with ownership granted to airsonic. In other words: all media readable by airsonic and only coverart given full permissions to airsonic. This resulted in exceptions. So I started taking steps back, created a new path and added it to the library, still fails.
Steps to reproduce
/srv has ownership root:root
Results in:
Failed to download image.
java.nio.file.FileSystemException: /srv/mp3/Artist - Album (1970) [FLAC]/cover.png: Read-only file system
Note that I first had
ProtectSystem=strict
ProtectHome=true
Changing them back to
ProtectSystem=full
ProtectHome=false
has no effect.
Version
11.1.x (Edge)
Version Detail
11.1.3 – February 6, 2024 at 1:14:16 PM CET [Commit: 154574b]
Operating System
openSUSE Leap 15.5
Java Version
Apache Tomcat/9.0.83, java 17.0.10
Database
Other
DB Detail
hsql
Configuration paramter
.
Proxy Server
Apache 2
client detail
Firefox
language
English
Relevant log output
The text was updated successfully, but these errors were encountered: