Sonarqube is not starting after change of SQL DB server change to 2022

Must-share information (formatted with Markdown):

  • which versions are you using (SonarQube, Scanner, Plugin, and any relevant extension):9.9.4
  • how is SonarQube deployed: zip, Docker, Helm: zip
  • what are you trying to achieve: connect to new db server
  • what have you tried so far to achieve this; changed sonar properties to point to new db server

Do not share screenshots of logs – share the text itself (bonus points for being well-formatted)!

Hi
we have Sonarqube v 9.9.4 running in RHEL 8 Linux

currently connected to SQL 2016.
want to change to SQL DB server 2022.
when connecting with new db server sql 2022, it is not working throwing below error, elasticsearch is not coming up.

is SonarQube 9.9.4 is compatible with SQL 2022?
Do I need to change db config anywhere else other than sonar.properties?

below is jdbc jar file location:

pwd
/opt/sonarqube-9.9.4.87374/lib/jdbc/mssql
[use@server mssql]$ ls -lrt
total 1408
-rw-r--r-- 1 puser   ops 1440728 Feb  6 14:21 mssql-jdbc-11.2.2.jre17.jar

sonar.properties

sonar.jdbc.url=jdbc:sqlserver://dbservername;databaseName=sqdb-2022

startup error

2024.05.28 18:10:08 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube-9.9.4.87374/temp
2024.05.28 18:10:08 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:42629]
2024.05.28 18:10:08 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[ELASTICSEARCH] from [/opt/sonarqube-9.9.4.87374/elasticsearch]: /opt/sonarqube-9.9.4.87374/elasticsearch/bin/elasticsearch
2024.05.28 18:10:08 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2024.05.28 18:10:21 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2024.05.28 18:10:21 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[WEB_SERVER] from [/opt/sonarqube-9.9.4.87374]: /usr/lib/jvm/java-17-openjdk-17.0.11.0.9-2.el8.x86_64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube-9.9.4.87374/temp -XX:-OmitStackTraceInFastThrow --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Dcom.redhat.fips=false -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-9.9.4.87374.jar:/opt/sonarqube-9.9.4.87374/lib/jdbc/mssql/mssql-jdbc-11.2.2.jre17.jar org.sonar.server.app.WebServer /opt/sonarqube-9.9.4.87374/temp/sq-process3234435897901197520properties
2024.05.28 18:10:26 INFO  app[][o.s.a.SchedulerImpl] Process[Web Server] is stopped
2024.05.28 18:10:26 INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
2024.05.28 18:10:26 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 143
2024.05.28 18:10:26 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
2024.05.28 18:10:29 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube-9.9.4.87374/temp
2024.05.28 18:10:29 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:46833]
2024.05.28 18:10:29 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[ELASTICSEARCH] from [/opt/sonarqube-9.9.4.87374/elasticsearch]: /opt/sonarqube-9.9.4.87374/elasticsearch/bin/elasticsearch
2024.05.28 18:10:29 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2024.05.28 18:10:42 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2024.05.28 18:10:42 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[WEB_SERVER] from [/opt/sonarqube-9.9.4.87374]: /usr/lib/jvm/java-17-openjdk-17.0.11.0.9-2.el8.x86_64/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube-9.9.4.87374/temp -XX:-OmitStackTraceInFastThrow --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Dcom.redhat.fips=false -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-9.9.4.87374.jar:/opt/sonarqube-9.9.4.87374/lib/jdbc/mssql/mssql-jdbc-11.2.2.jre17.jar org.sonar.server.app.WebServer /opt/sonarqube-9.9.4.87374/temp/sq-process12492583464048140553properties
2024.05.28 18:10:47 INFO  app[][o.s.a.SchedulerImpl] Process[Web Server] is stopped
2024.05.28 18:10:47 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 143
2024.05.28 18:10:47 INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
2024.05.28 18:10:47 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
2024.05.28 18:10:49 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube-9.9.4.87374/temp

What do the other log files say?

Colin
thanks for update, yes I see db logs in web.log, web logs are attached below:

Do we have to specify the default port 1433 in sonar.properties?

I added port 1433 also for new server, still getting same error.

thanks for your help on this.

I see below error:

2024.05.28 17:05:43 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:sqlserver://old-db-server:1433;databaseName=SONARQUBE
2024.05.28 17:05:48 INFO  web[][o.s.s.p.d.m.c.MssqlCharsetHandler] Verify that database collation is case-sensitive and accent-sensitive
2024.05.28 18:10:24 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:sqlserver://new-db-server;databaseName=SONARQUBE
2024.05.28 18:10:26 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@7aec35a-org.sonar.db.DefaultDatabase': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Fail to connect to database
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@7aec35a-org.sonar.db.DefaultDatabase': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Fail to connect to database
Caused by: java.lang.IllegalStateException: Fail to connect to database

Are you sure the new database server is accessible from your SonarQube server? No firewalls, etc. getting in the way?

Ther’s also usually a bit more logging available. Have you shared everything in your web.log?

Colin
thank you for the update
Yes DB server is internal, there is no firewall, SQ server and DB server are on same subnet, no issues on connection or network.

here is the full log with error

2024.05.28 16:54:56 INFO  web[][o.s.s.app.WebServer] Web Server stopped
2024.05.28 16:55:24 INFO  web[][o.s.p.ProcessEntryPoint] Starting Web Server
2024.05.28 16:55:26 INFO  web[][o.s.s.p.LogServerVersion] SonarQube Server / 9.9.4.87374 / b2dtoeken742
2024.05.28 16:55:26 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:sqlserver://new-db-server:1433;databaseName=SONARQUBE
2024.05.28 16:55:26 INFO  web[][c.z.h.HikariDataSource] HikariPool-1 - Starting...
2024.05.28 16:55:28 ERROR web[][c.z.h.p.HikariPool] HikariPool-1 - Exception during pool initialization.
com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encr
yption. Error: "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requeste
d target". ClientConnectionId:54connection-id-e
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3806)
	at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1906)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:3329)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2950)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2790)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1663)
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1064)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
	at org.sonar.db.DefaultDatabase.createHikariDataSource(DefaultDatabase.java:159)
	at org.sonar.db.DefaultDatabase.initDataSource(DefaultDatabase.java:148)
	at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:126)
	at org.sonar.core.platform.StartableBeanPostProcessor.postProcessBeforeInitialization(StartableBeanPostProcessor.java:33)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapabl
eBeanFactory.java:440)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
	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:920)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:187)
	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:196)
	at org.sonar.server.platform.PlatformImpl.startLevel1Container(PlatformImpl.java:162)
	at org.sonar.server.platform.PlatformImpl.init(PlatformImpl.java:76)
	at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:43)
	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(FutureTask.java:264)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
	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(FutureTask.java:264)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
	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:921)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
	at org.apache.catalina.startup.Tomcat.start(Tomcat.java:489)
	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: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali
d certification path to requested target
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)
	at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)

I am able to connect to new db server by adding below line to db url in sonar.properties.

;encrypt=true;trustServerCertificate=true;

so my db connection looks like this now.

sonar.jdbc.url=jdbc:sqlserver://dbservername;databaseName=sqdb-2022;encrypt=true;trustServerCertificate=true;
1 Like

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