Ian Maxon has submitted this change and it was merged.

Change subject: Metadata Count Temp Fix
......................................................................


Metadata Count Temp Fix

The Metadata dataverse doesn't quite fit into the transaction
model so some counters were being incremented but never decremented
on it, which disallowed soft checkpointing. This is a temporary
fix to this, but it is not addressing any of the consistency
issues, etc. It is simply to reallow soft checkpointing.

Change-Id: I3587e30e049a06a1536fe4e8ba131cd87fe832fe
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1729
Reviewed-by: Taewoo Kim <wangs...@gmail.com>
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
---
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
M 
asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionContext.java
2 files changed, 94 insertions(+), 70 deletions(-)

Approvals:
  Taewoo Kim: Looks good to me, approved
  Jenkins: Verified; No violations found; No violations found; Verified



diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
index 192ee99..c4c5098 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
@@ -98,6 +98,7 @@
 import 
org.apache.asterix.transaction.management.opcallbacks.AbstractIndexModificationOperationCallback.Operation;
 import 
org.apache.asterix.transaction.management.opcallbacks.SecondaryIndexModificationOperationCallback;
 import 
org.apache.asterix.transaction.management.service.transaction.DatasetIdFactory;
+import 
org.apache.asterix.transaction.management.service.transaction.TransactionContext;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
@@ -112,6 +113,7 @@
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
 import org.apache.hyracks.storage.common.IIndex;
 import org.apache.hyracks.storage.common.IIndexAccessor;
