kagemomiji / airsonic-advanced

airsonic-advanced
GNU General Public License v3.0
165 stars 14 forks source link

[Bug]: Editing Playlists with Android Application Audinaut fails #368

Closed ummon29 closed 7 months ago

ummon29 commented 7 months ago

What happened?

Adding Songs in Audinaut to an existing Airsonic Advanced Playlist fails with an Error in the Logs of both Airsonic Advanced (see logs below) and Audinaut: Failed to update "Playlistname", please try later. Server error: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement.

Editing the Playlist in that way was working with 11.1.2 (Stable) and the versions before. It is broken after the upgrade to 11.1.3 (Stable).

Steps to reproduce

  1. Use Audinaut (Android - Fdroid Store) with Arisonic advanced 11.1.3.
  2. Create a new Playlist with one Song.
  3. Try to add another Song to this Playlist

Version

11.1.x (Edge)

Version Detail

11.1.3 (Stable)

Operating System

Linux (RaspberryPi OS)

Java Version

OpenJDK Runtime Environment (build 17.0.10+7-Debian-1deb11u1)

Database

Other

DB Detail

Build-in HSQL

Configuration paramter

EncryptionKeyPassword=xxx EncryptionKeySalt=xxx SettingsChanged=1707217826974 JWTKey=xxx IndexCreationInterval=7 IndexCreationHour=4 FastCacheEnabled=true OrganizeByFolderStructure=true UploadsFolder=%{['USER_MUSIC_FOLDERS'][0]}/Incoming ExcludePattern= IgnoreSymLinks=false IndexString=A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ) IgnoredArticles=The El La Los Las Le Les Der Die Das GenreSeparators=; Shortcuts=New Incoming Podcast PlaylistFolder=/var/playlists MusicFileTypes=mp3 ogg oga aac m4a m4b flac wav wma aif aiff ape mpc shn mka opus alm 669 mdl far xm mod fnk imf it liq wow mtm ptm rtm stm s3m ult dmf dbm med okt emod sfx m15 mtn amf gdm stx gmc psm j2b umx amd rad hsc flx gtk mgt mtp wv VideoFileTypes=flv avi mpg mpeg mp4 m4v mkv mov wmv ogv divx m2ts webm CoverArtFileTypes2=cover.jpg cover.png cover.gif folder.jpg jpg jpeg gif png CoverArtSource=TAGFILE CoverArtConcurrency=4 CoverArtQuality=90 SortAlbumsByYear=true GettingStartedEnabled=false WelcomeTitle=Welcome to Airsonic! WelcomeSubtitle= WelcomeMessage2= LoginMessage= Theme=default LocaleLanguage=en LocaleCountry= LocaleVariant= spring.liquibase.parameters.mysqlVarcharLimit=384 DbBackupUpdateInterval=720 DbBackupRetentionCount=1 server.servlet.session.timeout=2h HideIndexedFiles=true EnableCueIndexing=true

Proxy Server

none

client detail

Audinaut (Fdroid Store)

language

English

Relevant log output

at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:344) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1407) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:489) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3303) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2438) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:449) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:183) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:40) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:281) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:562) ~[spring-orm-5.3.31.jar!/:5.3.31]
... 137 common frames omitted
Caused by: java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: NOT NULL check constraint ; SYS_CT_10381 table: PLAYLIST column: NAME
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar!/:na]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.6.15.Final.jar!/:5.6.15.Final]
... 159 common frames omitted
Caused by: org.hsqldb.HsqlException: integrity constraint violation: NOT NULL check constraint ; SYS_CT_10381 table: PLAYLIST column: NAME
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.Table.enforceRowConstraints(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.Table.generateAndCheckData(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.StatementDML.update(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.StatementDML.executeUpdateStatement(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.StatementDML.getResult(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.7.1.jar!/:2.7.1]
... 164 common frames omitted
kagemomiji commented 7 months ago

@ummon29 I have created a corrected war file. Could you please try it out? https://github.com/kagemomiji/airsonic-advanced/actions/runs/7872121601/artifacts/1238274690

ummon29 commented 7 months ago

I tried and everything seems to work again. The error message is gone and songs added to playlists get into those playlists. Thank you for your fast response and for keeping airsonic-advanced alive. :-)

DutchComputerKid commented 7 months ago

This exact bug also made DSub not work with editing playlists, here I thought it was a problem with DSub itself but thats all fixed now as well. Nice!