Changed the modification callback in asterix to register the index and callback in the transaction context.
git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_lsm_stabilization@818 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/PrimaryIndexModificationOperationCallbackFactory.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/PrimaryIndexModificationOperationCallbackFactory.java
index 2309724..103c448 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/PrimaryIndexModificationOperationCallbackFactory.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/PrimaryIndexModificationOperationCallbackFactory.java
@@ -27,6 +27,7 @@
import edu.uci.ics.hyracks.storage.am.common.api.IModificationOperationCallback;
import edu.uci.ics.hyracks.storage.am.common.api.IModificationOperationCallbackFactory;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.IndexOperation;
+import edu.uci.ics.hyracks.storage.am.lsm.common.api.ILSMIndex;
/**
* Assumes LSM-BTrees as primary indexes.
@@ -48,10 +49,16 @@
public IModificationOperationCallback createModificationOperationCallback(long resourceId, IHyracksTaskContext ctx)
throws HyracksDataException {
TransactionSubsystem txnSubsystem = txnSubsystemProvider.getTransactionSubsystem(ctx);
+ ILSMIndex index = (ILSMIndex) txnSubsystem.getTransactionalResourceRepository().getTransactionalResource(
+ resourceId);
try {
TransactionContext txnCtx = txnSubsystem.getTransactionManager().getTransactionContext(jobId);
- return new PrimaryIndexModificationOperationCallback(datasetId, primaryKeyFields, primaryKeyHashFunctions,
- txnCtx, txnSubsystem.getLockManager(), txnSubsystem, resourceId, indexOp);
+ IModificationOperationCallback modCallback = new PrimaryIndexModificationOperationCallback(datasetId,
+ primaryKeyFields, primaryKeyHashFunctions, txnCtx, txnSubsystem.getLockManager(), txnSubsystem,
+ resourceId, indexOp);
+ txnCtx.registerIndex(index);
+ txnCtx.registerCallback((AbstractOperationCallback) modCallback);
+ return modCallback;
} catch (ACIDException e) {
throw new HyracksDataException(e);
}