SonarQube Pod Failing to Start After Upgrade (No Clear Errors in Logs)

Hello SonarQube Community,

I’m encountering an issue with SonarQube and would appreciate your help. Here are the details:

Environment:

  • SonarQube Version: 25.1.0.102122-community

  • Plugin(s): sonar-l10n-zh-plugin-25.1.jar, sonarqube-community-branch-plugin-1.23.0.jar

  • Deployed by: helm

  • Kubernetes version: 1.30+

Issue Description:

Today, while upgrading SonarQube Community Edition, I noticed that the SonarQube pod failed to start properly. The logs don’t show any obvious error messages, causing the startup probe to fail and the pod to restart. Could you please help me analyze the issue? Is there something wrong with my configuration?

here is my probe configs and logs:

readinessProbe:
  exec:
    command:
      - sh
      - -c
      - |
        #!/bin/bash
        # A Sonarqube container is considered ready if the status is UP, DB_MIGRATION_NEEDED or DB_MIGRATION_RUNNING
        # status about migration are added to prevent the node to be kill while SonarQube is upgrading the database.
        if wget --no-proxy -qO- http://localhost:{{ .Values.service.internalPort }}{{ .Values.readinessProbe.sonarWebContext | default (include "sonarqube.webcontext" .) }}api/system/status | grep -q -e '"status":"UP"' -e '"status":"DB_MIGRATION_NEEDED"' -e '"status":"DB_MIGRATION_RUNNING"'; then
          exit 0
        fi
        exit 1
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 6
  # Note that timeoutSeconds was not respected before Kubernetes 1.20 for exec probes
  timeoutSeconds: 60
  # If an ingress *path* other than the root (/) is defined, it should be reflected here
  # A trailing "/" must be included
  # deprecated please use sonarWebContext at the value top level
  # sonarWebContext: /

livenessProbe:
  exec:
    command:
      - sh
      - -c
      - |
        wget --no-proxy --quiet -O /dev/null --timeout={{ .Values.livenessProbe.timeoutSeconds }} --header="X-Sonar-Passcode: $SONAR_WEB_SYSTEMPASSCODE" "http://localhost:{{ .Values.service.internalPort }}{{ .Values.livenessProbe.sonarWebContext | default (include "sonarqube.webcontext" .) }}api/system/liveness"
  initialDelaySeconds: 360
  periodSeconds: 10
  failureThreshold: 6
  # Note that timeoutSeconds was not respected before Kubernetes 1.20 for exec probes
  timeoutSeconds: 60
  # If an ingress *path* other than the root (/) is defined, it should be reflected here
  # A trailing "/" must be included
  # deprecated please use sonarWebContext at the value top level
  # sonarWebContext: /

startupProbe:
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 10
  # Note that timeoutSeconds was not respected before Kubernetes 1.20 for exec probes
  timeoutSeconds: 60