@@ -122,8 +124,8 @@
 public class MetadataNode implements IMetadataNode {
     private static final long serialVersionUID = 1L;
     private static final Logger LOGGER = 
Logger.getLogger(MetadataNode.class.getName());
-    private static final DatasetId METADATA_DATASET_ID =
-            new 
ImmutableDatasetId(MetadataPrimaryIndexes.PROPERTIES_METADATA.getDatasetId());
+    private static final DatasetId METADATA_DATASET_ID = new 
ImmutableDatasetId(
+            MetadataPrimaryIndexes.PROPERTIES_METADATA.getDatasetId());
 
     // shared between core and extension
     private IDatasetLifecycleManager datasetLifecycleManager;
@@ -171,8 +173,8 @@
     @Override
     public void abortTransaction(JobId jobId) throws RemoteException, 
ACIDException {
         try {
-            ITransactionContext txnCtx =
-                    
transactionSubsystem.getTransactionManager().getTransactionContext(jobId, 
false);
+            ITransactionContext txnCtx = 
transactionSubsystem.getTransactionManager().getTransactionContext(jobId,
+                    false);
             
transactionSubsystem.getTransactionManager().abortTransaction(txnCtx, 
DatasetId.NULL, -1);
         } catch (ACIDException e) {
             LOGGER.log(Level.WARNING, "Exception aborting transaction", e);
@@ -283,8 +285,8 @@
     @Override
     public <T extends IExtensionMetadataEntity> List<T> getEntities(JobId 
jobId, IExtensionMetadataSearchKey searchKey)
             throws MetadataException, RemoteException {
-        ExtensionMetadataDataset<T> index =
-                (ExtensionMetadataDataset<T>) 
extensionDatasets.get(searchKey.getDatasetId());
+        ExtensionMetadataDataset<T> index = (ExtensionMetadataDataset<T>) 
extensionDatasets
+                .get(searchKey.getDatasetId());
         if (index == null) {
             throw new MetadataException("Metadata Extension Index: " + 
searchKey.getDatasetId() + " was not found");
         }
@@ -394,8 +396,8 @@
     @Override
     public void addDatatype(JobId jobId, Datatype datatype) throws 
MetadataException, RemoteException {
         try {
-            DatatypeTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, 
this, true);
+            DatatypeTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, this,
+                    true);
             ITupleReference tuple = 
tupleReaderWriter.getTupleFromMetadataEntity(datatype);
             insertTupleIntoIndex(jobId, 
MetadataPrimaryIndexes.DATATYPE_DATASET, tuple);
         } catch (HyracksDataException e) {
@@ -441,13 +443,13 @@
             datasetLifecycleManager.open(resourceName);
 
             // prepare a Callback for logging
-            IModificationOperationCallback modCallback =
-                    createIndexModificationCallback(jobId, resourceID, 
metadataIndex, lsmIndex, Operation.INSERT);
+            IModificationOperationCallback modCallback = 
createIndexModificationCallback(jobId, resourceID,
+                    metadataIndex, lsmIndex, Operation.INSERT);
 
             ILSMIndexAccessor indexAccessor = 
lsmIndex.createAccessor(modCallback, NoOpOperationCallback.INSTANCE);
 
-            ITransactionContext txnCtx =
-                    
transactionSubsystem.getTransactionManager().getTransactionContext(jobId, 
false);
+            ITransactionContext txnCtx = 
transactionSubsystem.getTransactionManager().getTransactionContext(jobId,
+                    false);
             txnCtx.setWriteTxn(true);
             txnCtx.registerIndexAndCallback(resourceID, lsmIndex, 
(AbstractOperationCallback) modCallback,
                     metadataIndex.isPrimaryIndex());
@@ -456,6 +458,14 @@
 
             // TODO: fix exceptions once new BTree exception model is in 
hyracks.
             indexAccessor.forceInsert(tuple);
+            //Manually complete the operation after the insert. This is to 
decrement the resource counters within the
+            //index that determine how many tuples are still 'in-flight' 
within the index. Normally the log flusher
+            //does this. The only exception is the index registered as the 
"primary" which we will let be decremented
+            //by the job commit log event
+            if (!((TransactionContext) 
txnCtx).getPrimaryIndexOpTracker().equals(lsmIndex.getOperationTracker())) {
+                lsmIndex.getOperationTracker().completeOperation(lsmIndex, 
LSMOperationType.FORCE_MODIFICATION, null,
+                        modCallback);
+            }
         } finally {
             datasetLifecycleManager.close(resourceName);
         }
@@ -734,12 +744,12 @@
         try {
             datasetLifecycleManager.open(resourceName);
             // prepare a Callback for logging
-            IModificationOperationCallback modCallback =
-                    createIndexModificationCallback(jobId, resourceID, 
metadataIndex, lsmIndex, Operation.DELETE);
+            IModificationOperationCallback modCallback = 
createIndexModificationCallback(jobId, resourceID,
+                    metadataIndex, lsmIndex, Operation.DELETE);
             ILSMIndexAccessor indexAccessor = 
lsmIndex.createAccessor(modCallback, NoOpOperationCallback.INSTANCE);
 
-            ITransactionContext txnCtx =
-                    
transactionSubsystem.getTransactionManager().getTransactionContext(jobId, 
false);
+            ITransactionContext txnCtx = 
transactionSubsystem.getTransactionManager().getTransactionContext(jobId,
+                    false);
             txnCtx.setWriteTxn(true);
             txnCtx.registerIndexAndCallback(resourceID, lsmIndex, 
(AbstractOperationCallback) modCallback,
                     metadataIndex.isPrimaryIndex());
@@ -747,6 +757,14 @@
             LSMIndexUtil.checkAndSetFirstLSN((AbstractLSMIndex) lsmIndex, 
transactionSubsystem.getLogManager());
 
             indexAccessor.forceDelete(tuple);
+            //Manually complete the operation after the insert. This is to 
decrement the resource counters within the
+            //index that determine how many tuples are still 'in-flight' 
within the index. Normally the log flusher
+            //does this. The only exception is the index registered as the 
"primary" which we will let be decremented
+            //by the job commit log event
+            if (!((TransactionContext) 
txnCtx).getPrimaryIndexOpTracker().equals(lsmIndex.getOperationTracker())) {
+                lsmIndex.getOperationTracker().completeOperation(lsmIndex, 
LSMOperationType.FORCE_MODIFICATION, null,
+                        modCallback);
+            }
         } finally {
             datasetLifecycleManager.close(resourceName);
         }
@@ -830,8 +848,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName);
-            DatatypeTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, 
this, false);
+            DatatypeTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, this,
+                    false);
             IValueExtractor<Datatype> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<Datatype> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.DATATYPE_DATASET, 
