Pull request decoration failed: can't find GitHub App. Check in the Global configuration the URL, App ID and Private Key

Hi We have been using SonarQube 8.5 developer edition successfully for the last one year ( we did upgrade from 8.2 to 8.5 in the past) which got installed on macOS Mojave.

4 days back we have upgraded Mac OS from Mojavo to Catalina.
After this our Jenkins machine which got installed on the same server where SonarQube is running is successfully sending the Analysis Report of Pull request Sonarqube server and we can see all the issues/status.

But SonarQube is unable to decorate the Pull request in Github all of a sudden.
Note: We have not changed any SonarQube settings after OS Upgrade.

  • SonarQube: 8.5 Developer Edition
  • OS: Mac OS Catalina

Here is the Error Log from ce.log file.

* '''2020.10.29 00:32:18 WARN  ce[AXVwlfB9qVZXRXfpZCbj][c.s.C.B.B.A.A.C] **Failed to request /app**
java.net.SocketTimeoutException: connect timed out
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
	at java.base/java.net.Socket.connect(Socket.java:608)
	at okhttp3.internal.platform.Platform.connectSocket(Platform.java:130)
	at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:263)
	at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:183)
	at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224)
	at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
	at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
	at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
	at okhttp3.RealCall.execute(RealCall.java:81)
	at com.sonarsource.C.B.B.A.A.E.A(Unknown Source)
	at com.sonarsource.C.B.B.A.A.C.B(Unknown Source)
	at com.sonarsource.C.B.B.A.A.C.A(Unknown Source)
	at com.sonarsource.C.D.E.B.A(Unknown Source)
	at com.sonarsource.C.D.E.B.B(Unknown Source)
	at com.sonarsource.C.D.E.B.A(Unknown Source)
	at com.sonarsource.C.D.E.M.A(Unknown Source)
	at com.sonarsource.C.D.E.D.A(Unknown Source)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
	at com.sonarsource.C.D.E.D.A(Unknown Source)
	at com.sonarsource.C.D.c.A(Unknown Source)
	at java.base/java.util.Optional.ifPresent(Optional.java:183)
	at com.sonarsource.C.D.c.B(Unknown Source)
	at com.sonarsource.C.D.c.A(Unknown Source)
	at org.sonar.ce.async.SynchronousAsyncExecution.addToQueue(SynchronousAsyncExecution.java:27)
	at com.sonarsource.C.D.c.A(Unknown Source)
	at java.base/java.util.Optional.ifPresent(Optional.java:183)
	at com.sonarsource.C.D.c.finished(Unknown Source)
	at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.executeTask(PostProjectAnalysisTasksExecutor.java:118)
	at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.finished(PostProjectAnalysisTasksExecutor.java:109)
	at org.sonar.ce.task.step.ComputationStepExecutor.executeListener(ComputationStepExecutor.java:91)
	at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:63)
	at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:81)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:235)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:217)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:162)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:137)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:89)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:53)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
**2020.10.29 00:32:18 WARN  ce[AXVwlfB9qVZXRXfpZCbj][c.s.C.D.E.B] Pull request decoration failed**
**java.lang.IllegalStateException: Failed to find details about the GitHub App. Check in the Global configuration the URL, App ID and Private Key**
**	at com.sonarsource.C.D.E.B.B(Unknown Source)**
'''

Could you please let me know what could be the issue… I could not understand the below issue particularly . is this something related to proxy issue.

,‘2020.10.29 00:32:18 WARN ce[AXVwlfB9qVZXRXfpZCbj][c.s.C.B.B.A.A.C] Failed to request /app
java.net.SocketTimeoutException: connect timed out’’’

One more thing is… I have added proxy settings in sonar.properties file after this issue … but its ignored as I always saw that proxy settings are picked from bash_profile … I checked this on SonarQube web server dashboard -> admin…->system-> compute engine tab… params

Hi @venkat_ballem

The exception you are seeing in your logs is SonarQube telling you that it’s not able to check the Github app configuration that is configured in SonarQube for PR decoration.

There are two main causes for this:

  1. The configuration of the Github app in SonarQube is no longer valid.
  2. The SonarQube instance is not able to connect to Github to validate the app configuration.

The timeout error suggests it’s the second case.

You also mentioned that you made a change in your proxy configuration. During the Github PR Decoration process SonarQube doesn’t explicitly configure proxy settings, but instead relays on the proxy system properties of the JVM. If this is the only change then I would advice you to double check these proxy settings. These docs may be of help to validate the properties: https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html

Cheers,
Mark