Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java b/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java
- index 1009abd..ec9e390 100644
- --- a/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java
- +++ b/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java
- @@ -3,6 +3,7 @@ package voldemort.server.protocol.vold;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- +import java.io.StringReader;
- import java.nio.ByteBuffer;
- import java.util.ArrayList;
- import java.util.HashMap;
- @@ -20,12 +21,15 @@ import voldemort.server.protocol.RequestHandler;
- import voldemort.server.protocol.StreamRequestHandler;
- import voldemort.store.ErrorCodeMapper;
- import voldemort.store.Store;
- +import voldemort.store.metadata.MetadataStore;
- import voldemort.utils.ByteArray;
- import voldemort.utils.ByteBufferBackedInputStream;
- import voldemort.utils.ByteUtils;
- import voldemort.versioning.VectorClock;
- import voldemort.versioning.Version;
- import voldemort.versioning.Versioned;
- +import voldemort.xml.ClusterMapper;
- +import voldemort.xml.StoreDefinitionsMapper;
- /**
- * Server-side request handler for voldemort native client protocol
- @@ -249,6 +253,17 @@ public class VoldemortNativeRequestHandler extends AbstractRequestHandler implem
- writeException(outputStream, e);
- return;
- }
- +
- + if(new String(key.get()).equals(MetadataStore.STORES_KEY)) {
- + String storesXml = new String(results.get(0).getValue());
- + new StoreDefinitionsMapper().readStoreList(new StringReader(storesXml));
- + logger.info("Sent back stores.xml\n\n");
- + } else if(new String(key.get()).equals(MetadataStore.CLUSTER_KEY)) {
- + String clusterXml = new String(results.get(0).getValue());
- + new ClusterMapper().readCluster(new StringReader(clusterXml));
- + logger.info("Sent back cluster.xml\n\n");
- + }
- +
- writeResults(outputStream, results);
- }
- diff --git a/test/integration/voldemort/performance/MetadataStressTest.java b/test/integration/voldemort/performance/MetadataStressTest.java
- new file mode 100644
- index 0000000..71c274e
- --- /dev/null
- +++ b/test/integration/voldemort/performance/MetadataStressTest.java
- @@ -0,0 +1,69 @@
- +package voldemort.performance;
- +
- +import java.io.StringReader;
- +
- +import org.apache.log4j.Logger;
- +
- +import voldemort.client.ClientConfig;
- +import voldemort.client.SocketStoreClientFactory;
- +import voldemort.store.metadata.MetadataStore;
- +import voldemort.xml.ClusterMapper;
- +import voldemort.xml.MappingException;
- +import voldemort.xml.StoreDefinitionsMapper;
- +
- +public class MetadataStressTest {
- +
- + private static final Logger logger = Logger.getLogger(MetadataStressTest.class);
- +
- + public static void main(String[] args) throws Exception {
- +
- + if(args.length < 3) {
- + System.err.println("java voldemort.performance.MetadataStressTest url iterations selectors threads");
- + System.exit(-1);
- + }
- +
- + String url = args[0];
- + final int count = Integer.parseInt(args[1]);
- + int numSelectors = Integer.parseInt(args[2]);
- + int numThreads = Integer.parseInt(args[3]);
- + final SocketStoreClientFactory factory = new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(url)
- + .setMaxThreads(numThreads)
- + .setSelectors(numSelectors));
- +
- + for(int j = 0; j < count; j++) {
- + String clusterXml = null;
- +
- + try {
- + Thread.sleep(2000);
- + logger.info("Requesting cluster.xml");
- + clusterXml = factory.bootstrapMetadataWithRetries(MetadataStore.CLUSTER_KEY);
- + new ClusterMapper().readCluster(new StringReader(clusterXml));
- + logger.info("Received cluster.xml\n\n");
- + } catch(MappingException me) {
- + System.out.println("Got this for " + MetadataStore.CLUSTER_KEY + ": " + clusterXml);
- + System.exit(-1);
- + } catch(Exception e) {
- + // Don't fail on non XML exceptions, just
- + // continue on
- + e.printStackTrace();
- + }
- +
- + String storesXml = null;
- +
- + try {
- + Thread.sleep(2000);
- + logger.info("Requesting stores.xml");
- + storesXml = factory.bootstrapMetadataWithRetries(MetadataStore.STORES_KEY);
- + new StoreDefinitionsMapper().readStoreList(new StringReader(storesXml));
- + logger.info("Received stores.xml\n\n");
- + } catch(MappingException me) {
- + System.out.println("Got this for " + MetadataStore.STORES_KEY + ": " + storesXml);
- + System.exit(-1);
- + } catch(Exception e) {
- + // Don't fail on non XML exceptions, just
- + // continue on
- + e.printStackTrace();
- + }
- + }
- + }
- +}
Add Comment
Please, Sign In to add comment