searchKey, valueExtractor, results);
@@ -875,8 +893,8 @@
     public List<Datatype> getAllDatatypes(JobId jobId) throws 
MetadataException, RemoteException {
         try {
             ITupleReference searchKey = null;
-            DatatypeTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, 
this, false);
+            DatatypeTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, this,
+                    false);
             IValueExtractor<Datatype> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<Datatype> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.DATATYPE_DATASET, 
searchKey, valueExtractor, results);
@@ -988,8 +1006,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName, 
datasetName, indexName);
-            IndexTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getIndexTupleTranslator(jobId, 
this, false);
+            IndexTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getIndexTupleTranslator(jobId, this,
+                    false);
             IValueExtractor<Index> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<Index> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.INDEX_DATASET, 
searchKey, valueExtractor, results);
@@ -1007,8 +1025,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName, 
datasetName);
-            IndexTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getIndexTupleTranslator(jobId, 
this, false);
+            IndexTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getIndexTupleTranslator(jobId, this,
+                    false);
             IValueExtractor<Index> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<Index> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.INDEX_DATASET, 
searchKey, valueExtractor, results);
@@ -1023,8 +1041,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName, 
datatypeName);
-            DatatypeTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, 
this, false);
+            DatatypeTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getDataTypeTupleTranslator(jobId, this,
+                    false);
             IValueExtractor<Datatype> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<Datatype> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.DATATYPE_DATASET, 
searchKey, valueExtractor, results);
@@ -1089,8 +1107,8 @@
                     "" + functionSignature.getArity());
             // Searches the index for the tuple to be deleted. Acquires an S
             // lock on the 'function' dataset.
-            ITupleReference functionTuple =
-                    getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.FUNCTION_DATASET, searchKey);
+            ITupleReference functionTuple = getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.FUNCTION_DATASET,
+                    searchKey);
             deleteTupleFromIndex(jobId, 
MetadataPrimaryIndexes.FUNCTION_DATASET, functionTuple);
 
             // TODO: Change this to be a BTree specific exception, e.g.,
@@ -1131,8 +1149,8 @@
             String resourceName = index.getFile().toString();
             IIndex indexInstance = datasetLifecycleManager.get(resourceName);
             datasetLifecycleManager.open(resourceName);
-            IIndexAccessor indexAccessor =
-                    
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, 
NoOpOperationCallback.INSTANCE);
+            IIndexAccessor indexAccessor = 
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE,
+                    NoOpOperationCallback.INSTANCE);
             ITreeIndexCursor rangeCursor = (ITreeIndexCursor) 
indexAccessor.createSearchCursor(false);
 
             RangePredicate rangePred = null;
@@ -1152,8 +1170,8 @@
             index = MetadataPrimaryIndexes.DATASET_DATASET;
             indexInstance = datasetLifecycleManager.get(resourceName);
             datasetLifecycleManager.open(resourceName);
-            indexAccessor =
-                    
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, 
NoOpOperationCallback.INSTANCE);
+            indexAccessor = 
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE,
+                    NoOpOperationCallback.INSTANCE);
             rangeCursor = (ITreeIndexCursor) 
indexAccessor.createSearchCursor(false);
 
             rangePred = null;
@@ -1174,8 +1192,8 @@
             index = MetadataPrimaryIndexes.INDEX_DATASET;
             indexInstance = datasetLifecycleManager.get(resourceName);
             datasetLifecycleManager.open(resourceName);
-            indexAccessor =
-                    
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, 
NoOpOperationCallback.INSTANCE);
+            indexAccessor = 
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE,
+                    NoOpOperationCallback.INSTANCE);
             rangeCursor = (ITreeIndexCursor) 
