Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-75471

Prevent a single Repository fetch to break Organization scan

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Major Major
    • None
    • github-branch-source:1797.v86fdb_4d57d43
    • 1815.v9152b_2ff7a_1b_

      Noticed in a recent instance that the GitHubSCMNavigator was interrupted after failing to fetch a specific repository:

      [Mon Mar 10 19:36:19 UTC 2025] Consulting GitHub Organization
      [...]
      Proposing myrepo
      ERROR: [Mon Mar 10 12:34:56  UTC 2025] Could not fetch sources from navigator org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator@XXXXXXXX
      [Mon Mar 10 19:36:49 UTC 2025] Finished organization scan. Scan took 29 sec
      FATAL: Failed to recompute children of topfolder ยป myorg
      java.io.FileNotFoundException: https://github.example.com/api/v3/repos/myorg/myrepo
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHubConnectorResponseErrorHandler$1.onError(GitHubConnectorResponseErrorHandler.java:68)
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.detectKnownErrors(GitHubClient.java:504)
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:464)
      Caused: org.kohsuke.github.GHFileNotFoundException: https://github.example.com/api/v3/repos/myorg/myrepo {
        "documentation_url": "https://docs.github.com/rest/repos/repos#get-a-repository",
        "message": "Not Found",
        "status": "404"
      }
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.interpretApiError(GitHubClient.java:735)
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:480)
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHubClient.sendRequest(GitHubClient.java:427)
      	at PluginClassLoader for github-api//org.kohsuke.github.Requester.fetch(Requester.java:85)
      	at PluginClassLoader for github-api//org.kohsuke.github.GHRepository.read(GHRepository.java:149)
      	at PluginClassLoader for github-api//org.kohsuke.github.GitHub.getRepository(GitHub.java:687)
      	at PluginClassLoader for github-branch-source//org.jenkinsci.plugins.github_branch_source.GitHubSCMSource.retrieve(GitHubSCMSource.java:997)
      	at PluginClassLoader for scm-api//jenkins.scm.api.SCMSource._retrieve(SCMSource.java:372)
      	at PluginClassLoader for scm-api//jenkins.scm.api.SCMSource.fetch(SCMSource.java:326)
      	at PluginClassLoader for branch-api//jenkins.branch.MultiBranchProjectFactory$BySCMSourceCriteria.recognizes(MultiBranchProjectFactory.java:262)
      	at PluginClassLoader for branch-api//jenkins.branch.OrganizationFolder$SCMSourceObserverImpl$1.recognizes(OrganizationFolder.java:1356)
      	at PluginClassLoader for branch-api//jenkins.branch.OrganizationFolder$SCMSourceObserverImpl$1.complete(OrganizationFolder.java:1371)
      	at PluginClassLoader for scm-api//jenkins.scm.api.trait.SCMNavigatorRequest.process(SCMNavigatorRequest.java:252)
      	at PluginClassLoader for scm-api//jenkins.scm.api.trait.SCMNavigatorRequest.process(SCMNavigatorRequest.java:202)
      	at PluginClassLoader for github-branch-source//org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator.visitSources(GitHubSCMNavigator.java:1145)
      	at PluginClassLoader for branch-api//jenkins.branch.OrganizationFolder.computeChildren(OrganizationFolder.java:530)
      	at PluginClassLoader for cloudbees-folder//com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:269)
      	at PluginClassLoader for cloudbees-folder//com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:167)
      	at PluginClassLoader for branch-api//jenkins.branch.OrganizationFolder$OrganizationScan.run(OrganizationFolder.java:915)
      	at hudson.model.ResourceController.execute(ResourceController.java:101)
      	at hudson.model.Executor.run(Executor.java:447)
      

      The failure on a single repository interrupts everything. The Organization is not resilient to such kind of issues. It could be improved to skip the failing repo and carry on.

            allan_burdajewicz Allan BURDAJEWICZ
            allan_burdajewicz Allan BURDAJEWICZ
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: