Branch: refs/heads/master
  Home:   https://github.com/jenkinsci/jira-plugin
  Commit: aed091d4cfc26fa421d37fb29c94c41cb262cc81
      
https://github.com/jenkinsci/jira-plugin/commit/aed091d4cfc26fa421d37fb29c94c41cb262cc81
  Author: Kohsuke Kawaguchi <[email protected]>
  Date:   2012-06-11 (Mon, 11 Jun 2012)

  Changed paths:
    M pom.xml
    M src/main/java/hudson/plugins/jira/JiraSite.java
    M src/test/java/hudson/plugins/jira/JiraChangeLogAnnotatorTest.java

  Log Message:
  -----------
  Fixed a UI hang issue.

If for some reason RPC calls to JIRA hangs, JIRA plugin would block the
UI thread. With this change, if the data isn't available after a few
seconds, we'll move on.

This is the thread dump of the hang:

   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    - locked <ce9fa12> (a java.net.SocksSocketImpl)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at sun.reflect.GeneratedMethodAccessor612.invoke(Unknown Source)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at 
org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
    at 
org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120)
    at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
    at 
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
    at 
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at 
hudson.plugins.jira.soap.JirasoapserviceV2SoapBindingStub.login(JirasoapserviceV2SoapBindingStub.java:3797)
    at hudson.plugins.jira.JiraSite.createSession(JiraSite.java:150)
    at hudson.plugins.jira.JiraSite.getProjectKeys(JiraSite.java:204)
    - locked <399a3dc> (a hudson.plugins.jira.JiraSite)
    at hudson.plugins.jira.JiraSite.existsIssue(JiraSite.java:260)
    at 
hudson.plugins.jira.JiraChangeLogAnnotator.annotate(JiraChangeLogAnnotator.java:54)
    at hudson.scm.ChangeLogSet$Entry.getMsgAnnotated(ChangeLogSet.java:210)
    at sun.reflect.GeneratedMethodAccessor587.invoke(Unknown Source)

And this is the UI thread blocked by it:

   java.lang.Thread.State: BLOCKED
    at hudson.plugins.jira.JiraSite.getProjectKeys(JiraSite.java:203)
    - waiting to lock <399a3dc> (a hudson.plugins.jira.JiraSite) owned by 
"Handling GET /view/PPD/view/PPD-PlayStation/job/PPD-PS3/3809/ : 
RequestHandlerThread[#314]" t@322375
    at hudson.plugins.jira.JiraSite.existsIssue(JiraSite.java:260)
    at 
hudson.plugins.jira.JiraChangeLogAnnotator.annotate(JiraChangeLogAnnotator.java:54)
    at hudson.scm.ChangeLogSet$Entry.getMsgAnnotated(ChangeLogSet.java:210)
    at sun.reflect.GeneratedMethodAccessor587.invoke(Unknown Source)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at 
org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
    at 
org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
    at 
org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
    at 
org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
    at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
    at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
    at 
org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
    at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
    at 
hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:72)
    at 
org.apache.commons.jelly.impl.ExpressionScript.run(ExpressionScript.java:66)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)



Reply via email to