airsonic-advanced / airsonic-advanced/airsonic-advanced
Recent Docker image update broke my Airsonic database?
- Dominant language
- JavaScript
- Stars
- 1.4k
- Forks
- 159
- PR merge metrics
- No merged PRs in 30d
Description
Over the weekend, I updated my Dockerized AirSonic instance through my usual method (docker pull airsonicadvanced/airsonic-advanced:latest, re-create new container).
After doing so the AirSonic instance no longer starts, and I am seeing this output in the error log:
> 2022-03-08 04:54:38.015 INFO --- org.airsonic.player.Application : Starting Application using Java 14.0.2 on c62439330255 with PID 1 (/app/WEB-INF/classes started by root in /var)
> 2022-03-08 04:54:38.018 INFO --- org.airsonic.player.Application : No active profile set, falling back to default profiles: default
> 2022-03-08 04:55:11.950 INFO --- l.database.core.HsqlDatabase : Set default schema name to PUBLIC
> 2022-03-08 04:55:12.554 INFO --- l.l.StandardLockService : Successfully acquired change log lock
> 2022-03-08 04:55:14.471 INFO --- l.c.StandardChangeLogHistoryService : Reading from PUBLIC.DATABASECHANGELOG
> 2022-03-08 04:55:15.193 INFO --- l.l.StandardLockService : Successfully released change log lock
> 2022-03-08 05:01:39.596 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:01:49.609 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:01:59.618 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:02:09.628 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:02:19.637 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:02:29.648 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:02:39.657 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:02:49.666 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:02:59.674 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:03:09.683 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:03:19.691 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:03:29.700 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:03:39.709 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:03:49.717 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:03:59.727 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:04:09.735 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:04:19.743 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:04:29.751 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:04:39.768 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:04:49.775 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:04:59.783 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:05:09.792 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:05:19.803 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:05:29.811 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:05:39.821 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:05:49.829 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:05:59.836 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:06:09.846 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:06:19.854 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:06:29.862 INFO --- l.l.StandardLockService : Waiting for changelog lock....
> 2022-03-08 05:06:39.875 WARN --- ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'themeSource': Unsatisfied dependency expressed through method 'setSettingsService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'settingsService': Unsatisfied dependency expressed through field 'internetRadioDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'internetRadioDao': Unsatisfied dependency expressed through field 'jdbcTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.LockException: Could not acquire change log lock. Currently locked by 1c2389b50782 (172.17.0.2) since 3/6/22, 5:49 AM
I did another docker pull today and it pulled another new container image, but the issue persists.
I tried making a copy of the database and manually removing the changelog lock as described here: http://pmdzsite.online.fr/index.php?article40/unlock-standalone-airsonic-database
But all I got for trying that was more SQL errors, it's obvious something is wrong with the database I guess but I am not sure what since it uses this weird flatfile database that I'm not really sure how to troubleshoot effectively. I'm not sure what happened to it, it's running peacefully on a virtual machine with CEPH backed storage, so there's no hardware reason for any corruption to have occurred.
I think a possible solution may be to just start with a fresh database and try to copy the users and playlists and credentials manually, but I'm not familiar enough with the schema to do it yet, and my airsonic.script is so large it crashes every text editor I've tried but vi (166MB), so getting around and trying to learn the schema is frustrating.
I also tried letting AirSonic make a new empty db folder, then transplanting my airsonic.script, but the results are the same.
Is there any guidance on what schema I would need to copy out of airsonic.script to preserve the users\creds\playlists in a new DB? Or, is the issue I'm encountering something easily resolvable?
As a sidenote, if I rebuild this on a fresh DB, does AirSonic Advanced in Docker support a real database backend, like MySQL?
Contributor guide
Assessment
This issue has not been assessed yet.