summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/manager
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-05-29 11:48:37 -0400
committerJames Moger <james.moger@gitblit.com>2014-05-29 11:48:37 -0400
commit5bb55fb7e026378745a5f2c40cbfabd594010bd7 (patch)
treeee0cb16dabe11d45bc23e9c323181db6ab919920 /src/main/java/com/gitblit/manager
parent9f66a897e44fab56a6a7924aa2e1db57a405ab39 (diff)
downloadgitblit-5bb55fb7e026378745a5f2c40cbfabd594010bd7.tar.gz
gitblit-5bb55fb7e026378745a5f2c40cbfabd594010bd7.zip
Fix thread exhaustion in SSH daemon
Diffstat (limited to 'src/main/java/com/gitblit/manager')
-rw-r--r--src/main/java/com/gitblit/manager/ServicesManager.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/gitblit/manager/ServicesManager.java b/src/main/java/com/gitblit/manager/ServicesManager.java
index e0fc8bbd..b1c97ba4 100644
--- a/src/main/java/com/gitblit/manager/ServicesManager.java
+++ b/src/main/java/com/gitblit/manager/ServicesManager.java
@@ -47,6 +47,7 @@ import com.gitblit.transport.ssh.SshDaemon;
import com.gitblit.utils.IdGenerator;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
+import com.gitblit.utils.WorkQueue;
/**
* Services manager manages long-running services/processes that either have no
@@ -66,6 +67,10 @@ public class ServicesManager implements IManager {
private final IGitblit gitblit;
+ private final IdGenerator idGenerator;
+
+ private final WorkQueue workQueue;
+
private FanoutService fanoutService;
private GitDaemon gitDaemon;
@@ -75,6 +80,8 @@ public class ServicesManager implements IManager {
public ServicesManager(IGitblit gitblit) {
this.settings = gitblit.getSettings();
this.gitblit = gitblit;
+ this.idGenerator = new IdGenerator();
+ this.workQueue = new WorkQueue(idGenerator, 1);
}
@Override
@@ -99,6 +106,7 @@ public class ServicesManager implements IManager {
if (sshDaemon != null) {
sshDaemon.stop();
}
+ workQueue.stop();
return this;
}
@@ -158,7 +166,7 @@ public class ServicesManager implements IManager {
String bindInterface = settings.getString(Keys.git.sshBindInterface, "localhost");
if (port > 0) {
try {
- sshDaemon = new SshDaemon(gitblit, new IdGenerator());
+ sshDaemon = new SshDaemon(gitblit, workQueue);
sshDaemon.start();
} catch (IOException e) {
sshDaemon = null;