소스 검색

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…
취소
저장