AI CodeFix Initialization error

  • SonarQube Server Enterprise Edition 2025 LTS

  • Docker

  • I am trying to initialize the AI CodeFix feature and returned error: The AI CodeFix service is reachable but returned an error. Check logs for more details.

 2025.02.25 03:37:10 WARN  web[fc7de2e9-e592-4da0-900a-4bcd81409712][c.s.f.s.api.P.o] Error while checking AI CodeFix service status                                                                 
java.net.SocketException: Connection reset                                                                                                                                                          
        at java.base/sun.nio.ch.NioSocketImpl.implRead(Unknown Source)                                                                                                                              
        at java.base/sun.nio.ch.NioSocketImpl.read(Unknown Source)                                                                                                                                  
        at java.base/sun.nio.ch.NioSocketImpl$1.read(Unknown Source)                                                                                                                                
        at java.base/java.net.Socket$SocketInputStream.read(Unknown Source)                                                                                                                         
        at java.base/sun.security.ssl.SSLSocketInputRecord.read(Unknown Source)                                                                                                                     
        at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(Unknown Source)                                                                                                               
        at java.base/sun.security.ssl.SSLSocketInputRecord.decode(Unknown Source)                                                                                                                   
        at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)                                                                                                                           
        at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)                                                                                                                          
        at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)                                                                                                             
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)                                                                                                                  
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)                                                                                                                  
        at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:379)                                                                                                             
        at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337)                                                                                                      
        at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209)                                                                                                                
        at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)                                                                                                         
        at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)                                                                                                  
        at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)                                                                                                                    
        at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)                                                                                                                
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)                                                                                                       
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)                                                                                                          
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)                                                                                                                
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)                                                                                                          
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)                                                                                                               
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)                                                                                                          
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)                                                                                           
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)                                                                                                          
        at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.kt:221)                                                                                                          
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)                                                                                                          
        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)                                                                                             
        at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)                                                                                                                            
        at com.sonar.fix.suggestions.api.P.o.碼(Unknown Source)                                                                                                                                      
        at com.sonar.fix.suggestions.api.P.o.碼(Unknown Source)                                                                                                                                      
        at com.sonar.fix.suggestions.api.controller.d.get(Unknown Source)                                                                                                                           
        at jdk.internal.reflect.GeneratedMethodAccessor1090.invoke(Unknown Source)                                                                                                                  
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)                                                                                                       
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)                                                                                                                                
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257)                                                                                  
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190)                                                                          
        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:1088)                                                                                                
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)                                                                                              
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)                                                                                                        
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)                                                                                                                           
        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.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:1741)                                                                                                      
        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)                                                                                                                                           
        Suppressed: java.net.SocketException: Connection reset                                                                                                                                      
                ... 106 common frames omitted

Hey there.

Is your SonarQube server able to access the outside world, specifically the URL/IP Addresses mentioned here?

Hi Colin,

Yes, the server has access to those IPs. However, it is located in Hong Kong, which does not have ChatGPT supported. It is related?

Hey there.

I don’t expect that to be an issue, since api.sonarqube.io is proxying the request to OpenAI.

Do you have a proxy configured in your conf/sonar.properties file? There’s a known issue (SONAR-24165) where this configuration isn’t being considered.