Guest User

Untitled

a guest
Jul 17th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1. diff --git a/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java b/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java
  2. index 1009abd..ec9e390 100644
  3. --- a/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java
  4. +++ b/src/java/voldemort/server/protocol/vold/VoldemortNativeRequestHandler.java
  5. @@ -3,6 +3,7 @@ package voldemort.server.protocol.vold;
  6. import java.io.DataInputStream;
  7. import java.io.DataOutputStream;
  8. import java.io.IOException;
  9. +import java.io.StringReader;
  10. import java.nio.ByteBuffer;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. @@ -20,12 +21,15 @@ import voldemort.server.protocol.RequestHandler;
  14. import voldemort.server.protocol.StreamRequestHandler;
  15. import voldemort.store.ErrorCodeMapper;
  16. import voldemort.store.Store;
  17. +import voldemort.store.metadata.MetadataStore;
  18. import voldemort.utils.ByteArray;
  19. import voldemort.utils.ByteBufferBackedInputStream;
  20. import voldemort.utils.ByteUtils;
  21. import voldemort.versioning.VectorClock;
  22. import voldemort.versioning.Version;
  23. import voldemort.versioning.Versioned;
  24. +import voldemort.xml.ClusterMapper;
  25. +import voldemort.xml.StoreDefinitionsMapper;
  26.  
  27. /**
  28. * Server-side request handler for voldemort native client protocol
  29. @@ -249,6 +253,17 @@ public class VoldemortNativeRequestHandler extends AbstractRequestHandler implem
  30. writeException(outputStream, e);
  31. return;
  32. }
  33. +
  34. + if(new String(key.get()).equals(MetadataStore.STORES_KEY)) {
  35. + String storesXml = new String(results.get(0).getValue());
  36. + new StoreDefinitionsMapper().readStoreList(new StringReader(storesXml));
  37. + logger.info("Sent back stores.xml\n\n");
  38. + } else if(new String(key.get()).equals(MetadataStore.CLUSTER_KEY)) {
  39. + String clusterXml = new String(results.get(0).getValue());
  40. + new ClusterMapper().readCluster(new StringReader(clusterXml));
  41. + logger.info("Sent back cluster.xml\n\n");
  42. + }
  43. +
  44. writeResults(outputStream, results);
  45. }
  46.  
  47. diff --git a/test/integration/voldemort/performance/MetadataStressTest.java b/test/integration/voldemort/performance/MetadataStressTest.java
  48. new file mode 100644
  49. index 0000000..71c274e
  50. --- /dev/null
  51. +++ b/test/integration/voldemort/performance/MetadataStressTest.java
  52. @@ -0,0 +1,69 @@
  53. +package voldemort.performance;
  54. +
  55. +import java.io.StringReader;
  56. +
  57. +import org.apache.log4j.Logger;
  58. +
  59. +import voldemort.client.ClientConfig;
  60. +import voldemort.client.SocketStoreClientFactory;
  61. +import voldemort.store.metadata.MetadataStore;
  62. +import voldemort.xml.ClusterMapper;
  63. +import voldemort.xml.MappingException;
  64. +import voldemort.xml.StoreDefinitionsMapper;
  65. +
  66. +public class MetadataStressTest {
  67. +
  68. + private static final Logger logger = Logger.getLogger(MetadataStressTest.class);
  69. +
  70. + public static void main(String[] args) throws Exception {
  71. +
  72. + if(args.length < 3) {
  73. + System.err.println("java voldemort.performance.MetadataStressTest url iterations selectors threads");
  74. + System.exit(-1);
  75. + }
  76. +
  77. + String url = args[0];
  78. + final int count = Integer.parseInt(args[1]);
  79. + int numSelectors = Integer.parseInt(args[2]);
  80. + int numThreads = Integer.parseInt(args[3]);
  81. + final SocketStoreClientFactory factory = new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(url)
  82. + .setMaxThreads(numThreads)
  83. + .setSelectors(numSelectors));
  84. +
  85. + for(int j = 0; j < count; j++) {
  86. + String clusterXml = null;
  87. +
  88. + try {
  89. + Thread.sleep(2000);
  90. + logger.info("Requesting cluster.xml");
  91. + clusterXml = factory.bootstrapMetadataWithRetries(MetadataStore.CLUSTER_KEY);
  92. + new ClusterMapper().readCluster(new StringReader(clusterXml));
  93. + logger.info("Received cluster.xml\n\n");
  94. + } catch(MappingException me) {
  95. + System.out.println("Got this for " + MetadataStore.CLUSTER_KEY + ": " + clusterXml);
  96. + System.exit(-1);
  97. + } catch(Exception e) {
  98. + // Don't fail on non XML exceptions, just
  99. + // continue on
  100. + e.printStackTrace();
  101. + }
  102. +
  103. + String storesXml = null;
  104. +
  105. + try {
  106. + Thread.sleep(2000);
  107. + logger.info("Requesting stores.xml");
  108. + storesXml = factory.bootstrapMetadataWithRetries(MetadataStore.STORES_KEY);
  109. + new StoreDefinitionsMapper().readStoreList(new StringReader(storesXml));
  110. + logger.info("Received stores.xml\n\n");
  111. + } catch(MappingException me) {
  112. + System.out.println("Got this for " + MetadataStore.STORES_KEY + ": " + storesXml);
  113. + System.exit(-1);
  114. + } catch(Exception e) {
  115. + // Don't fail on non XML exceptions, just
  116. + // continue on
  117. + e.printStackTrace();
  118. + }
  119. + }
  120. + }
  121. +}
Add Comment
Please, Sign In to add comment