2025.11.22 13:43:42 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2025.11.22 13:43:42 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:{}]
2025.11.22 13:43:42 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[ELASTICSEARCH] from [/opt/sonarqube/elasticsearch]: /opt/java/openjdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=server -Dcli.script=./bin/elasticsearch -Dcli.libs=lib/tools/server-cli -Des.path.home=/opt/sonarqube/elasticsearch -Des.path.conf=/opt/sonarqube/temp/conf/es -Des.distribution.type=tar -cp /opt/sonarqube/elasticsearch/lib/*:/opt/sonarqube/elasticsearch/lib/cli-launcher/* org.elasticsearch.launcher.CliToolLauncher
2025.11.22 13:43:42 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts
2025.11.22 13:43:47 INFO  es[][o.e.n.NativeAccess] Using [jna] native provider and native methods for [Linux]
2025.11.22 13:43:49 INFO  es[][o.e.n.Node] version[8.16.1], pid[79], build[tar/ffe992aa682c1968b5df375b5095b3a21f122bf3/2024-11-19T16:00:31.793213192Z], OS[Linux/5.10.134-15.al8.x86_64/amd64], JVM[Eclipse Adoptium/OpenJDK 64-Bit Server VM/17.0.14/17.0.14+7]
2025.11.22 13:43:49 INFO  es[][o.e.n.Node] JVM home [/opt/java/openjdk], using bundled JDK [false]
2025.11.22 13:43:49 INFO  es[][o.e.n.Node] JVM arguments [-Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -Djava.security.manager=allow, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=SPI,COMPAT, -XX:ReplayDataFile=logs/replay_pid%p.log, -Des.distribution.type=tar, -XX:+UseG1GC, -Djava.io.tmpdir=/opt/sonarqube/temp, -XX:ErrorFile=/opt/sonarqube/logs/es_hs_err_pid%p.log, -Xlog:disable, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djna.tmpdir=/opt/sonarqube/temp, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=COMPAT, -Des.enforce.bootstrap.checks=true, -Xmx512m, -Xms512m, -XX:MaxDirectMemorySize=256m, -XX:+HeapDumpOnOutOfMemoryError, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, --module-path=/opt/sonarqube/elasticsearch/lib, --add-modules=jdk.net, --add-modules=ALL-MODULE-PATH, -Djdk.module.main=org.elasticsearch.server]
2025.11.22 13:43:49 INFO  es[][o.e.n.Node] Default Locale [en_US]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [rest-root]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-core]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-redact]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [reindex]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-security]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-geoip-enterprise-downloader]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-esql-core]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-apm-data]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [old-lucene-versions]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [parent-join]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [lang-painless]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [counted-keyword]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [logsdb]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-inference]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [analysis-common]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [dot-prefix-validation]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [health-shards-availability]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [transport-netty4]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [x-pack-otel-data]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [aggregations]
2025.11.22 13:43:51 INFO  es[][o.e.p.PluginsService] loaded module [apm]
2025.11.22 13:43:52 INFO  es[][o.e.e.NodeEnvironment] using [1] data paths, mounts [[/opt/sonarqube/data (/dev/nvme1n1)]], net usable_space [19.4gb], net total_space [19.5gb], types [ext4]
2025.11.22 13:43:52 INFO  es[][o.e.e.NodeEnvironment] heap size [512mb], compressed ordinary object pointers [true]
2025.11.22 13:43:53 INFO  es[][o.e.n.Node] node name [sonarqube], node ID [JsDMy9e7TNKWCwzq-znMfw], cluster name [sonarqube], roles [transform, data_hot, ml, data_frozen, ingest, data_cold, data, remote_cluster_client, master, data_warm, data_content]
2025.11.22 13:43:56 INFO  es[][o.e.i.r.RecoverySettings] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]
2025.11.22 13:43:57 INFO  es[][o.e.f.FeatureService] Registered local node features [desired_node.version_deprecated, features_supported, file_settings, flattened.ignore_above_support, geoip.downloader.database.configuration, get_database_configuration_action.multi_node, health.extended_repository_indicator, knn_retriever_supported, license-trial-independent-version, mapper.boolean_dimension, mapper.flattened.ignore_above_with_arrays_support, mapper.ignore_above_index_level_setting, mapper.index_sorting_on_nested, mapper.keyword_dimension_ignore_above, mapper.keyword_normalizer_synthetic_source, mapper.pass_through_priority, mapper.query_index_mode, mapper.range.null_values_off_by_one_fix, mapper.segment_level_fields_stats, mapper.source.synthetic_source_copy_to_fix, mapper.source.synthetic_source_copy_to_inside_objects_fix, mapper.source.synthetic_source_fallback, mapper.source.synthetic_source_stored_fields_advance_fix, mapper.source.synthetic_source_with_copy_to_and_doc_values_false, mapper.subobjects_auto, mapper.subobjects_auto_fixes, mapper.synthetic_source_keep, mapper.track_ignored_source, mapper.vectors.bbq, mapper.vectors.bit_vectors, mapper.vectors.int4_quantization, put_database_configuration_action.ipinfo, random_reranker_retriever_supported, repositories.supports_usage_stats, rest.capabilities_action, rest.local_only_capabilities, retrievers_supported, routing.boolean_routing_path, routing.multi_value_routing_path, script.hamming, script.term_stats, search.vectors.k_param_supported, security.migration_framework, security.role_mapping_cleanup, security.roles_metadata_flattened, semantic_text.search_inference_id, simulate.component.template.substitutions, simulate.index.template.substitutions, simulate.mapping.validation, simulate.mapping.validation.templates, standard_retriever_supported, stats.include_disk_thresholds, text_similarity_reranker_retriever_composition_supported, text_similarity_reranker_retriever_supported, tsdb.ts_routing_hash_doc_value_parse_byte_ref, unified_highlighter_matched_fields, usage.data_tiers.precalculate_stats]
2025.11.22 13:43:57 INFO  es[][o.e.c.m.DataStreamGlobalRetentionSettings] Updated default factory retention to [null]
2025.11.22 13:43:57 INFO  es[][o.e.c.m.DataStreamGlobalRetentionSettings] Updated max factory retention to [null]
2025.11.22 13:43:57 INFO  es[][o.e.x.s.Security] Security is disabled
2025.11.22 13:43:57 INFO  es[][o.e.x.a.APMPlugin] APM ingest plugin is enabled
2025.11.22 13:43:57 INFO  es[][o.e.x.c.t.YamlTemplateRegistry] apm index template registry is enabled
2025.11.22 13:43:57 INFO  es[][o.e.x.o.OTelPlugin] OTel ingest plugin is enabled
2025.11.22 13:43:57 INFO  es[][o.e.x.c.t.YamlTemplateRegistry] OpenTelemetry index template registry is enabled
2025.11.22 13:43:57 INFO  es[][o.e.t.a.APM] Sending apm metrics is disabled
2025.11.22 13:43:57 INFO  es[][o.e.t.a.APM] Sending apm tracing is disabled
2025.11.22 13:43:58 INFO  es[][o.e.t.n.NettyAllocator] creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=1mb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=4mb, heap_size=512mb}]
2025.11.22 13:43:58 INFO  es[][o.e.d.DiscoveryModule] using discovery type [single-node] and seed hosts providers [settings]
2025.11.22 13:43:59 INFO  es[][o.e.n.Node] initialized
2025.11.22 13:43:59 INFO  es[][o.e.n.Node] starting ...
2025.11.22 13:43:59 INFO  es[][o.e.t.TransportService] publish_address {127.0.0.1:44287}, bound_addresses {127.0.0.1:44287}
2025.11.22 13:43:59 INFO  es[][o.e.b.BootstrapChecks] explicitly enforcing bootstrap checks
2025.11.22 13:43:59 INFO  es[][o.e.c.c.ClusterBootstrapService] this node is locked into cluster UUID [QinXuBBGQgiFGTR7HnvNfg] and will not attempt further cluster bootstrapping
2025.11.22 13:43:59 INFO  es[][o.e.c.s.MasterService] elected-as-master ([1] nodes joined in term 5)[_FINISH_ELECTION_, {sonarqube}{JsDMy9e7TNKWCwzq-znMfw}{T8hxxTEiRdaH09uW_Yd_qA}{sonarqube}{127.0.0.1}{127.0.0.1:44287}{cdfhilmrstw}{8.16.1}{7000099-8518000} completing election], term: 5, version: 22, delta: master node changed {previous [], current [{sonarqube}{JsDMy9e7TNKWCwzq-znMfw}{T8hxxTEiRdaH09uW_Yd_qA}{sonarqube}{127.0.0.1}{127.0.0.1:44287}{cdfhilmrstw}{8.16.1}{7000099-8518000}]}
2025.11.22 13:43:59 INFO  es[][o.e.c.s.ClusterApplierService] master node changed {previous [], current [{sonarqube}{JsDMy9e7TNKWCwzq-znMfw}{T8hxxTEiRdaH09uW_Yd_qA}{sonarqube}{127.0.0.1}{127.0.0.1:44287}{cdfhilmrstw}{8.16.1}{7000099-8518000}]}, term: 5, version: 22, reason: Publication{term=5, version=22}
2025.11.22 13:43:59 INFO  es[][o.e.c.c.NodeJoinExecutor] node-join: [{sonarqube}{JsDMy9e7TNKWCwzq-znMfw}{T8hxxTEiRdaH09uW_Yd_qA}{sonarqube}{127.0.0.1}{127.0.0.1:44287}{cdfhilmrstw}{8.16.1}{7000099-8518000}] with reason [completing election]
2025.11.22 13:43:59 INFO  es[][o.e.h.AbstractHttpServerTransport] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
2025.11.22 13:43:59 INFO  es[][o.e.n.Node] started {sonarqube}{JsDMy9e7TNKWCwzq-znMfw}{T8hxxTEiRdaH09uW_Yd_qA}{sonarqube}{127.0.0.1}{127.0.0.1:44287}{cdfhilmrstw}{8.16.1}{7000099-8518000}{rack_id=sonarqube, xpack.installed=true}
2025.11.22 13:44:00 INFO  es[][o.e.l.ClusterStateLicenseService] license [83ed3987-84cd-4e28-a58a-3a6b4cb17939] mode [basic] - valid
2025.11.22 13:44:00 INFO  es[][o.e.c.f.AbstractFileWatchingService] starting file watcher ...
2025.11.22 13:44:00 INFO  es[][o.e.c.f.AbstractFileWatchingService] file settings service up and running [tid=34]
2025.11.22 13:44:00 INFO  es[][o.e.g.GatewayService] recovered [0] indices into cluster_state
2025.11.22 13:44:00 INFO  es[][o.e.r.s.FileSettingsService] setting file [/opt/sonarqube/temp/conf/es/operator/settings.json] not found, initializing [file_settings] as empty
2025.11.22 13:44:00 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2025.11.22 13:44:00 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[WEB_SERVER] from [/opt/sonarqube]: /opt/java/openjdk/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/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 -Xms2048m -Xmx6144m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/sonarqube/temp/ -XX:+UseG1GC -Djava.net.preferIPv4Stack=true -javaagent:/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-1.23.0.jar=web -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-25.1.0.102122.jar:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.7.4.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process4740447611220076906properties
2025.11.22 13:44:00 INFO  es[][o.e.h.n.s.HealthNodeTaskExecutor] Node [{sonarqube}{JsDMy9e7TNKWCwzq-znMfw}] is selected as the current health node.
13:44:00.547 [main] INFO com.github.mc1arke.sonarqube.plugin.CommunityBranchAgent -- Loading agent
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by org.sonar.process.PluginSecurityManager (file:/opt/sonarqube/lib/sonar-application-25.1.0.102122.jar)
WARNING: Please consider reporting this to the maintainers of org.sonar.process.PluginSecurityManager
WARNING: System::setSecurityManager will be removed in a future release
2025.11.22 13:44:01 INFO  web[][o.s.p.ProcessEntryPoint] Starting Web Server
2025.11.22 13:44:01 INFO  web[][o.s.s.a.TomcatHttpConnectorFactory] Starting Tomcat on port 9000
2025.11.22 13:48:27 INFO  app[][o.s.a.SchedulerImpl] Stopping SonarQube
2025.11.22 13:48:27 INFO  app[][o.s.a.SchedulerImpl] Sonarqube has been requested to stop
2025.11.22 13:48:27 INFO  app[][o.s.a.SchedulerImpl] Stopping [Compute Engine] process...
2025.11.22 13:48:27 INFO  app[][o.s.a.SchedulerImpl] Stopping [Web Server] process...
2025.11.22 13:48:28 INFO  web[][o.s.p.ProcessEntryPoint] Gracefully stopping process
2025.11.22 13:48:28 INFO  web[][o.s.s.app.WebServer] Web Server stopped
2025.11.22 13:48:28 INFO  app[][o.s.a.SchedulerImpl] Process[Web Server] is stopped
2025.11.22 13:48:28 INFO  app[][o.s.a.SchedulerImpl] Stopping [ElasticSearch] process...
2025.11.22 13:48:28 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 143
2025.11.22 13:48:28 INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
2025.11.22 13:48:28 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

Hi,

As I’m sure you can understand, we don’t support the Community Build plugin.

Can you replicate this problem without it?

 
Ann