-
Bug
-
Resolution: Fixed
-
Minor
-
None
I have just seen this in production:
"jenkins.util.Timer [#10]" #346 daemon prio=5 java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:422) at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:460) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863) - locked <0x1c04e1e3> (a java.lang.Object) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) - locked <0x48a0c74> (a java.lang.Object) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195) - locked <0xea9b657> (a sun.net.www.protocol.https.DelegateHttpsURLConnection) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318) at org.kohsuke.github.Requester.parse(Requester.java:447) at org.kohsuke.github.Requester._to(Requester.java:224) at org.kohsuke.github.Requester.to(Requester.java:191) at org.kohsuke.github.GitHub.getRateLimit(GitHub.java:243) at org.jenkinsci.plugins.ghprb.GhprbRepository.initGhRepository(GhprbRepository.java:54) at org.jenkinsci.plugins.ghprb.GhprbRepository.check(GhprbRepository.java:76) at org.jenkinsci.plugins.ghprb.Ghprb.run(Ghprb.java:104) at org.jenkinsci.plugins.ghprb.GhprbTrigger.run(GhprbTrigger.java:165) at hudson.triggers.Trigger.checkTriggers(Trigger.java:266) at hudson.triggers.Trigger$Cron.doRun(Trigger.java:214) at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:54) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Locked ownable synchronizers: - <0x6df9460b> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
The thread does not respond to #interrupt() or #stop(). It seems to be the same problem as JENKINS-22245.
Workaround
The problem will be resolved by Jenkins restart. In case of urgency following groovy script kicks in a new trigger thread:
def cron = new hudson.triggers.Trigger.Cron(); jenkins.util.Timer.get().scheduleAtFixedRate(cron, 0, cron.getRecurrencePeriod(), java.util.concurrent.TimeUnit.MILLISECONDS);