Sonar PR decoration should not fail when branch is master for project repository

Must-share information (formatted with Markdown):

  • SonarQube Enterprise 9.9.0, Jenkins-driven, build in openjdk17 container

Sonar project analysis view shows error flag when PR decoration fails. The analysis is NOT on a pull-request, but is on the main branch of the project. Thus, warning should not be displayed.

Review of the ce.log from the server shows:

2023.02.25 22:21:17 INFO  ce[][o.s.c.c.CePluginRepository] Load plugins
2023.02.25 22:21:21 INFO  ce[][o.s.c.c.ComputeEngineContainerImpl] Running Enterprise edition
2023.02.25 22:21:21 INFO  ce[][o.s.s.e.CoreExtensionBootstraper] Bootstrapping Governance
2023.02.25 22:21:21 INFO  ce[][o.s.s.e.CoreExtensionBootstraper] Bootstrapping Governance (done) | time=10ms
2023.02.25 22:21:21 INFO  ce[][o.s.ce.app.CeServer] Compute Engine is started
2023.02.25 22:38:12 INFO  ce[][o.s.c.t.CeWorkerImpl] Execute task | project=com.company.aps:aps-partner-account-oyster | type=REPORT | branch=oyster | branchType=BRANCH | id=AYaKuf-cyGzO2OWkqOs1 | submitter=sonar
2023.02.25 22:38:13 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.s.e.EsClientProvider] Connected to local Elasticsearch: [http://localhost:9001]
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Extract report | status=SUCCESS | time=35ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist scanner context | status=SUCCESS | time=13ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Propagate analysis warnings from scanner report | status=SUCCESS | time=0ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Generate analysis UUID | status=SUCCESS | time=0ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load analysis metadata | status=SUCCESS | time=140ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Initialize | status=SUCCESS | time=28ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Build tree of components | components=65 | status=SUCCESS | time=96ms
2023.02.25 22:38:14 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Validate project | status=SUCCESS | time=6ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load quality profiles | status=SUCCESS | time=1747ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load file hashes and statuses | status=SUCCESS | time=6ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load Quality gate | status=SUCCESS | time=17ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load new code period | status=SUCCESS | time=8ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Detect file moves | status=SUCCESS | time=1ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Detect file moves in Pull Request scope | status=SUCCESS | time=0ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load duplications | duplications=0 | status=SUCCESS | time=14ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute cross project duplications | status=SUCCESS | time=0ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute size measures | status=SUCCESS | time=55ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute new coverage | status=SUCCESS | time=5ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute coverage measures | status=SUCCESS | time=9ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute comment measures | status=SUCCESS | time=3ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute duplication measures | status=SUCCESS | time=2ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute size measures on new code | status=SUCCESS | time=1ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute language distribution | status=SUCCESS | time=16ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute test measures | status=SUCCESS | time=2ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute complexity measures | status=SUCCESS | time=5ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Load measure computers | status=SUCCESS | time=2ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute Quality Profile status | status=SUCCESS | time=11ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Execute component visitors | status=SUCCESS | time=294ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Checks executed after computation of measures | status=SUCCESS | time=32ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute Quality Gate measures | status=SUCCESS | time=8ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Compute Quality profile measures | status=SUCCESS | time=8ms
2023.02.25 22:38:16 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Generate Quality profile events | status=SUCCESS | time=4ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Generate Quality gate events | status=SUCCESS | time=6ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Check upgrade possibility for not analyzed code files. | status=SUCCESS | time=0ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist scanner analysis cache | status=SUCCESS | time=6ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist components | status=SUCCESS | time=200ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist analysis | status=SUCCESS | time=19ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist analysis properties | status=SUCCESS | time=21ms
2023.02.25 22:38:17 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist measures | inserts=59 | status=SUCCESS | time=34ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist live measures | insertsOrUpdates=1893 | status=SUCCESS | time=773ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist duplication data | insertsOrUpdates=0 | status=SUCCESS | time=2ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist new ad hoc Rules | status=SUCCESS | time=0ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist issues | cacheSize=0 bytes | inserts=0 | updates=0 | merged=0 | status=SUCCESS | time=5ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Delete issue changes | changes=0 | status=SUCCESS | time=0ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist project links | status=SUCCESS | time=6ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist events | status=SUCCESS | time=14ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist sources | status=SUCCESS | time=515ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Persist cross project duplications | status=SUCCESS | time=0ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Enable analysis | status=SUCCESS | time=7ms
2023.02.25 22:38:18 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Update last usage date of quality profiles | status=SUCCESS | time=15ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Purge db | status=SUCCESS | time=581ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Index analysis | status=SUCCESS | time=368ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Update need issue sync for branch | status=SUCCESS | time=17ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Publishing taint vulnerabilities events | status=SUCCESS | time=3ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Send issue notifications | newIssuesNotifs=0 | newIssuesDeliveries=0 | myNewIssuesNotifs=0 | myNewIssuesDeliveries=0 | changesNotifs=0 | changesDeliveries=0 | status=SUCCESS | time=14ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Publish task results | status=SUCCESS | time=0ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.s.ComputationStepExecutor] Trigger refresh of Portfolios and Applications | refreshesAPP=0 | refreshesVW=0 | status=SUCCESS | time=94ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.p.a.p.PostProjectAnalysisTasksExecutor] Webhooks | globalWebhooks=0 | projectWebhooks=0 | status=SUCCESS | time=14ms
2023.02.25 22:38:19 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.p.a.p.PostProjectAnalysisTasksExecutor] Pull Request decoration | status=SUCCESS | time=1ms
2023.02.25 22:38:22 WARN  ce[AYaKuf-cyGzO2OWkqOs1][c.s.G.B.A.B] Failed to access GitHub, the repository or the Pull Request
2023.02.25 22:38:22 WARN  ce[AYaKuf-cyGzO2OWkqOs1][c.s.G.D.G.M] Branch decoration failed
java.lang.IllegalStateException: Failed to report status to Devops platform: couldn't get the branch details
	at com.sonarsource.G.D.G.M.B(Unknown Source)
	at com.sonarsource.G.D.G.M.D(Unknown Source)
	at java.base/java.util.Optional.orElseThrow(Unknown Source)
	at com.sonarsource.G.D.G.M.C(Unknown Source)
	at com.sonarsource.G.D.G.M.A(Unknown Source)
	at com.sonarsource.G.D.G.G.A(Unknown Source)
	at com.sonarsource.G.D.G.B.A(Unknown Source)
	at java.base/java.lang.Iterable.forEach(Unknown Source)
	at com.sonarsource.G.D.G.B.A(Unknown Source)
	at com.sonarsource.G.D.k.A(Unknown Source)
	at org.sonar.ce.async.SynchronousAsyncExecution.addToQueue(SynchronousAsyncExecution.java:27)
	at com.sonarsource.G.D.k.A(Unknown Source)
	at java.base/java.util.Optional.ifPresent(Unknown Source)
	at com.sonarsource.G.D.k.finished(Unknown Source)
	at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.executeTask(PostProjectAnalysisTasksExecutor.java:102)
	at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.finished(PostProjectAnalysisTasksExecutor.java:93)
	at org.sonar.ce.task.step.ComputationStepExecutor.executeListener(ComputationStepExecutor.java:89)
	at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:61)
	at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:75)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:212)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:194)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:160)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:135)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:87)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:53)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(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)
