diff options
author | James Moger <james.moger@gitblit.com> | 2014-05-29 11:48:37 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-05-29 11:48:37 -0400 |
commit | 5bb55fb7e026378745a5f2c40cbfabd594010bd7 (patch) | |
tree | ee0cb16dabe11d45bc23e9c323181db6ab919920 /src/main/java/com/gitblit/manager | |
parent | 9f66a897e44fab56a6a7924aa2e1db57a405ab39 (diff) | |
download | gitblit-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.java | 10 |
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; |