瀏覽代碼

Fix InterruptTimer leak in BasePackConnection

When setting timeout on push, BasePackConnection creates a timer, which
will be terminated when push finishes. But, when using
SmartHttpPushConnection, it dropped the first timer created in the
constructor and then created another timer in doPush. If new threads are
created faster than the gc collects then this may stop the service if
it's hitting the max process limit. Hence don't create a new timer if it
already exists.

Bug: 474947
Change-Id: I6746ffe4584ad919369afd5bdbba66fe736be314
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v4.2.0.201601211800-r
Matthias Sohn 8 年之前
父節點
當前提交
6340c76d8b
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3
    1
      org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java

+ 3
- 1
org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java 查看文件

@@ -143,7 +143,9 @@ abstract class BasePackConnection extends BaseConnection {
final int timeout = transport.getTimeout();
if (timeout > 0) {
final Thread caller = Thread.currentThread();
myTimer = new InterruptTimer(caller.getName() + "-Timer"); //$NON-NLS-1$
if (myTimer == null) {
myTimer = new InterruptTimer(caller.getName() + "-Timer"); //$NON-NLS-1$
}
timeoutIn = new TimeoutInputStream(myIn, myTimer);
timeoutOut = new TimeoutOutputStream(myOut, myTimer);
timeoutIn.setTimeout(timeout * 1000);

Loading…
取消
儲存