2023.02.25 22:38:23 WARN  ce[AYaKuf-cyGzO2OWkqOs1][c.s.G.B.A.B] Failed to access GitHub, the repository or the Pull Request
2023.02.25 22:38:23 WARN  ce[AYaKuf-cyGzO2OWkqOs1][c.s.G.D.G.M] Branch decoration failed
java.lang.IllegalStateException: Failed to report status to Devops platform: couldn't get the branch details
	at com.sonarsource.G.D.G.M.B(Unknown Source)
	at com.sonarsource.G.D.G.M.D(Unknown Source)
	at java.base/java.util.Optional.orElseThrow(Unknown Source)
	at com.sonarsource.G.D.G.M.C(Unknown Source)
	at com.sonarsource.G.D.G.M.A(Unknown Source)
	at com.sonarsource.G.D.G.B.A.D.A(Unknown Source)
	at com.sonarsource.G.D.G.B.A(Unknown Source)
	at java.base/java.lang.Iterable.forEach(Unknown Source)
	at com.sonarsource.G.D.G.B.A(Unknown Source)
	at com.sonarsource.G.D.k.A(Unknown Source)
	at org.sonar.ce.async.SynchronousAsyncExecution.addToQueue(SynchronousAsyncExecution.java:27)
	at com.sonarsource.G.D.k.A(Unknown Source)
	at java.base/java.util.Optional.ifPresent(Unknown Source)
	at com.sonarsource.G.D.k.finished(Unknown Source)
	at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.executeTask(PostProjectAnalysisTasksExecutor.java:102)
	at org.sonar.ce.task.projectanalysis.api.posttask.PostProjectAnalysisTasksExecutor.finished(PostProjectAnalysisTasksExecutor.java:93)
	at org.sonar.ce.task.step.ComputationStepExecutor.executeListener(ComputationStepExecutor.java:89)
	at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:61)
	at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:75)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:212)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:194)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:160)
	at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:135)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:87)
	at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:53)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(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)
2023.02.25 22:38:23 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.p.a.p.PostProjectAnalysisTasksExecutor] Report branch Quality Gate status to devops platforms | status=SUCCESS | time=3598ms
2023.02.25 22:38:23 INFO  ce[AYaKuf-cyGzO2OWkqOs1][o.s.c.t.CeWorkerImpl] Executed task | project=com.company.aps:aps-partner-account-oyster | type=REPORT | branch=oyster | branchType=BRANCH | id=AYaKuf-cyGzO2OWkqOs1 | submitter=sonar | status=SUCCESS | time=11015ms



Hey there.

Did you see this in the upgrade notes?

Reporting Quality Gate status on GitHub branches requires an additional permission (9.0)
When working in private GitHub repositories, you need to grant read-only access to the Contents permission on the GitHub application that you’re using for SonarQube integration. See the GitHub integration documentation for more information.

In SonarQube v9.9 LTS the branch can be decorated with a Quality Gate status, which is the failure being shown here.

I think my main point was overlooked; this is the main branch, there is no PR conversation involved.

Yes and, in SonarQube v9.9 LTS, SonarQube now decorates the commit on branches with the Quality Gate status.