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


Reply via email to