H2 connection during upgrade

I’m going to upgrade my instance from the current 9.9.3 to 10.6. My SQ is deployed (still) as docker compose:

version: '2'
services:
  ldap01:
    image: rancher/external-service
  postgres-sonar-dev:
    image: postgres:11.0
    environment:
      POSTGRES_DB: sonar
      POSTGRES_PASSWORD: xxx
      POSTGRES_USER: sonar
    stdin_open: true
    volumes:
    - /srv/persistent/sonar-tks/postgres11:/var/lib/postgresql/data
    tty: true
    labels:
      io.rancher.container.pull_image: always
      io.rancher.scheduler.affinity:host_label: host=sonarqube-quality
  sonar-trial:
    image: sonarqube:9.9.3-community
    environment:
      sonar.jdbc.password: xxxx
      sonar.jdbc.url: jdbc:postgresql://postgres-sonar-dev:5432/sonar
      sonar.jdbc.username: sonar
      sonar.jdbc.driverClassName: org.postgresql.Driver
    volumes:
    - /srv/persistent/sonar-tks/sonarqube_conf:/opt/sonarqube/conf
    - /srv/persistent/sonar-tks/sonarqube_extensions:/opt/sonarqube/extensions
    - /srv/persistent/sonar-tks/logs:/opt/sonarqube/logs
    - /srv/persistent/sonar-tks/sonarqube_data:/opt/sonarqube/data
    - /srv/persistent/sonar-tks/sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
    links:
    - ldap01:ldap01.huuuge.in
    ports:
    - 9001:9000/tcp
    - 10443:10443/tcp
    - 10444:10444/tcp
    - 10445:10445/tcp
    labels:
      io.rancher.scheduler.affinity:host_label: host=sonarqube-quality
      io.rancher.container.start_once: 'true'

My DB connection looks like:

Database  H2
Database Version. 2.1.214 (2022-06-13)
Username 
URL jdbc:h2:tcp://127.0.0.1:9092/sonar
Driver H2 JDBC Driver
Driver Version 2.1.214 (2022-06-13)
Default transaction isolation TRANSACTION_READ_COMMITTED

During upgrade the image to 10.6-community I’m recieving errors:

2025.01.27 14:19:02 INFO  web[][o.s.p.ProcessEntryPoint] Starting Web Server
2025.01.27 14:19:03 INFO  web[][o.s.s.a.TomcatHttpConnectorFactory] Starting Tomcat on port 9000
2025.01.27 14:19:03 INFO  web[][o.s.s.p.LogServerVersion] SonarQube Server / 10.6.0.92116 / 832b6f0491b9d7775943b0e7fcc09ef936d23007
2025.01.27 14:19:03 WARN  web[][o.s.c.a.AnnotationConfigApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@7e38a7fe-org.sonar.server.platform.db.EmbeddedDatabaseFactory': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Unable to start database
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@7e38a7fe-org.sonar.server.platform.db.EmbeddedDatabaseFactory': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Unable to start database
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:628)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:929)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:225)
	at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:80)
	at org.sonar.server.platform.platformlevel.PlatformLevel1.start(PlatformLevel1.java:164)
	at org.sonar.server.platform.PlatformImpl.start(PlatformImpl.java:214)
	at org.sonar.server.platform.PlatformImpl.startLevel1Container(PlatformImpl.java:179)
	at org.sonar.server.platform.PlatformImpl.init(PlatformImpl.java:79)
	at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4462)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4914)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:794)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:248)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:925)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.sonar.server.app.EmbeddedTomcat.start(EmbeddedTomcat.java:72)
	at org.sonar.server.app.WebServer.start(WebServer.java:55)
	at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:97)
	at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:81)
	at org.sonar.server.app.WebServer.main(WebServer.java:104)
Caused by: java.lang.IllegalStateException: Unable to start database
	at org.sonar.server.platform.db.EmbeddedDatabase.startServer(EmbeddedDatabase.java:88)
	at org.sonar.server.platform.db.EmbeddedDatabase.start(EmbeddedDatabase.java:63)
	at org.sonar.server.platform.db.EmbeddedDatabaseFactory.start(EmbeddedDatabaseFactory.java:49)
	at org.sonar.core.platform.StartableBeanPostProcessor.postProcessBeforeInitialization(StartableBeanPostProcessor.java:33)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
	... 44 common frames omitted
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported database file version or invalid file header in file "/opt/sonarqube/data/sonar.mv.db" [90048-224]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
	at org.h2.message.DbException.get(DbException.java:212)
	at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:158)
	at org.h2.mvstore.db.Store.<init>(Store.java:142)
	at org.h2.engine.Database.<init>(Database.java:326)
	at org.h2.engine.Engine.openSession(Engine.java:92)
	at org.h2.engine.Engine.openSession(Engine.java:222)
	at org.h2.engine.Engine.createSession(Engine.java:201)
	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
	at org.h2.Driver.connect(Driver.java:59)
	at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
	at org.sonar.server.platform.db.EmbeddedDatabase.createDatabase(EmbeddedDatabase.java:115)
	at org.sonar.server.platform.db.EmbeddedDatabase.startServer(EmbeddedDatabase.java:79)
	... 50 common frames omitted
Caused by: org.h2.mvstore.MVStoreException: The write format 2 is smaller than the supported format 3 [2.2.224/5]
	at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996)
	at org.h2.mvstore.FileStore.getUnsupportedWriteFormatException(FileStore.java:943)
	at org.h2.mvstore.FileStore.processCommonHeaderAttributes(FileStore.java:547)
	at org.h2.mvstore.RandomAccessStore.readStoreHeader(RandomAccessStore.java:227)
	at org.h2.mvstore.FileStore.start(FileStore.java:916)
	at org.h2.mvstore.MVStore.<init>(MVStore.java:289)
	at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035)
	at org.h2.mvstore.db.Store.<init>(Store.java:133)
	... 61 common frames omitted

Originaly my postgres was on 9.5 I’s hoping an upgrade to 11 will solve the issue but unfortunately it didn’t. Any clue - what am I doing wrong, what should be updated/changed?
Thanks,

The problem is still valid. I tried to change the desired version to 10.1 and seems the message doesn’t appear there

Hey @tomki991!

First things first, you shouldn’t target any other version that 2025.1.

What is probably going on is that your JDBC config is not working, so it’s defaulting to the embedded H2 database.

Try mimicking what is set here:

Indeed the env variable are case sensitive and “.” != “_” … so we have the docker compose with postgres in one container from few years which was actually never used hahaha.
Thanks - now all works as expected

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.