indexAccessor.createSearchCursor(false);
 
             rangePred = null;
@@ -1210,8 +1228,8 @@
         String resourceName = index.getFile().getRelativePath();
         IIndex indexInstance = datasetLifecycleManager.get(resourceName);
         datasetLifecycleManager.open(resourceName);
-        IIndexAccessor indexAccessor =
-                indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, 
NoOpOperationCallback.INSTANCE);
+        IIndexAccessor indexAccessor = 
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE,
+                NoOpOperationCallback.INSTANCE);
         ITreeIndexCursor rangeCursor = (ITreeIndexCursor) 
indexAccessor.createSearchCursor(false);
 
         IBinaryComparator[] searchCmps = null;
@@ -1249,8 +1267,8 @@
             IIndex indexInstance = datasetLifecycleManager.get(resourceName);
             datasetLifecycleManager.open(resourceName);
             try {
-                IIndexAccessor indexAccessor =
-                        
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, 
NoOpOperationCallback.INSTANCE);
+                IIndexAccessor indexAccessor = 
indexInstance.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
                 IIndexCursor rangeCursor = 
indexAccessor.createSearchCursor(false);
 
                 DatasetTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider.getDatasetTupleTranslator(false);
@@ -1288,8 +1306,8 @@
     // Hyracks version.
     public static ITupleReference createTuple(String... fields) {
         @SuppressWarnings("unchecked")
-        ISerializerDeserializer<AString> stringSerde =
-                
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ASTRING);
+        ISerializerDeserializer<AString> stringSerde = 
SerializerDeserializerProvider.INSTANCE
+                .getSerializerDeserializer(BuiltinType.ASTRING);
         AMutableString aString = new AMutableString("");
         ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
         for (String s : fields) {
@@ -1326,8 +1344,8 @@
     public void addAdapter(JobId jobId, DatasourceAdapter adapter) throws 
MetadataException, RemoteException {
         try {
             // Insert into the 'Adapter' dataset.
-            DatasourceAdapterTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getAdapterTupleTranslator(true);
+            DatasourceAdapterTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getAdapterTupleTranslator(true);
             ITupleReference adapterTuple = 
tupleReaderWriter.getTupleFromMetadataEntity(adapter);
             insertTupleIntoIndex(jobId, 
MetadataPrimaryIndexes.DATASOURCE_ADAPTER_DATASET, adapterTuple);
         } catch (HyracksDataException e) {
@@ -1354,8 +1372,8 @@
             ITupleReference searchKey = createTuple(dataverseName, 
adapterName);
             // Searches the index for the tuple to be deleted. Acquires an S
             // lock on the 'Adapter' dataset.
-            ITupleReference datasetTuple =
-                    getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.DATASOURCE_ADAPTER_DATASET, searchKey);
+            ITupleReference datasetTuple = getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.DATASOURCE_ADAPTER_DATASET,
+                    searchKey);
             deleteTupleFromIndex(jobId, 
MetadataPrimaryIndexes.DATASOURCE_ADAPTER_DATASET, datasetTuple);
 
             // TODO: Change this to be a BTree specific exception, e.g.,
@@ -1378,8 +1396,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName, 
adapterName);
-            DatasourceAdapterTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getAdapterTupleTranslator(false);
+            DatasourceAdapterTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getAdapterTupleTranslator(false);
             List<DatasourceAdapter> results = new ArrayList<>();
             IValueExtractor<DatasourceAdapter> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             searchIndex(jobId, 
MetadataPrimaryIndexes.DATASOURCE_ADAPTER_DATASET, searchKey, valueExtractor, 
results);
@@ -1397,8 +1415,8 @@
             throws MetadataException, RemoteException {
         try {
             // Insert into the 'CompactionPolicy' dataset.
-            CompactionPolicyTupleTranslator tupleReaderWriter =
-                    
tupleTranslatorProvider.getCompactionPolicyTupleTranslator(true);
+            CompactionPolicyTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getCompactionPolicyTupleTranslator(true);
             ITupleReference compactionPolicyTuple = 
tupleReaderWriter.getTupleFromMetadataEntity(compactionPolicy);
             insertTupleIntoIndex(jobId, 
MetadataPrimaryIndexes.COMPACTION_POLICY_DATASET, compactionPolicyTuple);
         } catch (HyracksDataException e) {
@@ -1418,8 +1436,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverse, policyName);
-            CompactionPolicyTupleTranslator tupleReaderWriter =
-                    
tupleTranslatorProvider.getCompactionPolicyTupleTranslator(false);
+            CompactionPolicyTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getCompactionPolicyTupleTranslator(false);
             List<CompactionPolicy> results = new ArrayList<>();
             IValueExtractor<CompactionPolicy> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             searchIndex(jobId, 
MetadataPrimaryIndexes.COMPACTION_POLICY_DATASET, searchKey, valueExtractor, 
results);
@@ -1437,8 +1455,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName);
-            DatasourceAdapterTupleTranslator tupleReaderWriter =
-                    tupleTranslatorProvider.getAdapterTupleTranslator(false);
+            DatasourceAdapterTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getAdapterTupleTranslator(false);
             IValueExtractor<DatasourceAdapter> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<DatasourceAdapter> results = new ArrayList<>();
             searchIndex(jobId, 
MetadataPrimaryIndexes.DATASOURCE_ADAPTER_DATASET, searchKey, valueExtractor, 
results);
@@ -1480,8 +1498,8 @@
             ITupleReference searchKey = createTuple(dataverseName, 
libraryName);
             // Searches the index for the tuple to be deleted. Acquires an S
             // lock on the 'Adapter' dataset.
-            ITupleReference datasetTuple =
-                    getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.LIBRARY_DATASET, searchKey);
+            ITupleReference datasetTuple = getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.LIBRARY_DATASET,
+                    searchKey);
             deleteTupleFromIndex(jobId, 
MetadataPrimaryIndexes.LIBRARY_DATASET, datasetTuple);
 
             // TODO: Change this to be a BTree specific exception, e.g.,
@@ -1608,8 +1626,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = createTuple(dataverseName, feedName, 
datasetName);
-            ITupleReference tuple =
-                    getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.FEED_CONNECTION_DATASET, searchKey);
+            ITupleReference tuple = getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.FEED_CONNECTION_DATASET,
+                    searchKey);
             deleteTupleFromIndex(jobId, 
MetadataPrimaryIndexes.FEED_CONNECTION_DATASET, tuple);
         } catch (HyracksDataException | ACIDException e) {
             throw new MetadataException(e);
@@ -1712,8 +1730,8 @@
     public void addExternalFile(JobId jobId, ExternalFile externalFile) throws 
MetadataException, RemoteException {
         try {
             // Insert into the 'externalFiles' dataset.
-            ExternalFileTupleTranslator tupleReaderWriter =
-                    
tupleTranslatorProvider.getExternalFileTupleTranslator(true);
+            ExternalFileTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getExternalFileTupleTranslator(true);
             ITupleReference externalFileTuple = 
tupleReaderWriter.getTupleFromMetadataEntity(externalFile);
             insertTupleIntoIndex(jobId, 
MetadataPrimaryIndexes.EXTERNAL_FILE_DATASET, externalFileTuple);
         } catch (HyracksDataException e) {
@@ -1733,8 +1751,8 @@
     public List<ExternalFile> getExternalFiles(JobId jobId, Dataset dataset) 
throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = 
createTuple(dataset.getDataverseName(), dataset.getDatasetName());
-            ExternalFileTupleTranslator tupleReaderWriter =
-                    
tupleTranslatorProvider.getExternalFileTupleTranslator(false);
+            ExternalFileTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getExternalFileTupleTranslator(false);
             IValueExtractor<ExternalFile> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<ExternalFile> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.EXTERNAL_FILE_DATASET, 
searchKey, valueExtractor, results);
@@ -1752,8 +1770,8 @@
             ITupleReference searchKey = 
createExternalFileSearchTuple(dataverseName, datasetName, fileNumber);
             // Searches the index for the tuple to be deleted. Acquires an S
             // lock on the 'ExternalFile' dataset.
-            ITupleReference datasetTuple =
-                    getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.EXTERNAL_FILE_DATASET, searchKey);
+            ITupleReference datasetTuple = getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.EXTERNAL_FILE_DATASET,
+                    searchKey);
             deleteTupleFromIndex(jobId, 
MetadataPrimaryIndexes.EXTERNAL_FILE_DATASET, datasetTuple);
         } catch (HyracksDataException e) {
             if (e.getComponent().equals(ErrorCode.HYRACKS)
@@ -1781,10 +1799,10 @@
     @SuppressWarnings("unchecked")
     public ITupleReference createExternalFileSearchTuple(String dataverseName, 
String datasetName, int fileNumber)
             throws HyracksDataException {
-        ISerializerDeserializer<AString> stringSerde =
-                
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ASTRING);
-        ISerializerDeserializer<AInt32> intSerde =
-                
SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.AINT32);
+        ISerializerDeserializer<AString> stringSerde = 
SerializerDeserializerProvider.INSTANCE
+                .getSerializerDeserializer(BuiltinType.ASTRING);
+        ISerializerDeserializer<AInt32> intSerde = 
SerializerDeserializerProvider.INSTANCE
+                .getSerializerDeserializer(BuiltinType.AINT32);
 
         AMutableString aString = new AMutableString("");
         ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(3);
@@ -1813,8 +1831,8 @@
             throws MetadataException, RemoteException {
         try {
             ITupleReference searchKey = 
createExternalFileSearchTuple(dataverseName, datasetName, fileNumber);
-            ExternalFileTupleTranslator tupleReaderWriter =
-                    
tupleTranslatorProvider.getExternalFileTupleTranslator(false);
+            ExternalFileTupleTranslator tupleReaderWriter = 
tupleTranslatorProvider
+                    .getExternalFileTupleTranslator(false);
             IValueExtractor<ExternalFile> valueExtractor = new 
MetadataEntityValueExtractor<>(tupleReaderWriter);
             List<ExternalFile> results = new ArrayList<>();
             searchIndex(jobId, MetadataPrimaryIndexes.EXTERNAL_FILE_DATASET, 
searchKey, valueExtractor, results);
@@ -1836,8 +1854,8 @@
             searchKey = createTuple(dataset.getDataverseName(), 
dataset.getDatasetName());
             // Searches the index for the tuple to be deleted. Acquires an S
             // lock on the 'dataset' dataset.
-            ITupleReference datasetTuple =
-                    getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.DATASET_DATASET, searchKey);
+            ITupleReference datasetTuple = getTupleToBeDeleted(jobId, 
MetadataPrimaryIndexes.DATASET_DATASET,
+                    searchKey);
             deleteTupleFromIndex(jobId, 
MetadataPrimaryIndexes.DATASET_DATASET, datasetTuple);
             // Previous tuple was deleted
             // Insert into the 'dataset' dataset.
diff --git 
a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionContext.java
 
b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionContext.java
index 22d56f0..f53aeb1 100644
--- 
a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionContext.java
+++ 
b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionContext.java
@@ -130,6 +130,12 @@
         }
     }
 
+    public PrimaryIndexOperationTracker getPrimaryIndexOpTracker() {
+        synchronized (indexMap) {
+            return primaryIndexOpTracker;
+        }
+    }
+
     // [Notice]
     // This method is called sequentially by the LogAppender threads.
     @Override

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1729
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I3587e30e049a06a1536fe4e8ba131cd87fe832fe
Gerrit-PatchSet: 7
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Ian Maxon <ima...@apache.org>
Gerrit-Reviewer: Ian Maxon <ima...@apache.org>
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Taewoo Kim <wangs...@gmail.com>

Reply via email to