Author: yurize
Date: Sat Dec 10 16:50:41 2011
New Revision: 1212824
URL: http://svn.apache.org/viewvc?rev=1212824&view=rev
Log:
Addresses TODO to move the thread counts from the code into server.config
properties.
Modified:
incubator/wave/trunk/README
incubator/wave/trunk/server-config.xml
incubator/wave/trunk/server.config.example
incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java
incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java
incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveServerModule.java
Modified: incubator/wave/trunk/README
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/README?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
--- incubator/wave/trunk/README (original)
+++ incubator/wave/trunk/README Sat Dec 10 16:50:41 2011
@@ -16,7 +16,6 @@ Wave in a Box uses Ant to build. To run
ant test
</code>
-To run tests and then build the server and client run:
<code>
ant
</code>
@@ -25,7 +24,7 @@ To build the client and server without t
<code>
ant compile-gwt dist-server
</code>
-
+
It will be created in dist/waveinabox-X.Y.jar.
Modified: incubator/wave/trunk/server-config.xml
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/server-config.xml?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
--- incubator/wave/trunk/server-config.xml (original)
+++ incubator/wave/trunk/server-config.xml Sat Dec 10 16:50:41 2011
@@ -19,8 +19,11 @@
<property name="use_socketio" value="true" />
<property name="admin_user" value="@${wave_server_domain}" />
<property name="welcome_wave_id" value="" />
-
-
+ <property name="listener_executor_thread_count" value="1" />
+ <property name="wavelet_load_executor_thread_count" value="2" />
+ <property name="delta_persist_executor_thread_count" value="2" />
+
+
<!-- Properties for server.federation.config -->
<property name="xmpp_server_secret" value="opensesame" />
<property name="certificate_private_key" value="${wave_server_domain}.key" />
@@ -77,6 +80,9 @@
<token key="USE_SOCKETIO" value="${use_socketio}" />
<token key="ADMIN_USER" value="${admin_user}" />
<token key="WELCOME_WAVE_ID" value="${welcome_wave_id}" />
+ <token key="LISTENER_EXECUTOR_THREAD_COUNT"
value="${listener_executor_thread_count}" />
+ <token key="WAVELET_LOAD_EXECUTOR_THREAD_COUNT"
value="${wavelet_load_executor_thread_count}" />
+ <token key="DELTA_PERSIST_EXECUTOR_THREAD_COUNT"
value="${delta_persist_executor_thread_count}" />
</replacetokens>
</filterchain>
</copy>
Modified: incubator/wave/trunk/server.config.example
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/server.config.example?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
--- incubator/wave/trunk/server.config.example (original)
+++ incubator/wave/trunk/server.config.example Sat Dec 10 16:50:41 2011
@@ -82,11 +82,19 @@ use_socketio = @USE_SOCKETIO@
admin_user = @ADMIN_USER@
# The wave id of the welcome template wave. (Without domain, for example:
w+Fxjs_-ZPmmA).
-# If filled in then a copy of this wave (actually only the root blip) will be
+# If filled in then a copy of this wave (actually only the root blip) will be
# automatically added to the inbox of every new user.
# Default value: "" (empty)
welcome_wave_id = @WELCOME_WAVE_ID@
+# Thread counts
+#The number of threads to listen on wavelet updates. Default value: 1
+listener_executor_thread_count = @LISTENER_EXECUTOR_THREAD_COUNT@
+#The number of threads for loading wavelets. Default value: 2
+wavelet_load_executor_thread_count = @WAVELET_LOAD_EXECUTOR_THREAD_COUNT@
+#The number of threads to persist deltas. Default value: 2
+delta_persist_executor_thread_count = @DELTA_PERSIST_EXECUTOR_THREAD_COUNT@
+
# To enable federation, edit the server.federation.config file and include it
here.
# Or run ant -f server-config.xml server-federation-config
# If not using the server-config.xml ant script - it is possible just to
comment the line.
Modified: incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
--- incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java
(original)
+++ incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java Sat
Dec 10 16:50:41 2011
@@ -50,6 +50,9 @@ public class CoreSettings {
public static final String GADGET_SERVER_PATH = "gadget_server_path";
public static final String ADMIN_USER = "admin_user";
public static final String WELCOME_WAVE_ID = "welcome_wave_id";
+ public static final String LISTENER_EXECUTOR_THREAD_COUNT =
"listener_executor_thread_count";
+ public static final String WAVELET_LOAD_EXECUTOR_THREAD_COUNT =
"wavelet_load_executor_thread_count";
+ public static final String DELTA_PERSIST_EXECUTOR_THREAD_COUNT =
"delta_persist_executor_thread_count";
@Setting(name = WAVE_SERVER_DOMAIN)
private static String waveServerDomain;
@@ -151,4 +154,19 @@ public class CoreSettings {
@Setting(name = WELCOME_WAVE_ID, description = "The welcome wave id.",
defaultValue = "UNDEFINED")
private static String welcomeWaveId;
+
+ @Setting(name = LISTENER_EXECUTOR_THREAD_COUNT,
+ description = "The number of threads to process wavelet updates.",
+ defaultValue = "1")
+ private static int listenerExecutorThreadCount;
+
+ @Setting(name = WAVELET_LOAD_EXECUTOR_THREAD_COUNT,
+ description = "The number of threads for loading wavelets.",
+ defaultValue = "2")
+ private static int waveletLoadExecutorThreadCount;
+
+ @Setting(name = DELTA_PERSIST_EXECUTOR_THREAD_COUNT,
+ description = "The number of threads to persist deltas.",
+ defaultValue = "2")
+ private static int deltaPersistExecutorThreadCount;
}
Modified: incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
--- incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java
(original)
+++ incubator/wave/trunk/src/org/waveprotocol/box/server/ServerMain.java Sat
Dec 10 16:50:41 2011
@@ -140,6 +140,13 @@ public class ServerMain {
boolean enableFederation =
settingsInjector.getInstance(Key.get(Boolean.class,
Names.named(CoreSettings.ENABLE_FEDERATION)));
+ int listenerCount = settingsInjector.getInstance(Key.get(Integer.class,
+ Names.named(CoreSettings.LISTENER_EXECUTOR_THREAD_COUNT)));
+ int waveletLoadCount = settingsInjector.getInstance(Key.get(Integer.class,
+ Names.named(CoreSettings.WAVELET_LOAD_EXECUTOR_THREAD_COUNT)));
+ int deltaPersistCount = settingsInjector.getInstance(Key.get(Integer.class,
+ Names.named(CoreSettings.DELTA_PERSIST_EXECUTOR_THREAD_COUNT)));
+
if (enableFederation) {
Module federationSettings =
SettingsBinder.bindSettings(PROPERTIES_FILE_KEY,
FederationSettings.class);
@@ -150,8 +157,9 @@ public class ServerMain {
Module federationModule = buildFederationModule(settingsInjector,
enableFederation);
PersistenceModule persistenceModule =
settingsInjector.getInstance(PersistenceModule.class);
Injector injector =
- settingsInjector.createChildInjector(new
ServerModule(enableFederation),
- new RobotApiModule(), federationModule, persistenceModule);
+ settingsInjector.createChildInjector(new
ServerModule(enableFederation, listenerCount,
+ waveletLoadCount, deltaPersistCount), new RobotApiModule(),
federationModule,
+ persistenceModule);
ServerRpcProvider server = injector.getInstance(ServerRpcProvider.class);
WaveBus waveBus = injector.getInstance(WaveBus.class);
Modified: incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
--- incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java
(original)
+++ incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java Sat
Dec 10 16:50:41 2011
@@ -57,9 +57,16 @@ import javax.security.auth.login.Configu
*/
public class ServerModule extends AbstractModule {
private final boolean enableFederation;
+ private final int listenerCount;
+ private final int waveletLoadCount;
+ private final int deltaPersistCount;
- public ServerModule(boolean enableFederation) {
+ public ServerModule(boolean enableFederation, int listenerCount, int
waveletLoadCount,
+ int deltaPersistCount) {
this.enableFederation = enableFederation;
+ this.listenerCount = listenerCount;
+ this.waveletLoadCount = waveletLoadCount;
+ this.deltaPersistCount = deltaPersistCount;
}
@Override
@@ -73,7 +80,8 @@ public class ServerModule extends Abstra
bind(WaveletFederationProvider.class).annotatedWith(FederationHostBridge.class).to(
WaveServerImpl.class);
- install(new WaveServerModule(enableFederation));
+ install(new WaveServerModule(enableFederation, listenerCount,
waveletLoadCount,
+ deltaPersistCount));
TypeLiteral<List<String>> certs = new TypeLiteral<List<String>>() {};
bind(certs).annotatedWith(Names.named("certs")).toInstance(Arrays.<String>
asList());
Modified:
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveServerModule.java
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveServerModule.java?rev=1212824&r1=1212823&r2=1212824&view=diff
==============================================================================
---
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveServerModule.java
(original)
+++
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveServerModule.java
Sat Dec 10 16:50:41 2011
@@ -54,22 +54,21 @@ import java.util.concurrent.Executors;
*
*/
public class WaveServerModule extends AbstractModule {
- // TODO(soren): move to global config file
- private static final int LISTENER_EXECUTOR_THREAD_COUNT = 2;
- private static final int WAVELET_LOAD_EXECUTOR_THREAD_COUNT = 2;
- private static final int DELTA_PERSIST_EXECUTOR_THREAD_COUNT = 2;
private static final IdURIEncoderDecoder URI_CODEC =
new IdURIEncoderDecoder(new JavaUrlCodec());
private static final HashedVersionFactory HASH_FACTORY = new
HashedVersionFactoryImpl(URI_CODEC);
- private final Executor waveletLoadExecutor =
- Executors.newFixedThreadPool(WAVELET_LOAD_EXECUTOR_THREAD_COUNT);
- private final Executor persistExecutor =
- Executors.newFixedThreadPool(DELTA_PERSIST_EXECUTOR_THREAD_COUNT);
+ private final int listenerExecutorThreadCount;
+ private final Executor waveletLoadExecutor;
+ private final Executor persistExecutor;
private final boolean enableFederation;
- public WaveServerModule(boolean enableFederation) {
+ public WaveServerModule(boolean enableFederation, int listenerCount, int
waveletLoadCount,
+ int deltaPersistCount) {
this.enableFederation = enableFederation;
+ this.listenerExecutorThreadCount = listenerCount;
+ waveletLoadExecutor = Executors.newFixedThreadPool(waveletLoadCount);
+ persistExecutor = Executors.newFixedThreadPool(deltaPersistCount);
}
@Override
@@ -105,7 +104,7 @@ public class WaveServerModule extends Ab
bind(WaveletProvider.class).to(WaveServerImpl.class).asEagerSingleton();
bind(HashedVersionFactory.class).toInstance(HASH_FACTORY);
bind(Executor.class).annotatedWith(Names.named("listener_executor")).toInstance(
- Executors.newFixedThreadPool(LISTENER_EXECUTOR_THREAD_COUNT));
+ Executors.newFixedThreadPool(listenerExecutorThreadCount));
}
@Provides