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

Add support for javahl as alternative to svnkit

    Details

    • Type: New Feature
    • Status: In Progress
    • Priority: Critical
    • Resolution: Unresolved
    • Component/s: subversion-plugin
    • Labels:
      None
    • Environment:
      Platform: All, OS: All

      Description

      Unlike FishEye Hudson supports only svnkit to access Subversion repositories.
      Svnkit may not be a viable solution for all shops. We're running Hudson
      (together with Subversion, Confluence, FishEye, Nexus and other development
      gear) on a single Solaris 10 box (T2000 with 8 cores, 32gb of memory and
      multiple ZFS formatted SAN volumes).

      Unlike javahl svnkit forks process to execute unix commands like "ls -ln" all
      over the place. Sometimes a process is not returning / finishing so svnkit is
      waiting for ever and the corresponding build job never finishes. A corresponding
      thread dump looks like the following:

      "Executor #1 for master" Id=27 RUNNABLE (in native)
      at java.lang.UNIXProcess.forkAndExec(Native Method)
      at java.lang.UNIXProcess.(UNIXProcess.java:53)
      at java.lang.ProcessImpl.start(ProcessImpl.java:65)
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
      at java.lang.Runtime.exec(Runtime.java:593)
      at java.lang.Runtime.exec(Runtime.java:509)
      at
      org.tmatesoft.svn.core.internal.wc.SVNFileUtil.execCommand(SVNFileUtil.java:1306)
      at
      org.tmatesoft.svn.core.internal.wc.SVNFileUtil.execCommand(SVNFileUtil.java:1297)
      at
      org.tmatesoft.svn.core.internal.wc.SVNFileUtil.execCommand(SVNFileUtil.java:1292)
      at
      org.tmatesoft.svn.core.internal.wc.SVNFileUtil.isExecutable(SVNFileUtil.java:1029)
      at org.tmatesoft.svn.core.internal.wc.SVNFileUtil.copyFile(SVNFileUtil.java:500)
      at org.tmatesoft.svn.core.internal.wc.SVNFileUtil.setReadonly(SVNFileUtil.java:392)
      at
      org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea.markLogProcessed(SVNAdminArea.java:1308)
      at
      org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea.runLogs(SVNAdminArea.java:561)
      at
      org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor$SVNDirectoryInfo.runLogs(SVNUpdateEditor.java:1539)
      at
      org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor.closeDir(SVNUpdateEditor.java:495)
      at
      org.tmatesoft.svn.core.internal.wc.SVNAmbientDepthFilterEditor.closeDir(SVNAmbientDepthFilterEditor.java:119)
      at
      org.tmatesoft.svn.core.internal.wc.SVNCancellableEditor.closeDir(SVNCancellableEditor.java:100)
      at
      org.tmatesoft.svn.core.internal.io.dav.handlers.DAVEditorHandler.endElement(DAVEditorHandler.java:448)
      at
      org.tmatesoft.svn.core.internal.io.dav.handlers.BasicDAVHandler.endElement(BasicDAVHandler.java:94)
      at
      com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
      at
      com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
      at
      com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
      at
      com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
      at
      com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
      at
      com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
      at
      com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
      at
      com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
      at
      com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
      at
      com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
      at
      org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:655)
      at
      org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:620)
      at
      org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.dispatch(HTTPRequest.java:207)
      at
      org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:321)
      at
      org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:255)
      at
      org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:243)
      at
      org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doReport(DAVConnection.java:256)
      at
      org.tmatesoft.svn.core.internal.io.dav.DAVRepository.runReport(DAVRepository.java:1189)
      at
      org.tmatesoft.svn.core.internal.io.dav.DAVRepository.update(DAVRepository.java:1055)
      at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:241)
      at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:159)
      at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:155)
      at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:405)
      at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:376)
      at hudson.FilePath.act(FilePath.java:363)
      at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:370)
      at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:321)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:631)
      at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:260)
      at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:234)
      at hudson.model.Run.run(Run.java:793)
      at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:205)
      at hudson.model.ResourceController.execute(ResourceController.java:70)
      at hudson.model.Executor.run(Executor.java:88)

      To terminate the hanging build we have to recycle Hudson via "kill -9".

      Javahl doesn't have this weakness. So for us using javahl instead of svnkit
      would be a better option than regularly checking for hanging builds and
      recycling Hudson.

        Issue Links

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              tjuerge tjuerge
            • Votes:
              23 Vote for this issue
              Watchers:
              16 Start watching this issue

              Dates

              • Created:
                Updated: