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)