Author: jbellis
Date: Fri Feb 5 17:09:39 2010
New Revision: 907005
URL: http://svn.apache.org/viewvc?rev=907005&view=rev
Log:
make init* methods idempotent. patch by Stu Hood and jbellis for CASSANDRA-342
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=907005&r1=907004&r2=907005&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
Fri Feb 5 17:09:39 2010
@@ -143,6 +143,7 @@
private Multimap<InetAddress, String> bootstrapSet;
/* when intialized as a client, we shouldn't write to the system table. */
private boolean isClientMode;
+ private boolean initialized;
public synchronized void addBootstrapSource(InetAddress s, String table)
{
@@ -257,8 +258,15 @@
MessagingService.shutdown();
}
- public void initClient() throws IOException
+ public synchronized void initClient() throws IOException
{
+ if (initialized)
+ {
+ if (!isClientMode)
+ throw new UnsupportedOperationException("StorageService does
not support switching modes.");
+ return;
+ }
+ initialized = true;
isClientMode = true;
logger_.info("Starting up client gossip");
MessagingService.instance.listen(FBUtilities.getLocalAddress());
@@ -266,8 +274,15 @@
Gossiper.instance.start(FBUtilities.getLocalAddress(),
(int)(System.currentTimeMillis() / 1000)); // needed for node-ring gathering.
}
- public void initServer() throws IOException
+ public synchronized void initServer() throws IOException
{
+ if (initialized)
+ {
+ if (isClientMode)
+ throw new UnsupportedOperationException("StorageService does
not support switching modes.");
+ return;
+ }
+ initialized = true;
isClientMode = false;
storageMetadata_ = SystemTable.initMetadata();
DatabaseDescriptor.createAllDirectories();