Hello !
Version: SonarQube Developer 2026.5.1 LTA
Deployed: zip
Problem: Error messages in the overview of projects : “An unexpected error occurred. Please contact support if the problem persists.”

Relevant log:
2026.10.02 11:07:46 ERROR web[b087d124-b452-4b38-8c24-998b4d9b0366][o.s.s.v.c.RestResponseEntityExceptionHandler] An unexpected error occurred. Please contact support if the problem persists.
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Une erreur s’est produite lors de la commande actuelle (État terminé 0). L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction.
### The error may exist in org.sonarsource.history.server.db.mapper.IssueTtrHistoryMapper
### The error may involve org.sonarsource.history.server.db.mapper.IssueTtrHistoryMapper.queryResolvedIssuesUnsliced
### The error occurred while handling results
### SQL: WITH daily (recorded_date, value) AS ( SELECT CAST(DATEADD(DAY, CAST((ith.recorded_at_epoch) / 86400000 AS INT), CAST('1970-01-01' AS DATETIME2)) AS DATE) AS recorded_date, CAST(SUM(ith.issues_resolved) AS INTEGER) AS value FROM issue_ttr_history ith JOIN issue_count_dimensions icd ON ith.dimension_id = icd.id WHERE ith.entity_id = ? AND ith.entity_type = ? AND ith.recorded_at_epoch >= ? AND ith.recorded_at_epoch <= ? AND ( ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) ) GROUP BY CAST(DATEADD(DAY, CAST((ith.recorded_at_epoch) / 86400000 AS INT), CAST('1970-01-01' AS DATETIME2)) AS DATE) ), prior_data (has_data) AS ( SELECT CASE WHEN EXISTS ( SELECT 1 FROM issue_ttr_history ith JOIN issue_count_dimensions icd ON ith.dimension_id = icd.id WHERE ith.entity_id = ? AND ith.entity_type = ? AND ith.recorded_at_epoch < ? AND ( ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) OR ( CASE ? WHEN 'MAINTAINABILITY' THEN icd.maintainability_rating WHEN 'SECURITY' THEN icd.security_rating WHEN 'RELIABILITY' THEN icd.reliability_rating END = ?) ) ) THEN 1 ELSE 0 END ), dates(recorded_date) AS ( SELECT CAST(DATEADD(DAY, CAST((? - (0 * 86400000.0)) / 86400000 AS INT), CAST('1970-01-01' AS DATETIME2)) AS DATE) UNION ALL SELECT DATEADD(DAY, 1, dates.recorded_date) FROM dates WHERE dates.recorded_date < CAST(DATEADD(DAY, CAST((?) / 86400000 AS INT), CAST('1970-01-01' AS DATETIME2)) AS DATE) ) SELECT CAST(dates.recorded_date AS DATETIME2) AS "date", 'all' AS dimension, COALESCE(daily.value, 0) AS value FROM dates CROSS JOIN prior_data LEFT JOIN daily ON daily.recorded_date = dates.recorded_date WHERE prior_data.has_data = 1 OR EXISTS ( SELECT 1 FROM daily first_data WHERE first_data.recorded_date <= dates.recorded_date ) ORDER BY dates.recorded_date DESC, dimension
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Une erreur s’est produite lors de la commande actuelle (État terminé 0). L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction.
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:156)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
at jdk.proxy2/jdk.proxy2.$Proxy237.queryResolvedIssuesUnsliced(Unknown Source)
at org.sonarsource.history.server.db.repository.IssueTtrHistoryRepository.queryResolvedIssues(IssueTtrHistoryRepository.java:81)
at org.sonarsource.history.server.service.IssueTtrHistoryService.query(IssueTtrHistoryService.java:66)
at org.sonar.server.v2.api.history.controller.DefaultIssueResolutionHistoryController.getIssueResolutionHistory(DefaultIssueResolutionHistoryController.java:107)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:252)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:184)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:934)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:853)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:86)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:866)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1000)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:892)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:874)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710)
at org.sonar.server.platform.web.ApiV2Servlet.service(ApiV2Servlet.java:116)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:132)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:235)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:376)
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:132)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:86)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:181)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.sonar.server.v2.security.UserSessionAuthenticationFilter.doFilterInternal(UserSessionAuthenticationFilter.java:85)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:385)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:237)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:195)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:317)
at org.sonar.server.platform.web.ConditionalSpringSecurityFilter.doFilter(ConditionalSpringSecurityFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.WebPagesFilter.doFilter(WebPagesFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:167)
at org.sonar.server.platform.web.MasterServletFilter$HttpFilterChainAdapter.doFilter(MasterServletFilter.java:208)
at org.sonar.server.platform.web.NoCacheFilter.doFilter(NoCacheFilter.java:34)
at org.sonar.server.platform.web.MasterServletFilter$JavaxFilterAdapter.doFilter(MasterServletFilter.java:194)
at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:165)
at org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.UserSessionFilter.doFilter(UserSessionFilter.java:83)
at org.sonar.server.platform.web.UserSessionFilter.doFilter(UserSessionFilter.java:70)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.CspFilter.doFilter(CspFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:60)
at org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:56)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.EndpointPathFilter.doFilter(EndpointPathFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.RequestIdFilter.doFilter(RequestIdFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:100)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:141)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.springframework.web.filter.UrlHandlerFilter.doFilterInternal(UrlHandlerFilter.java:98)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:111)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:535)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:294)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:86)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:71)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:347)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:71)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1307)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:2201)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:74)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:949)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:483)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:74)
at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Une erreur s’est produite lors de la commande actuelle (État terminé 0). L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:356)
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:333)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer$FetchBufferTokenHandler.onDone(SQLServerResultSet.java:5471)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:103)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:42)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:5574)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1824)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1082)
at com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:364)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:337)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:310)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:202)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:66)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
at org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:61)
at org.sonar.server.monitoring.MyBatisMetricsInterceptor.intercept(MyBatisMetricsInterceptor.java:53)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
at jdk.proxy2/jdk.proxy2.$Proxy128.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
... 118 common frames omitted