fixed a bug that caused secondary indexes to fail in computing the primarykey hash value for logging/locking; using proper undo functions for LSM indexes

git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_lsm_stabilization@1102 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
index 08e2e07..db761da 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
@@ -1005,7 +1005,7 @@
             //prepare callback
             JobId jobId = ((JobEventListenerFactory) spec.getJobletEventListenerFactory()).getJobId();
             int datasetId = dataset.getDatasetId();
-            int[] primaryKeyFields = new int[numKeys];
+            int[] primaryKeyFields = new int[numPrimaryKeys];
             i = 0;
             for (LogicalVariable varKey : primaryKeys) {
                 int idx = propagatedSchema.findVariable(varKey);
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java
index fa28c0c..b7d64ec 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/opcallbacks/SecondaryIndexModificationOperationCallback.java
@@ -42,7 +42,8 @@
 
     public SecondaryIndexModificationOperationCallback(int datasetId, int[] primaryKeyFields,
             IBinaryHashFunctionFactory[] primaryKeyHashFunctionFactories, TransactionContext txnCtx,
-            ILockManager lockManager, TransactionSubsystem txnSubsystem, long resourceId, byte resourceType, IndexOperation indexOp) {
+            ILockManager lockManager, TransactionSubsystem txnSubsystem, long resourceId, byte resourceType,
+            IndexOperation indexOp) {
         super(datasetId, primaryKeyFields, primaryKeyHashFunctionFactories, txnCtx, lockManager);
         this.resourceId = resourceId;
         this.resourceType = resourceType;
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/IndexResourceManager.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/IndexResourceManager.java
index a70fbe2..703e3e6 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/IndexResourceManager.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/service/logging/IndexResourceManager.java
@@ -89,18 +89,18 @@
                     offset += oldValueSize;
 
                     if (oldOperation == (byte) IndexOperation.DELETE.ordinal()) {
-                        indexAccessor.delete(oldTuple);
+                        indexAccessor.forceDelete(oldTuple);
                     } else {
-                        indexAccessor.insert(oldTuple);
+                        indexAccessor.forceInsert(oldTuple);
                     }
                 } else {
-                    indexAccessor.physicalDelete(newTuple);
+                    indexAccessor.forcePhysicalDelete(newTuple);
                 }
             } else {
                 if (newOperation == (byte) IndexOperation.DELETE.ordinal()) {
-                    indexAccessor.insert(newTuple);
+                    indexAccessor.forceInsert(newTuple);
                 } else {
-                    indexAccessor.delete(newTuple);
+                    indexAccessor.forceDelete(newTuple);
                 }
             }
         } catch (Exception e) {