From b58492239c4c3acc3b4434625d08827450fde078 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 03 May 2013 19:15:05 -0400
Subject: [PATCH] GO NIO connector thread pool size setting

---
 src/main/java/com/gitblit/GitBlitServer.java |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/gitblit/GitBlitServer.java b/src/main/java/com/gitblit/GitBlitServer.java
index 79d3d6b..a41b8a2 100644
--- a/src/main/java/com/gitblit/GitBlitServer.java
+++ b/src/main/java/com/gitblit/GitBlitServer.java
@@ -203,7 +203,7 @@
 
 		// conditionally configure the http connector
 		if (params.port > 0) {
-			Connector httpConnector = createConnector(params.useNIO, params.port);
+			Connector httpConnector = createConnector(params.useNIO, settings.getInteger(Keys.server.nioThreadPoolSize, 50), params.port);
 			String bindInterface = settings.getString(Keys.server.httpBindInterface, null);
 			if (!StringUtils.isEmpty(bindInterface)) {
 				logger.warn(MessageFormat.format("Binding connector on port {0,number,0} to {1}",
@@ -262,7 +262,7 @@
 
 			if (serverKeyStore.exists()) {		        
 				Connector secureConnector = createSSLConnector(params.alias, serverKeyStore, serverTrustStore, params.storePassword,
-						caRevocationList, params.useNIO, params.securePort, params.requireClientCertificates);
+						caRevocationList, params.useNIO, settings.getInteger(Keys.server.nioThreadPoolSize, 50), params.securePort, params.requireClientCertificates);
 				String bindInterface = settings.getString(Keys.server.httpsBindInterface, null);
 				if (!StringUtils.isEmpty(bindInterface)) {
 					logger.warn(MessageFormat.format(
@@ -410,15 +410,16 @@
 	 * 
 	 * @param useNIO
 	 * @param port
+	 * @param maxThreads
 	 * @return an http connector
 	 */
-	private Connector createConnector(boolean useNIO, int port) {
+	private Connector createConnector(boolean useNIO, int port, int maxThreads) {
 		Connector connector;
 		if (useNIO) {
 			logger.info("Setting up NIO SelectChannelConnector on port " + port);
 			SelectChannelConnector nioconn = new SelectChannelConnector();
 			nioconn.setSoLingerTime(-1);
-			nioconn.setThreadPool(new QueuedThreadPool(20));
+			nioconn.setThreadPool(new QueuedThreadPool(maxThreads));
 			connector = nioconn;
 		} else {
 			logger.info("Setting up SocketConnector on port " + port);
@@ -443,12 +444,13 @@
 	 * @param storePassword
 	 * @param caRevocationList
 	 * @param useNIO
+	 * @param nioThreadPoolSize
 	 * @param port
 	 * @param requireClientCertificates
 	 * @return an https connector
 	 */
 	private Connector createSSLConnector(String certAlias, File keyStore, File clientTrustStore,
-			String storePassword, File caRevocationList, boolean useNIO, int port, 
+			String storePassword, File caRevocationList, boolean useNIO,  int nioThreadPoolSize, int port,
 			boolean requireClientCertificates) {
 		GitblitSslContextFactory factory = new GitblitSslContextFactory(certAlias,
 				keyStore, clientTrustStore, storePassword, caRevocationList);
@@ -462,7 +464,7 @@
 			} else {
 				factory.setWantClientAuth(true);
 			}
-			ssl.setThreadPool(new QueuedThreadPool(20));
+			ssl.setThreadPool(new QueuedThreadPool(nioThreadPoolSize));
 			connector = ssl;
 		} else {
 			logger.info("Setting up NIO SslSocketConnector on port " + port);

--
Gitblit v1.9.1