[ASTERIXDB-2007][CLUS] Ensure AppCtx created before stopping Active Handler
- user model changes: no
- storage format changes: no
- interface changes: no
details:
- if application.start() fails before creation of the application
context, then application.stop() will throw a null pointer
exception. This change checks that appCtx is not null before
dispatching calls on the object.
Change-Id: I898b6192fd91054129ed11d20c7ffe21116408c2
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1908
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java
index dc92f92..3627974 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java
@@ -65,7 +65,6 @@
import org.apache.asterix.common.context.IStorageComponentProvider;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.library.ILibraryManager;
-import org.apache.asterix.metadata.lock.MetadataLockManager;
import org.apache.asterix.common.replication.IFaultToleranceStrategy;
import org.apache.asterix.common.replication.IReplicationStrategy;
import org.apache.asterix.common.utils.Servlets;
@@ -76,6 +75,7 @@
import org.apache.asterix.metadata.api.IAsterixStateProxy;
import org.apache.asterix.metadata.bootstrap.AsterixStateProxy;
import org.apache.asterix.metadata.cluster.ClusterManagerProvider;
+import org.apache.asterix.metadata.lock.MetadataLockManager;
import org.apache.asterix.runtime.job.resource.JobCapacityController;
import org.apache.asterix.runtime.utils.CcApplicationContext;
import org.apache.asterix.runtime.utils.ClusterStateManager;
@@ -183,7 +183,9 @@
@Override
public void stop() throws Exception {
- ((ActiveNotificationHandler) appCtx.getActiveNotificationHandler()).stop();
+ if (appCtx != null) {
+ ((ActiveNotificationHandler) appCtx.getActiveNotificationHandler()).stop();
+ }
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info("Stopping Asterix cluster controller");
}