Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-12480

CVS module of JIRA closes STDOUT

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • High
    • 3.8.1
    • 3.8
    • None

    Description

      Quoting the error description:

      I can confirm that the cvs components of JIRA do indirectly attempt close the logs, resulting in a close of System.err, which, due to tomcat invocation redirection, is the same as stdout. I have attached a wrapping Stream to stderr that dumps a stacktrace whenever someone attempts to close it. Here is it's output (there are plenty of those at JIRA startup):

      java.lang.Exception: Someone tried to close the stream System.err
              at be.rmi.intranet.tomcat.IOGuardianListener$GuardedStream.close(IOGuardianListener.java:95)
              at org.apache.jasper.util.SystemLogHandler.close(SystemLogHandler.java:123)
              at org.apache.jasper.util.SystemLogHandler.close(SystemLogHandler.java:123)
              at org.apache.jasper.util.SystemLogHandler.close(SystemLogHandler.java:123)
              at com.jcraft.jsch.IO.close(Unknown Source)
              at com.jcraft.jsch.Channel.disconnect(Unknown Source)
              at org.netbeans.lib.cvsclient.connection.ExtConnection.close(Unknown Source)
              at com.atlassian.jira.vcs.cvsimpl.CvsRepositoryUtilImpl.updateCvs(CvsRepositoryUtilImpl.java:427)
              at com.atlassian.jira.vcs.cvsimpl.CvsRepository.updateCvs(CvsRepository.java:232)
              at com.atlassian.jira.vcs.cvsimpl.CvsRepository.updateRepository(CvsRepository.java:287)
              at com.atlassian.jira.vcs.DefaultRepositoryManager.updateRepository(DefaultRepositoryManager.java:547)
              at com.atlassian.jira.vcs.DefaultRepositoryManager.updateRepositories(DefaultRepositoryManager.java:500)
              at com.atlassian.jira.service.services.vcs.VcsService.run(VcsService.java:54)
              at com.atlassian.jira.service.JiraServiceContainerImpl.run(JiraServiceContainerImpl.java:67)
              at com.atlassian.jira.service.ServiceRunner.execute(ServiceRunner.java:48)
              at org.quartz.core.JobRunShell.run(JobRunShell.java:191)
              at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:516)
      

      Here is, basically, the code used to 'guard' System.err stream:

      PrintStream err = System.err;
      err.flush();
      System.setErr(new GuardedStream(err,"System.err"));
      

      GuardedStream follows simply the delegation pattern, except for close() where it refuses the close() operation and dumps a stacktrace to stdout.

      Attachments

        Activity

          People

            Unassigned Unassigned
            iristic Igor Ristic
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: