Airsonic: new branch 1.6.x crash on non UTC timezone server.

Created on 12 May 2020  路  7Comments  路  Source: airsonic/airsonic

Problem description

After upgrading from 10.5.0 to 10.6.2 version I got an application crash.
I've tried 10.6.0, 10.6.2 with the same behavior; revert back to 10.5.0 from now.

2020-05-12 18:56:23.804  INFO --- org.airsonic.player.Application          : Starting Application v10.6.2-RELEASE on cronos.nox-rhea.org with PID 1932 (/var/airsonic/airsonic.war started by airsonic in /)
2020-05-12 18:56:23.808  INFO --- org.airsonic.player.Application          : The following profiles are active: embed
2020-05-12 18:56:28.876 ERROR --- o.a.p.spring.SpringLiquibase             : ===============================================
2020-05-12 18:56:28.877 ERROR --- o.a.p.spring.SpringLiquibase             : An exception occurred during database migration
2020-05-12 18:56:28.877 ERROR --- o.a.p.spring.SpringLiquibase             : A rollback file has been generated at /var/airsonic/rollback.sql
2020-05-12 18:56:28.877 ERROR --- o.a.p.spring.SpringLiquibase             : Execute it within your database to rollback any changes
2020-05-12 18:56:28.887 ERROR --- o.a.p.spring.SpringLiquibase             : The exception is as follows

liquibase.exception.DatabaseException: java.sql.SQLException: Cannot create PoolableConnectionFactory (The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.)
        at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:316) ~[liquibase-core-3.8.7.jar!/:na]
        at org.airsonic.player.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:25) ~[classes!/:10.6.2-RELEASE]
:

System information

  • Airsonic version: 10.6.2
  • Operating system: Linux Debian 9
  • Java version: OpenJDK 1.8.0_252
  • Proxy server: Apache 2.4 , None
  • Client: NA

Additional notes

`
cat /etc/timezone
Europe/Berlin

uname -a
Linux someurlname.domain.com 4.9.0-12-amd64 #1 SMP Debian 4.9.210-1 (2020-01-20) x86_64 GNU/Linux
`

data-scan stale feedback-provided documentation

Most helpful comment

OK, thank you.

MySQL JDBC Driver 5.1.33 - Time Zone Issue

It looks like a very similar problem. If you can refer to these tips, for MySQL, there seem to be options worth trying(The versions are quite different!). For example:

DatabaseConfigEmbedUrl=jdbc:mysql://localhost:3306/nox_airsonic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

It seems to be directly related to serverTimezone, but other options may also make sense, depending on which region you are using.

All 7 comments

More detailed logs:

2020-05-12 18:56:23.804  INFO --- org.airsonic.player.Application          : Starting Application v10.6.2-RELEASE on cronos.nox-rhea.org with PID 1932 (/var/airsonic/airsonic.war started by airsonic in /)
2020-05-12 18:56:23.808  INFO --- org.airsonic.player.Application          : The following profiles are active: embed
2020-05-12 18:56:28.876 ERROR --- o.a.p.spring.SpringLiquibase             : ===============================================
2020-05-12 18:56:28.877 ERROR --- o.a.p.spring.SpringLiquibase             : An exception occurred during database migration
2020-05-12 18:56:28.877 ERROR --- o.a.p.spring.SpringLiquibase             : A rollback file has been generated at /var/airsonic/rollback.sql
2020-05-12 18:56:28.877 ERROR --- o.a.p.spring.SpringLiquibase             : Execute it within your database to rollback any changes
2020-05-12 18:56:28.887 ERROR --- o.a.p.spring.SpringLiquibase             : The exception is as follows


liquibase.exception.DatabaseException: java.sql.SQLException: Cannot create PoolableConnectionFactory (The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.)
        at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:316) ~[liquibase-core-3.8.7.jar!/:na]
        at org.airsonic.player.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:25) ~[classes!/:10.6.2-RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1688) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:656) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1088) [spring-context-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.ui.context.support.UiApplicationContextUtils.initThemeSource(UiApplicationContextUtils.java:58) [spring-context-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.web.context.support.GenericWebApplicationContext.onRefresh(GenericWebApplicationContext.java:177) [spring-web-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:536) [spring-context-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:123) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:666) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:353) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:300) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:135) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
        at org.airsonic.player.Application.main(Application.java:207) [classes!/:10.6.2-RELEASE]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_252]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_252]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_252]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_252]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [airsonic.war:10.6.2-RELEASE]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [airsonic.war:10.6.2-RELEASE]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [airsonic.war:10.6.2-RELEASE]
        at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59) [airsonic.war:10.6.2-RELEASE]
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTime$
        at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:311) ~[liquibase-core-3.8.7.jar!/:na]
        ... 69 common frames omitted
Caused by: java.sql.SQLException: The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a mo$
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]
        at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665) ~[commons-dbcp2-2.7.0.jar!/:2.7.0]
        ... 72 common frames omitted

Could you tell me which DB you are using?

Hello,

sure, I'm using this mySQL.

Your MariaDB connection id is 96453
Server version: 10.1.44-MariaDB-0+deb9u1 Debian 9.11

My Database releated config section:

DatabaseMysqlMaxlength=512
DatabaseConfigType=EMBED
DatabaseConfigEmbedDriver=com.mysql.jdbc.Driver
DatabaseConfigEmbedPassword=[REMOVED]
DatabaseConfigEmbedUrl=jdbc:mysql://localhost:3306/nox_airsonic
DatabaseConfigEmbedUsername=nox_airsonic
DatabaseUsertableQuote=

OK, thank you.

MySQL JDBC Driver 5.1.33 - Time Zone Issue

It looks like a very similar problem. If you can refer to these tips, for MySQL, there seem to be options worth trying(The versions are quite different!). For example:

DatabaseConfigEmbedUrl=jdbc:mysql://localhost:3306/nox_airsonic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

It seems to be directly related to serverTimezone, but other options may also make sense, depending on which region you are using.

Tesshucom so many thanks...

you're right...

I'm feel soooo stupid to not tried to add "serverTimezone=UTC" to the setting line....

maybe this error and it's solution can be added to the documentation ?

regards

Such feedback has often been added to the documentation. Thank you for the valid information.

This issue has been automatically marked as stale because it has not had recent activity. Thank you for your contributions.

Was this page helpful?
0 / 5 - 0 ratings