diff --git a/src/java/voldemort/client/AbstractStoreClientFactory.java b/src/java/voldemort/client/AbstractStoreClientFactory.java index 5248dc47ac..9915bed47f 100644 --- a/src/java/voldemort/client/AbstractStoreClientFactory.java +++ b/src/java/voldemort/client/AbstractStoreClientFactory.java @@ -237,6 +237,10 @@ public Store getRawStore(String storeName, return serializedStore; } + protected ClientConfig getConfig() { + return config; + } + protected abstract FailureDetector initFailureDetector(final ClientConfig config, final Collection nodes); diff --git a/src/java/voldemort/client/SocketStoreClientFactory.java b/src/java/voldemort/client/SocketStoreClientFactory.java index 0e9bdd0e13..3a25adad0f 100644 --- a/src/java/voldemort/client/SocketStoreClientFactory.java +++ b/src/java/voldemort/client/SocketStoreClientFactory.java @@ -21,6 +21,7 @@ import java.net.URI; import java.util.Collection; import java.util.List; +import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import voldemort.VoldemortException; @@ -38,6 +39,7 @@ import voldemort.store.socket.clientrequest.ClientRequestExecutorPool; import voldemort.utils.ByteArray; import voldemort.utils.JmxUtils; +import voldemort.versioning.InconsistencyResolver; import voldemort.versioning.Versioned; /** @@ -71,6 +73,25 @@ public SocketStoreClientFactory(ClientConfig config) { JmxUtils.registerMbean(storeFactory, JmxUtils.createObjectName(storeFactory.getClass())); } + @Override + public StoreClient getStoreClient(final String storeName, + final InconsistencyResolver> resolver) { + // TODO HIGH: FIX testBootstrapServerDown, testUknownStoreName + if(getConfig().isLazyEnabled()) + return new LazyStoreClient(new Callable>() { + + public StoreClient call() throws Exception { + return getParentStoreClient(storeName, resolver); + } + }); + + return getParentStoreClient(storeName, resolver); + } + + private StoreClient getParentStoreClient(String storeName, InconsistencyResolver> resolver) { + return super.getStoreClient(storeName, resolver); + } + @Override protected List> getRemoteMetadata(String key, URI url) { try {