Error 500 in AI CodeFix after upgrade to 2025.3

Must-share information (formatted with Markdown):

  • which versions are you using: SonarQube Server 2025.3 Enterprise Edition
  • how is SonarQube deployed: Helm
  • what are you trying to achieve: Generate codefix
  • what have you tried so far to achieve this

After upgrading to SonarQube Server Enterprise Edition to 2025.3 we are no longer able to generate code fixes suggestion via AI CodeFix. We are using a self-hostes LLM (Azure OpenAI). The behaviour was fine in 2025.2 (when the feature was still available as Early Access). Now SonarQube returns a 500 error which response is “message”:“The Azure OpenAI service answered with an error: 400”}”. In Azure OpenAI, we can see that the requests arrive, but they are indeed processed as an error. Herewith the logs we see on the sonar logs.

2025.06.02 13:21:26 ERROR web[fd483149-190b-4660-b653-dfe04d20cde7][o.s.s.v.c.RestResponseEntityExceptionHandler] Invalid state.
java.lang.IllegalStateException: The Azure OpenAI service answered with an error: 400
	at com.sonar.fix.suggestions.api.external.D.겨(Unknown Source)
	at com.sonar.fix.suggestions.api.external.J.J.J.诸(Unknown Source)
	at com.sonar.fix.suggestions.api.external.J.J.J.겨(Unknown Source)
	at com.sonar.fix.suggestions.api.B.J.B.겨(Unknown Source)
	at com.sonar.fix.suggestions.api.B.J.B.诸(Unknown Source)
	at com.sonar.fix.suggestions.api.B.J.B.겨(Unknown Source)
	at com.sonar.fix.suggestions.api.J.e.겨(Unknown Source)
	at com.sonar.fix.suggestions.api.J.e.겨(Unknown Source)
	at com.sonar.fix.suggestions.api.J.e.摿(Unknown Source)
	at java.base/java.util.Optional.map(Unknown Source)
	at com.sonar.fix.suggestions.api.controller.J.create(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
	at org.sonar.server.platform.web.ApiV2Servlet.service(ApiV2Servlet.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.WebPagesFilter.doFilter(WebPagesFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	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.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	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.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.CspFilter.doFilter(CspFilter.java:67)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	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.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.EndpointPathFilter.doFilter(EndpointPathFilter.java:47)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.RequestIdFilter.doFilter(RequestIdFilter.java:66)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:65)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:115)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
	at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:268)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Unknown Source)

We also see this just happening consistently a few seconds after the error above:

2025.06.02 13:21:48 WARN  web[][o.s.s.m.MainCollector] Error while executing monitoring task in RecentTasksDurationTask: 
java.lang.NullPointerException: at index 0
	at com.google.common.collect.ObjectArrays.checkElementNotNull(ObjectArrays.java:232)
	at com.google.common.collect.ObjectArrays.checkElementsNotNull(ObjectArrays.java:222)
	at com.google.common.collect.ObjectArrays.checkElementsNotNull(ObjectArrays.java:216)
	at com.google.common.collect.ImmutableList.sortedCopyOf(ImmutableList.java:345)
	at com.google.common.collect.Ordering.immutableSortedCopy(Ordering.java:899)
	at org.sonar.db.DatabaseUtils.toUniqueAndSortedList(DatabaseUtils.java:204)
	at org.sonar.db.DatabaseUtils.toUniqueAndSortedPartitions(DatabaseUtils.java:190)
	at org.sonar.db.DatabaseUtils.executeLargeInputs(DatabaseUtils.java:139)
	at org.sonar.db.DatabaseUtils.executeLargeInputs(DatabaseUtils.java:125)
	at org.sonar.db.DatabaseUtils.executeLargeInputs(DatabaseUtils.java:114)
	at org.sonar.db.entity.EntityDao.selectByUuids(EntityDao.java:42)
	at org.sonar.server.monitoring.ce.RecentTasksDurationTask.run(RecentTasksDurationTask.java:60)
	at org.sonar.server.monitoring.MainCollector.lambda$start$0(MainCollector.java:54)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

We did no change on our Azure OpenAI service, so our assumptions is that something might have broken after the upgrade to 2025.3.

Could you please check?

Thanks a lot!

Kind regards,
Jesús Pajares

@JesusPajares Thank for taking the time to report your issue.

We are investigating your report at the moment and we will get back to you as soon as possible.

2 Likes

I confirm there is a bug inside the SonarQube Server 2025.3 release, preventing you to leverage your integration with your Azure OpenAI instances and generate AI CodeFix.

You can track the bug here.

Unfortunately, there are no way to circumvent the issue on your side at the moment. We are considering release a fixed version of SonarQube Server 2025.3 asap but I cannot provide you with a specific ETA at the moment.

I’ll make sure to get back to you here as soon as I know more so you can plan/prepare accordingly.

Once again, thanks for your report.

2 Likes

Hello,

Do you have a rough ETA for the 2025.3.1 version ?

I see that the Jira ticket is done.

Best regards

1 Like

Hey @rrousset

Technical release should be done by the end of this week. It will either get announced then, or very early next week.

Hello Colin,

Thank you for the quick answer.

We are waiting for it :grinning_face:

Where is the best place to get it as soon as it is available ?

Best regards

R.

You can stalk https://binaries.sonarsource.com/?prefix=CommercialDistribution/sonarqube-enterprise/ but it will be officially announced here :slight_smile:

1 Like

@rrousset :wink: