Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Changing cover art fails and results in FileSystemException: Read-only file system #373

Open
maghiel opened this issue Feb 16, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@maghiel
Copy link

maghiel commented Feb 16, 2024

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

  1. mkdir /srv/mp3
  2. Copy an album in it (without coverart)
  3. chown -R airsonic:airsonic /srv/mp3
  4. chmod -R 777 /srv/mp3
  5. 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.backup

java.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 12306

java.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]
@maghiel maghiel added the bug Something isn't working label Feb 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant