coredump functionality checkpoint:2
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java
index c04a3b5..daa39a5 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCApplicationEntryPoint.java
@@ -19,7 +19,7 @@
import edu.uci.ics.asterix.transaction.management.service.recovery.IRecoveryManager.SystemState;
import edu.uci.ics.hyracks.api.application.INCApplicationContext;
import edu.uci.ics.hyracks.api.application.INCApplicationEntryPoint;
-import edu.uci.ics.hyracks.control.nc.application.LifecycleComponentManager;
+import edu.uci.ics.hyracks.api.lifecycle.LifeCycleComponentManager;
public class NCApplicationEntryPoint implements INCApplicationEntryPoint {
private static final Logger LOGGER = Logger.getLogger(NCApplicationEntryPoint.class.getName());
@@ -36,15 +36,21 @@
ncApplicationContext = ncAppCtx;
nodeId = ncApplicationContext.getNodeId();
if (LOGGER.isLoggable(Level.INFO)) {
- LOGGER.info("Starting Asterix node controller: " + nodeId);
+ LOGGER.info("Starting Asterix node controller TAKE NOTE: " + nodeId);
}
JVMShutdownHook sHook = new JVMShutdownHook(this);
Runtime.getRuntime().addShutdownHook(sHook);
Map<String, String> lifecycleMgmtConfiguration = new HashMap<String, String>();
- lifecycleMgmtConfiguration.put(LifecycleComponentManager.Config.KEY_DUMP_PATH,
+ lifecycleMgmtConfiguration.put(LifeCycleComponentManager.Config.KEY_DUMP_PATH,
AsterixProperties.INSTANCE.getCoredumpPath(nodeId));
- LifecycleComponentManager.INSTANCE.configure(lifecycleMgmtConfiguration);
+ if (LOGGER.isLoggable(Level.INFO)) {
+ LOGGER.info("Coredump directory for NC is: " + AsterixProperties.INSTANCE.getCoredumpPath(nodeId));
+ }
+ LifeCycleComponentManager.INSTANCE.configure(lifecycleMgmtConfiguration);
+ if (LOGGER.isLoggable(Level.INFO)) {
+ LOGGER.info("Configured:" + LifeCycleComponentManager.INSTANCE);
+ }
runtimeContext = new AsterixAppRuntimeContext(ncApplicationContext);
runtimeContext.initialize();
ncApplicationContext.setApplicationObject(runtimeContext);
@@ -84,7 +90,7 @@
MetadataBootstrap.stopUniverse();
}
- LifecycleComponentManager.INSTANCE.stopAll(false);
+ LifeCycleComponentManager.INSTANCE.stopAll(false);
runtimeContext.deinitialize();
} else {
if (LOGGER.isLoggable(Level.INFO)) {
@@ -132,7 +138,7 @@
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info("Starting lifecycle components");
}
- LifecycleComponentManager.INSTANCE.startAll();
+ LifeCycleComponentManager.INSTANCE.startAll();
// TODO
// reclaim storage for orphaned index artifacts in NCs.
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ILockManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ILockManager.java
index 1341cc1..c9a6e1c 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ILockManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/ILockManager.java
@@ -17,15 +17,15 @@
import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
import edu.uci.ics.asterix.transaction.management.service.transaction.DatasetId;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
+import edu.uci.ics.hyracks.api.lifecycle.ILifeCycleComponent;
/**
* Interface for the lockManager
*
- * @author pouria
+ * @author pouria
* @author kisskys
- *
*/
-public interface ILockManager {
+public interface ILockManager extends ILifeCycleComponent {
/**
* The method to request a specific lock mode on a specific resource by a
@@ -40,13 +40,15 @@
* has a "weaker" lock, then the request would be interpreted as a convert
* request
* Waiting transaction would eventually garb the lock, or get timed-out
+ *
* @param datasetId
* @param entityHashValue
* @param lockMode
* @param txnContext
* @throws ACIDException
*/
- public void lock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext txnContext) throws ACIDException;
+ public void lock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext txnContext)
+ throws ACIDException;
/**
* The method releases "All" the locks taken/waiting-on by a specific
@@ -60,38 +62,39 @@
public void releaseLocks(TransactionContext txnContext) throws ACIDException;
/**
- *
* @param datasetId
* @param entityHashValue
* @param txnContext
- * @throws ACIDException TODO
+ * @throws ACIDException
+ * TODO
*/
public void unlock(DatasetId datasetId, int entityHashValue, TransactionContext txnContext) throws ACIDException;
/**
- *
* @param datasetId
* @param entityHashValue
* @param txnContext
- * @throws ACIDException TODO
+ * @throws ACIDException
+ * TODO
*/
- public void unlock(DatasetId datasetId, int entityHashValue, TransactionContext txnContext, boolean commitFlag) throws ACIDException;
-
+ public void unlock(DatasetId datasetId, int entityHashValue, TransactionContext txnContext, boolean commitFlag)
+ throws ACIDException;
+
/**
* Call to lock and unlock a specific resource in a specific lock mode
+ *
* @param datasetId
* @param entityHashValue
- * @param lockMode TODO
+ * @param lockMode
+ * TODO
* @param context
- *
* @return
* @throws ACIDException
*/
- public void instantLock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext context) throws ACIDException;
-
+ public void instantLock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext context)
+ throws ACIDException;
/**
- *
* @param datasetId
* @param entityHashValue
* @param lockMode
@@ -99,10 +102,10 @@
* @return
* @throws ACIDException
*/
- public boolean tryLock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext context) throws ACIDException;
-
+ public boolean tryLock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext context)
+ throws ACIDException;
+
/**
- *
* @param datasetId
* @param entityHashValue
* @param lockMode
@@ -112,6 +115,7 @@
*/
boolean instantTryLock(DatasetId datasetId, int entityHashValue, byte lockMode, TransactionContext txnContext)
throws ACIDException;
+
/**
* Prints out the contents of the transactions' table in a readable fashion
*
@@ -120,6 +124,4 @@
*/
public String prettyPrint() throws ACIDException;
-
-
}
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/LockManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/LockManager.java
index a354d2a..6b5619d 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/LockManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/locking/LockManager.java
@@ -15,6 +15,7 @@
package edu.uci.ics.asterix.transaction.management.service.locking;
+import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -32,6 +33,7 @@
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionManagementConstants.LockManagerConstants.LockMode;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionSubsystem;
+import edu.uci.ics.hyracks.api.lifecycle.LifeCycleComponentManager;
/**
* An implementation of the ILockManager interface for the
@@ -104,6 +106,7 @@
if (IS_DEBUG_MODE) {
this.lockRequestTracker = new LockRequestTracker();
}
+ LifeCycleComponentManager.INSTANCE.register(this);
}
@Override
@@ -2045,6 +2048,18 @@
unlatchLockTable();
}
}
+
+ @Override
+ public void start() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void stop(boolean dumpState, OutputStream ouputStream) {
+ // TODO Auto-generated method stub
+
+ }
}
class ConsecutiveWakeupContext {
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/ILogManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/ILogManager.java
index c629d03..df23af7 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/ILogManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/ILogManager.java
@@ -20,8 +20,9 @@
import edu.uci.ics.asterix.transaction.management.service.logging.IndexLogger.ReusableLogContentObject;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionSubsystem;
+import edu.uci.ics.hyracks.api.lifecycle.ILifeCycleComponent;
-public interface ILogManager {
+public interface ILogManager extends ILifeCycleComponent{
/**
* @param logType
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java
index 9b8f09c..d1fc1ca 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/LogManager.java
@@ -17,6 +17,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
@@ -40,6 +41,7 @@
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionManagementConstants;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionSubsystem;
import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.api.lifecycle.LifeCycleComponentManager;
public class LogManager implements ILogManager {
@@ -145,6 +147,7 @@
this.provider = provider;
initLogManagerProperties(this.provider.getId());
initLogManager();
+ LifeCycleComponentManager.INSTANCE.register(this);
}
public LogManager(TransactionSubsystem provider, String nodeId) throws ACIDException {
@@ -802,6 +805,18 @@
map.clear();
}
+
+ @Override
+ public void start() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void stop(boolean dumpState, OutputStream ouputStream) {
+ // TODO Auto-generated method stub
+
+ }
}
/*
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/IRecoveryManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/IRecoveryManager.java
index 38802a2..09c9782 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/IRecoveryManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/IRecoveryManager.java
@@ -18,6 +18,7 @@
import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
+import edu.uci.ics.hyracks.api.lifecycle.ILifeCycleComponent;
/**
* Provides API for failure recovery. Failure could be at application level and
@@ -25,7 +26,7 @@
* sophisticated mechanism of replaying logs and bringing the system to a
* consistent state ensuring durability.
*/
-public interface IRecoveryManager {
+public interface IRecoveryManager extends ILifeCycleComponent {
public enum SystemState {
NEW_UNIVERSE,
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/RecoveryManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/RecoveryManager.java
index 47c5dcb..f2bd18e 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/RecoveryManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/recovery/RecoveryManager.java
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -55,6 +56,7 @@
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionManager;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionSubsystem;
import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
+import edu.uci.ics.hyracks.api.lifecycle.LifeCycleComponentManager;
import edu.uci.ics.hyracks.storage.am.btree.impls.BTree;
import edu.uci.ics.hyracks.storage.am.common.api.IIndex;
import edu.uci.ics.hyracks.storage.am.common.api.IIndexLifecycleManager;
@@ -96,6 +98,7 @@
public RecoveryManager(TransactionSubsystem TransactionProvider) throws ACIDException {
this.txnSubsystem = TransactionProvider;
+ LifeCycleComponentManager.INSTANCE.register(this);
}
/**
@@ -780,6 +783,18 @@
+ undoCount);
}
}
+
+ @Override
+ public void start() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void stop(boolean dumpState, OutputStream ouputStream) {
+ // TODO Auto-generated method stub
+
+ }
}
class TxnId {
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/transaction/TransactionManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/transaction/TransactionManager.java
index d3294d0..b311b9a 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/transaction/TransactionManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/transaction/TransactionManager.java
@@ -22,7 +22,6 @@
import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
import edu.uci.ics.asterix.transaction.management.service.logging.LogType;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
/**
* An implementation of the @see ITransactionManager interface that provides