addressed Alex's code review for r217
git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_spring_cleaning@238 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java
index b9f4d57..dee3ee0 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java
@@ -38,7 +38,7 @@
import edu.uci.ics.asterix.aql.parser.AQLParser;
import edu.uci.ics.asterix.aql.parser.ParseException;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
-import edu.uci.ics.asterix.hyracks.bootstrap.APINodeState;
+import edu.uci.ics.asterix.hyracks.bootstrap.AsterixNodeState;
import edu.uci.ics.asterix.metadata.MetadataManager;
import edu.uci.ics.asterix.metadata.api.IAsterixStateProxy;
import edu.uci.ics.asterix.metadata.bootstrap.AsterixProperties;
@@ -93,7 +93,7 @@
// get the port of the node data server that is running on the first nc
IAsterixStateProxy proxy = (IAsterixStateProxy) appCtx.getDistributedState();
- nodeDataServerPort = ((APINodeState) proxy.getAsterixNodeState(outputNodeName)).getAPINodeDataServerPort();
+ nodeDataServerPort = ((AsterixNodeState) proxy.getAsterixNodeState(outputNodeName)).getAPINodeDataServerPort();
nodeDataServerStream = null;
// write the data into the output stores directory of the nc
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java
index 554ce3c..1bc3411 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java
@@ -24,7 +24,7 @@
import edu.uci.ics.asterix.common.config.GlobalConfig;
import edu.uci.ics.asterix.common.config.OptimizationConfUtil;
import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.formats.base.IDataFormat;
import edu.uci.ics.asterix.metadata.declared.AqlCompiledDatasetDecl;
@@ -89,7 +89,7 @@
LOGGER.info("DROP DATASETPATH: " + datasetPath);
- IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
AqlCompiledDatasetDecl adecl = metadata.findDataset(datasetName);
@@ -201,7 +201,7 @@
}
LOGGER.info("LOAD into File Splits: " + sb.toString());
- IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
TreeIndexBulkLoadOperatorDescriptor btreeBulkLoad = new TreeIndexBulkLoadOperatorDescriptor(spec,
storageManager, btreeRegistryProvider, splitsAndConstraint.first, typeTraits, comparatorFactories,
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java
index cbd34de..fbb6a6f 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java
@@ -8,7 +8,7 @@
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
import edu.uci.ics.asterix.common.config.OptimizationConfUtil;
import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.dataflow.data.nontagged.valueproviders.AqlPrimitiveValueProviderFactory;
import edu.uci.ics.asterix.formats.nontagged.AqlBinaryComparatorFactoryProvider;
@@ -106,7 +106,7 @@
String indexName = deleteStmt.getIndexName();
JobSpecification spec = new JobSpecification();
- IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
Pair<IFileSplitProvider, AlgebricksPartitionConstraint> splitsAndConstraint = datasetDecls
@@ -145,7 +145,7 @@
int numPrimaryKeys = DatasetUtils.getPartitioningFunctions(compiledDatasetDecl).size();
// ---------- START GENERAL BTREE STUFF
- IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
// ---------- END GENERAL BTREE STUFF
@@ -351,7 +351,7 @@
// ---------- START GENERAL BTREE STUFF
- IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
// ---------- END GENERAL BTREE STUFF
@@ -578,7 +578,7 @@
// ---------- START GENERAL BTREE STUFF
- IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
// ---------- END GENERAL BTREE STUFF
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java
index a96ccee..2c18192 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java
@@ -7,7 +7,7 @@
import java.util.List;
import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.AObjectAscBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AObjectSerializerDeserializer;
@@ -66,7 +66,7 @@
// ---------- START GENERAL BTREE STUFF
- IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
// ---------- END GENERAL BTREE STUFF
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java
index 01279f3..7fec3ef 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java
@@ -7,7 +7,7 @@
import java.util.List;
import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.AObjectAscBinaryComparatorFactory;
import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AObjectSerializerDeserializer;
@@ -66,7 +66,7 @@
// ---------- START GENERAL BTREE STUFF
- IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+ IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
// ---------- END GENERAL BTREE STUFF
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/APINodeState.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/AsterixNodeState.java
similarity index 94%
rename from asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/APINodeState.java
rename to asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/AsterixNodeState.java
index 0d8981e..dbf1625 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/APINodeState.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/AsterixNodeState.java
@@ -16,7 +16,7 @@
import java.io.Serializable;
-public class APINodeState implements Serializable {
+public class AsterixNodeState implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java
index 2b9f84a..ccba498 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java
@@ -117,7 +117,7 @@
Set<String> nodeNames = entry.getValue();
Iterator<String> it = nodeNames.iterator();
while (it.hasNext()) {
- APINodeState ns = new APINodeState();
+ AsterixNodeState ns = new AsterixNodeState();
ns.setAPINodeDataServerPort(startPort++);
proxy.setAsterixNodeState(it.next(), ns);
}
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java
index d469dd0..b1e7481 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java
@@ -14,58 +14,46 @@
*/
package edu.uci.ics.asterix.hyracks.bootstrap;
+import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.logging.Level;
import java.util.logging.Logger;
import edu.uci.ics.asterix.api.aqlj.server.NodeDataClientThreadFactory;
import edu.uci.ics.asterix.api.aqlj.server.ThreadedServer;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
-import edu.uci.ics.asterix.common.context.NodeApplicationState;
-import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.metadata.MetadataManager;
import edu.uci.ics.asterix.metadata.MetadataNode;
import edu.uci.ics.asterix.metadata.api.IAsterixStateProxy;
import edu.uci.ics.asterix.metadata.api.IMetadataNode;
import edu.uci.ics.asterix.metadata.bootstrap.MetadataBootstrap;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
import edu.uci.ics.hyracks.api.application.INCApplicationContext;
import edu.uci.ics.hyracks.api.application.INCBootstrap;
public class NCBootstrapImpl implements INCBootstrap {
private static final Logger LOGGER = Logger.getLogger(NCBootstrapImpl.class.getName());
- private final INodeApplicationState applicationState = new NodeApplicationState();
-
private INCApplicationContext ncApplicationContext = null;
+ private AsterixAppRuntimeContext runtimeContext;
private String nodeId;
private boolean isMetadataNode = false;
private ThreadedServer apiNodeDataServer;
@Override
public void start() throws Exception {
- ncApplicationContext.setApplicationObject(applicationState);
nodeId = ncApplicationContext.getNodeId();
-
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info("Starting Asterix node controller: " + nodeId);
}
- // Check if this node is the metadata node
- IAsterixStateProxy proxy = (IAsterixStateProxy) ncApplicationContext.getDistributedState();
- isMetadataNode = nodeId.equals(proxy.getAsterixProperties().getMetadataNodeName());
-
- // Initialize the runtime context
- AsterixAppRuntimeContext runtimeContext = new AsterixAppRuntimeContext(ncApplicationContext);
- applicationState.setApplicationRuntimeContext(runtimeContext);
+ runtimeContext = new AsterixAppRuntimeContext(ncApplicationContext);
runtimeContext.initialize();
- // Initialize the transaction sub-system
- TransactionProvider provider = new TransactionProvider(nodeId);
- applicationState.setTransactionProvider(provider);
+ ncApplicationContext.setApplicationObject(runtimeContext);
// Initialize metadata if this node is the metadata node
+ IAsterixStateProxy proxy = (IAsterixStateProxy) ncApplicationContext.getDistributedState();
+ isMetadataNode = nodeId.equals(proxy.getAsterixProperties().getMetadataNodeName());
if (isMetadataNode) {
registerRemoteMetadataNode(proxy);
@@ -83,19 +71,15 @@
// API server that lives on the CC and never by a client wishing to execute AQL.
// TODO: The API sub-system will change dramatically in the future and this code will go away,
// but leave it for now.
- APINodeState ns = (APINodeState) proxy.getAsterixNodeState(nodeId);
+ AsterixNodeState ns = (AsterixNodeState) proxy.getAsterixNodeState(nodeId);
apiNodeDataServer = new ThreadedServer(ns.getAPINodeDataServerPort(), new NodeDataClientThreadFactory());
apiNodeDataServer.start();
}
- public void registerRemoteMetadataNode(IAsterixStateProxy proxy) throws Exception {
+ public void registerRemoteMetadataNode(IAsterixStateProxy proxy) throws RemoteException {
IMetadataNode stub = null;
- try {
- MetadataNode.INSTANCE = new MetadataNode(applicationState);
- stub = (IMetadataNode) UnicastRemoteObject.exportObject(MetadataNode.INSTANCE, 0);
- } catch (Exception e) {
- throw new AsterixException(e);
- }
+ MetadataNode.INSTANCE.initialize(runtimeContext);
+ stub = (IMetadataNode) UnicastRemoteObject.exportObject(MetadataNode.INSTANCE, 0);
proxy.setMetadataNode(stub);
if (LOGGER.isLoggable(Level.INFO)) {
@@ -115,7 +99,7 @@
}
apiNodeDataServer.shutdown();
- applicationState.getApplicationRuntimeContext().deinitialize();
+ runtimeContext.deinitialize();
}
@Override
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java
index 39642d1..20d4c48 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java
@@ -4,7 +4,7 @@
import java.util.Set;
import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
import edu.uci.ics.asterix.common.dataflow.IAsterixApplicationContextInfo;
import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndexRegistryProvider;
@@ -21,7 +21,7 @@
@Override
public IIndexRegistryProvider<IIndex> getTreeRegisterProvider() {
- return AsterixTreeRegistryProvider.INSTANCE;
+ return AsterixIndexRegistryProvider.INSTANCE;
}
@Override
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/INodeApplicationState.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/INodeApplicationState.java
deleted file mode 100644
index d1d1a43..0000000
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/INodeApplicationState.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package edu.uci.ics.asterix.common.api;
-
-import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
-
-public interface INodeApplicationState {
- public AsterixAppRuntimeContext getApplicationRuntimeContext();
-
- public void setApplicationRuntimeContext(AsterixAppRuntimeContext context);
-
- public TransactionProvider getTransactionProvider();
-
- public void setTransactionProvider(TransactionProvider provider);
-}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java
index 201166e..bb39f90 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java
@@ -3,14 +3,13 @@
import java.util.logging.Logger;
public class GlobalConfig {
-
public static final boolean DEBUG = true;
+
public static final String ASTERIX_LOGGER_NAME = "edu.uci.ics.asterix";
+
public static final Logger ASTERIX_LOGGER = Logger.getLogger(ASTERIX_LOGGER_NAME);
- // public static Level ASTERIX_LOG_LEVEL = Level.FINEST;
public static final String ASTERIX_LOGFILE_PATTERN = "%t/asterix.log";
- // "%t/asterix%g.log";
public static final String DEFAULT_CONFIG_FILE_NAME = "test.properties";
@@ -22,9 +21,9 @@
public static final String BUFFER_CACHE_PAGE_SIZE_PROPERTY = "BufferCachePageSize";
- public static final String BUFFER_CACHE_SIZE_PROPERTY = "BufferCacheSize";
+ public static final String BUFFER_CACHE_NUM_PAGES_PROPERTY = "BufferCacheNumPages";
- public static final int DEFAULT_BUFFER_CACHE_SIZE = 4096;
+ public static final int DEFAULT_BUFFER_CACHE_NUM_PAGES = 4096;
public static final String HYRACKS_APP_NAME = "asterix";
@@ -33,18 +32,6 @@
public static final String FRAME_SIZE_PROPERTY = "FrameSize";
public static final float DEFAULT_BTREE_FILL_FACTOR = 1.00f;
+
public static int DEFAULT_INPUT_DATA_COLUMN = 0;
-
- // static {
- // Handler h;
- // try {
- // h = new ConsoleHandler();
- // h.setFormatter(new SysoutFormatter());
- // } catch (Exception e) {
- // h = new ConsoleHandler();
- // }
- // h.setLevel(ASTERIX_LOG_LEVEL);
- // ASTERIX_LOGGER.addHandler(h);
- // ASTERIX_LOGGER.setLevel(ASTERIX_LOG_LEVEL);
- // }
}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java
index 3f07e5b..36e8a4c 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java
@@ -4,6 +4,8 @@
import java.util.logging.Level;
import edu.uci.ics.asterix.common.config.GlobalConfig;
+import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
+import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
import edu.uci.ics.hyracks.api.application.INCApplicationContext;
import edu.uci.ics.hyracks.api.io.IIOManager;
import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
@@ -18,18 +20,20 @@
import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
public class AsterixAppRuntimeContext {
- private INCApplicationContext ncApplicationContext;
+ private final INCApplicationContext ncApplicationContext;
+
private IndexRegistry<IIndex> indexRegistry;
private IFileMapManager fileMapManager;
private IBufferCache bufferCache;
+ private TransactionProvider provider;
- public AsterixAppRuntimeContext(INCApplicationContext ncAppContext) {
- this.ncApplicationContext = ncAppContext;
+ public AsterixAppRuntimeContext(INCApplicationContext ncApplicationContext) {
+ this.ncApplicationContext = ncApplicationContext;
}
- public void initialize() throws IOException {
+ public void initialize() throws IOException, ACIDException {
int pageSize = getBufferCachePageSize();
- int cacheSize = getBufferCacheSize();
+ int numPages = getBufferCacheNumPages();
// Initialize file map manager
fileMapManager = new AsterixFileMapManager();
@@ -38,10 +42,13 @@
ICacheMemoryAllocator allocator = new HeapBufferAllocator();
IPageReplacementStrategy prs = new ClockPageReplacementStrategy();
IIOManager ioMgr = ncApplicationContext.getRootContext().getIOManager();
- bufferCache = new BufferCache(ioMgr, allocator, prs, fileMapManager, pageSize, cacheSize, Integer.MAX_VALUE);
+ bufferCache = new BufferCache(ioMgr, allocator, prs, fileMapManager, pageSize, numPages, Integer.MAX_VALUE);
// Initialize the index registry
indexRegistry = new IndexRegistry<IIndex>();
+
+ // Initialize the transaction sub-system
+ provider = new TransactionProvider(ncApplicationContext.getNodeId());
}
private int getBufferCachePageSize() {
@@ -55,7 +62,6 @@
GlobalConfig.ASTERIX_LOGGER.warning("Wrong buffer cache page size argument. "
+ "Using default value: " + pageSize);
}
- return pageSize;
}
}
@@ -66,26 +72,26 @@
return pageSize;
}
- private int getBufferCacheSize() {
- int cacheSize = GlobalConfig.DEFAULT_BUFFER_CACHE_SIZE;
- String cacheSizeStr = System.getProperty(GlobalConfig.BUFFER_CACHE_SIZE_PROPERTY, null);
- if (cacheSizeStr != null) {
+ private int getBufferCacheNumPages() {
+ int numPages = GlobalConfig.DEFAULT_BUFFER_CACHE_NUM_PAGES;
+ String numPagesStr = System.getProperty(GlobalConfig.BUFFER_CACHE_NUM_PAGES_PROPERTY, null);
+ if (numPagesStr != null) {
try {
- cacheSize = Integer.parseInt(cacheSizeStr);
+ numPages = Integer.parseInt(numPagesStr);
} catch (NumberFormatException nfe) {
if (GlobalConfig.ASTERIX_LOGGER.isLoggable(Level.WARNING)) {
GlobalConfig.ASTERIX_LOGGER.warning("Wrong buffer cache size argument. " + "Using default value: "
- + cacheSize);
+ + numPages);
}
- return cacheSize;
+ return numPages;
}
}
if (GlobalConfig.ASTERIX_LOGGER.isLoggable(Level.INFO)) {
- GlobalConfig.ASTERIX_LOGGER.info("Buffer cache size: " + cacheSize);
+ GlobalConfig.ASTERIX_LOGGER.info("Buffer cache size (number of pages): " + numPages);
}
- return cacheSize;
+ return numPages;
}
public void deinitialize() {
@@ -104,4 +110,8 @@
return indexRegistry;
}
+ public TransactionProvider getTransactionProvider() {
+ return provider;
+ }
+
}
\ No newline at end of file
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixIndexRegistryProvider.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixIndexRegistryProvider.java
new file mode 100644
index 0000000..bc59291
--- /dev/null
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixIndexRegistryProvider.java
@@ -0,0 +1,23 @@
+package edu.uci.ics.asterix.common.context;
+
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
+import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndexRegistryProvider;
+import edu.uci.ics.hyracks.storage.am.common.dataflow.IndexRegistry;
+
+public class AsterixIndexRegistryProvider implements IIndexRegistryProvider<IIndex> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final AsterixIndexRegistryProvider INSTANCE = new AsterixIndexRegistryProvider();
+
+ private AsterixIndexRegistryProvider() {
+ }
+
+ @Override
+ public IndexRegistry<IIndex> getRegistry(IHyracksTaskContext ctx) {
+ return ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject())
+ .getIndexRegistry();
+ }
+
+}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java
index befcfe8..a1b5a94 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java
@@ -1,6 +1,5 @@
package edu.uci.ics.asterix.common.context;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.storage.common.IStorageManagerInterface;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
@@ -13,15 +12,13 @@
@Override
public IBufferCache getBufferCache(IHyracksTaskContext ctx) {
- INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
- .getApplicationObject();
- return applicationState.getApplicationRuntimeContext().getBufferCache();
+ return ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject())
+ .getBufferCache();
}
@Override
public IFileMapProvider getFileMapProvider(IHyracksTaskContext ctx) {
- INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
- .getApplicationObject();
- return applicationState.getApplicationRuntimeContext().getFileMapManager();
+ return ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject())
+ .getFileMapManager();
}
}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixTreeRegistryProvider.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixTreeRegistryProvider.java
deleted file mode 100644
index 9055c4a..0000000
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixTreeRegistryProvider.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.asterix.common.context;
-
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
-import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndexRegistryProvider;
-import edu.uci.ics.hyracks.storage.am.common.dataflow.IndexRegistry;
-
-public class AsterixTreeRegistryProvider implements IIndexRegistryProvider<IIndex> {
-
- private static final long serialVersionUID = 1L;
-
- public static final AsterixTreeRegistryProvider INSTANCE = new AsterixTreeRegistryProvider();
-
- private AsterixTreeRegistryProvider() {
- }
-
- @Override
- public IndexRegistry<IIndex> getRegistry(IHyracksTaskContext ctx) {
- INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
- .getApplicationObject();
- return applicationState.getApplicationRuntimeContext().getIndexRegistry();
- }
-
-}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/NodeApplicationState.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/NodeApplicationState.java
deleted file mode 100644
index c5cf752..0000000
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/NodeApplicationState.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.asterix.common.context;
-
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
-
-public class NodeApplicationState implements INodeApplicationState {
-
- private AsterixAppRuntimeContext appRuntimeContext;
- private TransactionProvider provider;
-
- @Override
- public AsterixAppRuntimeContext getApplicationRuntimeContext() {
- return appRuntimeContext;
- }
-
- @Override
- public void setApplicationRuntimeContext(AsterixAppRuntimeContext context) {
- this.appRuntimeContext = context;
- }
-
- @Override
- public TransactionProvider getTransactionProvider() {
- return provider;
- }
-
- @Override
- public void setTransactionProvider(TransactionProvider provider) {
- this.provider = provider;
- }
-
-}
diff --git a/asterix-hyracks-glue/pom.xml b/asterix-hyracks-glue/pom.xml
index 416ae58..5f991a4 100644
--- a/asterix-hyracks-glue/pom.xml
+++ b/asterix-hyracks-glue/pom.xml
@@ -38,11 +38,6 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>edu.uci.ics.hyracks</groupId>
- <artifactId>hyracks-storage-am-btree</artifactId>
- <version>0.2.1-SNAPSHOT</version>
- </dependency>
- <dependency>
<groupId>edu.uci.ics.asterix</groupId>
<artifactId>asterix-common</artifactId>
<version>0.0.4-SNAPSHOT</version>
diff --git a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
index ffc9a9a..6718287 100644
--- a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
+++ b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
@@ -15,11 +15,10 @@
package edu.uci.ics.asterix.runtime.transaction;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
import edu.uci.ics.asterix.transaction.management.service.transaction.ITransactionManager;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.api.dataflow.IOperatorNodePushable;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -64,9 +63,8 @@
IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
TransactionContext txnContext;
try {
- INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext()
- .getApplicationContext().getApplicationObject();
- ITransactionManager transactionManager = applicationState.getTransactionProvider().getTransactionManager();
+ ITransactionManager transactionManager = ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext()
+ .getApplicationObject()).getTransactionProvider().getTransactionManager();
txnContext = transactionManager.getTransactionContext(transactionId);
} catch (ACIDException ae) {
throw new RuntimeException(" could not obtain context for invalid transaction id " + transactionId);
diff --git a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java
index 2d03101..dd1c747 100644
--- a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java
+++ b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java
@@ -16,7 +16,7 @@
import java.nio.ByteBuffer;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
import edu.uci.ics.asterix.transaction.management.resource.ICloseable;
import edu.uci.ics.asterix.transaction.management.resource.TransactionalResourceRepository;
@@ -54,7 +54,7 @@
private IIndexAccessor indexAccessor;
private ILockManager lockManager;
private final TransactionContext txnContext;
- private TreeLogger bTreeLogger;
+ private TreeLogger treeLogger;
private final TransactionProvider transactionProvider;
public TreeIndexInsertUpdateDeleteOperatorNodePushable(TransactionContext txnContext,
@@ -68,9 +68,8 @@
this.op = op;
tuple.setFieldPermutation(fieldPermutation);
this.txnContext = txnContext;
- INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
- .getApplicationObject();
- transactionProvider = applicationState.getTransactionProvider();
+ AsterixAppRuntimeContext runtimeContext = (AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject();
+ transactionProvider = runtimeContext.getTransactionProvider();
}
public void initializeTransactionSupport() {
@@ -85,7 +84,7 @@
transactionProvider.getTransactionalResourceRepository().registerTransactionalResource(resourceId,
treeIndexHelper.getIndex());
lockManager = transactionProvider.getLockManager();
- bTreeLogger = transactionProvider.getTreeLoggerRepository().getTreeLogger(resourceId);
+ treeLogger = transactionProvider.getTreeLoggerRepository().getTreeLogger(resourceId);
}
@Override
@@ -123,7 +122,7 @@
lockManager.lock(txnContext, resourceId,
TransactionManagementConstants.LockManagerConstants.LockMode.EXCLUSIVE);
indexAccessor.insert(tuple);
- bTreeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
+ treeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
break;
}
@@ -131,7 +130,7 @@
lockManager.lock(txnContext, resourceId,
TransactionManagementConstants.LockManagerConstants.LockMode.EXCLUSIVE);
indexAccessor.delete(tuple);
- bTreeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
+ treeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
break;
}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java
index 3bc7b75..6ac37c3 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java
@@ -19,9 +19,9 @@
import java.util.ArrayList;
import java.util.List;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.metadata.api.IMetadataIndex;
@@ -83,15 +83,18 @@
// TODO: Temporary transactional resource id for metadata.
private static final byte[] metadataResourceId = MetadataNode.class.toString().getBytes();
- private final IndexRegistry<IIndex> indexRegistry;
- private final TransactionProvider transactionProvider;
+ private IndexRegistry<IIndex> indexRegistry;
+ private TransactionProvider transactionProvider;
- public static MetadataNode INSTANCE;
+ public static final MetadataNode INSTANCE = new MetadataNode();
- public MetadataNode(INodeApplicationState applicationState) {
+ private MetadataNode() {
super();
- this.transactionProvider = applicationState.getTransactionProvider();
- this.indexRegistry = applicationState.getApplicationRuntimeContext().getIndexRegistry();
+ }
+
+ public void initialize(AsterixAppRuntimeContext runtimeContext) {
+ this.transactionProvider = runtimeContext.getTransactionProvider();
+ this.indexRegistry = runtimeContext.getIndexRegistry();
}
@Override
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
index daa5fd0..6c388c2 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -23,7 +23,6 @@
import java.util.List;
import java.util.logging.Logger;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
@@ -103,10 +102,10 @@
MetadataSecondaryIndexes.DATATYPENAME_ON_DATATYPE_INDEX };
}
- public static void startUniverse(AsterixProperties asterixProperities, INCApplicationContext ncApplicationContext)
+ public static void startUniverse(AsterixProperties asterixProperties, INCApplicationContext ncApplicationContext)
throws Exception {
- INodeApplicationState applicationState = (INodeApplicationState) ncApplicationContext.getApplicationObject();
- AsterixAppRuntimeContext runtimeContext = applicationState.getApplicationRuntimeContext();
+ AsterixAppRuntimeContext runtimeContext = (AsterixAppRuntimeContext) ncApplicationContext
+ .getApplicationObject();
// Initialize static metadata objects, such as record types and metadata
// index descriptors.
@@ -118,18 +117,18 @@
initLocalIndexArrays();
boolean isNewUniverse = true;
- TransactionalResourceRepository resourceRepository = applicationState.getTransactionProvider()
+ TransactionalResourceRepository resourceRepository = runtimeContext.getTransactionProvider()
.getTransactionalResourceRepository();
resourceRepository.registerTransactionalResourceManager(TreeResourceManager.ID, new TreeResourceManager(
- applicationState.getTransactionProvider()));
+ runtimeContext.getTransactionProvider()));
- metadataNodeName = asterixProperities.getMetadataNodeName();
- isNewUniverse = asterixProperities.isNewUniverse();
- metadataStore = asterixProperities.getMetadataStore();
- nodeNames = asterixProperities.getNodeNames();
+ metadataNodeName = asterixProperties.getMetadataNodeName();
+ isNewUniverse = asterixProperties.isNewUniverse();
+ metadataStore = asterixProperties.getMetadataStore();
+ nodeNames = asterixProperties.getNodeNames();
// nodeStores = asterixProperity.getStores();
- outputDir = asterixProperities.getOutputDir();
+ outputDir = asterixProperties.getOutputDir();
if (outputDir != null) {
(new File(outputDir)).mkdirs();
}
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java
index 13839cd..2d49982 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java
@@ -1,10 +1,9 @@
package edu.uci.ics.asterix.runtime.job.listener;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
import edu.uci.ics.asterix.transaction.management.service.transaction.ITransactionManager;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext.TransactionType;
import edu.uci.ics.hyracks.api.context.IHyracksJobletContext;
import edu.uci.ics.hyracks.api.job.IJobletEventListener;
@@ -29,8 +28,8 @@
@Override
public void jobletFinish(JobStatus jobStatus) {
try {
- INodeApplicationState applicationState = (INodeApplicationState) jobletContext.getApplicationContext().getApplicationObject();
- ITransactionManager txnManager = applicationState.getTransactionProvider().getTransactionManager();
+ ITransactionManager txnManager = ((AsterixAppRuntimeContext) jobletContext.getApplicationContext()
+ .getApplicationObject()).getTransactionProvider().getTransactionManager();
TransactionContext txnContext = txnManager.getTransactionContext(txnId);
txnContext.setTransactionType(transactionalWrite ? TransactionType.READ_WRITE
: TransactionType.READ);
diff --git a/asterix-transactions/pom.xml b/asterix-transactions/pom.xml
index 6e38100..d7703fd 100644
--- a/asterix-transactions/pom.xml
+++ b/asterix-transactions/pom.xml
@@ -25,11 +25,12 @@
</build>
<dependencies>
- <dependency>
- <groupId>edu.uci.ics.hyracks</groupId>
- <artifactId>hyracks-storage-am-btree</artifactId>
- <version>0.2.1-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
+ <dependency>
+ <groupId>edu.uci.ics.hyracks</groupId>
+ <artifactId>hyracks-storage-am-common</artifactId>
+ <version>0.2.1-SNAPSHOT</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java
index 2bbcc92..25309e1 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java
@@ -33,35 +33,19 @@
public class TransactionalResourceRepository {
private Map<ByteBuffer, Object> resourceRepository = new HashMap<ByteBuffer, Object>(); // repository
- // containing
- // resources
- // that
- // participate
- // in
- // transactions
private Map<Byte, IResourceManager> resourceMgrRepository = new HashMap<Byte, IResourceManager>(); // repository
- // containing
- // resource
- // managers
-
public void registerTransactionalResource(byte[] resourceBytes, Object resource) {
+ // convert to ByteBuffer so that a byte[] can be used as a key in a hash map.
ByteBuffer resourceId = ByteBuffer.wrap(resourceBytes); // need to
- // convert to
- // ByteBuffer so
- // that a byte[]
- // can be used
- // as a key in a
- // hash map.
+
synchronized (resourceRepository) {
if (resourceRepository.get(resourceId) == null) {
resourceRepository.put(resourceId, resource);
- resourceRepository.notifyAll(); // notify all reader threads
- // that are waiting to retrieve
- // a resource from the
- // repository
-
+
+ // wake up threads waiting for the resource
+ resourceRepository.notifyAll();
}
}
}
@@ -70,11 +54,9 @@
synchronized (resourceMgrRepository) {
if (resourceMgrRepository.get(id) == null) {
resourceMgrRepository.put(id, resourceMgr);
- resourceMgrRepository.notifyAll(); // notify all reader threads
- // that are waiting to
- // retrieve a resource
- // manager from the
- // repository
+
+ // wake up threads waiting for the resource manager
+ resourceMgrRepository.notifyAll();
}
}
}
@@ -97,15 +79,6 @@
public IResourceManager getTransactionalResourceMgr(byte id) {
synchronized (resourceMgrRepository) {
-// while (resourceMgrRepository.get(id) == null) {
-// try {
-// resourceMgrRepository.wait();
-// } catch (InterruptedException ie) {
-// ie.printStackTrace();
-// break; // the thread might be interrupted due to other
-// // failures occurring elsewhere, break from the loop
-// }
-// }
return resourceMgrRepository.get(id);
}