From 4ea71db138f08458dd4e046733162773a8635014 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Wed, 17 Jul 2013 10:15:38 -0700 Subject: [PATCH] fix NPE in localhostendpoint --- .../org/apache/cloudstack/storage/LocalHostEndpoint.java | 6 ++++++ .../storage/endpoint/DefaultEndPointSelector.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java b/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java index 932a07fbd0f..060ad6a9910 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java +++ b/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.configuration.dao.ConfigurationDaoImpl; +import com.cloud.utils.component.ComponentContext; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.storage.command.CopyCommand; @@ -56,6 +57,11 @@ public class LocalHostEndpoint implements EndPoint { executor = Executors.newScheduledThreadPool(10); } + public static EndPoint getEndpoint() { + LocalHostEndpoint endpoint = ComponentContext.inject(LocalHostEndpoint.class); + return endpoint; + } + @Override public long getId() { // TODO Auto-generated method stub diff --git a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java index a44bbec635a..bbd6b6e12d1 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java +++ b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java @@ -191,7 +191,7 @@ public class DefaultEndPointSelector implements EndPointSelector { // we can arbitrarily pick one ssvm to do that task List ssAHosts = listUpAndConnectingSecondaryStorageVmHost(dcId); if (ssAHosts == null || ssAHosts.isEmpty()) { - return new LocalHostEndpoint(); // use local host as endpoint in + return LocalHostEndpoint.getEndpoint(); // use local host as endpoint in // case of no ssvm existing } Collections.shuffle(ssAHosts);