You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by en...@apache.org on 2013/02/27 05:09:05 UTC

svn commit: r1450593 - in /hbase/branches/0.94/src: main/java/org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java

Author: enis
Date: Wed Feb 27 04:09:04 2013
New Revision: 1450593

URL: http://svn.apache.org/r1450593
Log:
HBASE-4210 Allow coprocessor to interact with batches per region sent from a client (Anoop). ADDENDUM patch for fixing line endings

Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java
    hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java?rev=1450593&r1=1450592&r2=1450593&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java Wed Feb 27 04:09:04 2013
@@ -1,102 +1,102 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.regionserver;
-
-import org.apache.hadoop.hbase.coprocessor.RegionObserver;
-import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
-
-/**
- * Wraps together the mutations which are applied as a batch to the region and their operation
- * status and WALEdits. 
- * @see RegionObserver#preBatchMutate(ObserverContext, MiniBatchOperationInProgress)
- * @see RegionObserver#postBatchMutate(ObserverContext, MiniBatchOperationInProgress)
- * @param <T> Pair<Mutation, Integer> pair of Mutations and associated rowlock ids.
- */
-public class MiniBatchOperationInProgress<T> {
-  private final T[] operations;
-  private final OperationStatus[] retCodeDetails;
-  private final WALEdit[] walEditsFromCoprocessors;
-  private final int firstIndex;
-  private final int lastIndexExclusive;
-
-  public MiniBatchOperationInProgress(T[] operations, OperationStatus[] retCodeDetails,
-      WALEdit[] walEditsFromCoprocessors, int firstIndex, int lastIndexExclusive) {
-    this.operations = operations;
-    this.retCodeDetails = retCodeDetails;
-    this.walEditsFromCoprocessors = walEditsFromCoprocessors;
-    this.firstIndex = firstIndex;
-    this.lastIndexExclusive = lastIndexExclusive;
-  }
-
-  /**
-   * @return The number of operations(Mutations) involved in this batch.
-   */
-  public int size() {
-    return this.lastIndexExclusive - this.firstIndex;
-  }
-
-  /**
-   * @param index
-   * @return The operation(Mutation) at the specified position.
-   */
-  public T getOperation(int index) {
-    return operations[getAbsoluteIndex(index)];
-  }
-
-  /**
-   * Sets the status code for the operation(Mutation) at the specified position.
-   * By setting this status, {@link RegionObserver} can make HRegion to skip Mutations.
-   * @param index
-   * @param opStatus
-   */
-  public void setOperationStatus(int index, OperationStatus opStatus) {
-    this.retCodeDetails[getAbsoluteIndex(index)] = opStatus;
-  }
-
-  /**
-   * @param index
-   * @return Gets the status code for the operation(Mutation) at the specified position.
-   */
-  public OperationStatus getOperationStatus(int index) {
-    return this.retCodeDetails[getAbsoluteIndex(index)];
-  }
-
-  /**
-   * Sets the walEdit for the operation(Mutation) at the specified position.
-   * @param index
-   * @param walEdit
-   */
-  public void setWalEdit(int index, WALEdit walEdit) {
-    this.walEditsFromCoprocessors[getAbsoluteIndex(index)] = walEdit;
-  }
-
-  /**
-   * @param index
-   * @return Gets the walEdit for the operation(Mutation) at the specified position.
-   */
-  public WALEdit getWalEdit(int index) {
-    return this.walEditsFromCoprocessors[getAbsoluteIndex(index)];
-  }
-
-  private int getAbsoluteIndex(int index) {
-    if (index < 0 || this.firstIndex + index >= this.lastIndexExclusive) {
-      throw new ArrayIndexOutOfBoundsException(index);
-    }
-    return this.firstIndex + index;
-  }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.regionserver;
+
+import org.apache.hadoop.hbase.coprocessor.RegionObserver;
+import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
+
+/**
+ * Wraps together the mutations which are applied as a batch to the region and their operation
+ * status and WALEdits. 
+ * @see RegionObserver#preBatchMutate(ObserverContext, MiniBatchOperationInProgress)
+ * @see RegionObserver#postBatchMutate(ObserverContext, MiniBatchOperationInProgress)
+ * @param <T> Pair<Mutation, Integer> pair of Mutations and associated rowlock ids.
+ */
+public class MiniBatchOperationInProgress<T> {
+  private final T[] operations;
+  private final OperationStatus[] retCodeDetails;
+  private final WALEdit[] walEditsFromCoprocessors;
+  private final int firstIndex;
+  private final int lastIndexExclusive;
+
+  public MiniBatchOperationInProgress(T[] operations, OperationStatus[] retCodeDetails,
+      WALEdit[] walEditsFromCoprocessors, int firstIndex, int lastIndexExclusive) {
+    this.operations = operations;
+    this.retCodeDetails = retCodeDetails;
+    this.walEditsFromCoprocessors = walEditsFromCoprocessors;
+    this.firstIndex = firstIndex;
+    this.lastIndexExclusive = lastIndexExclusive;
+  }
+
+  /**
+   * @return The number of operations(Mutations) involved in this batch.
+   */
+  public int size() {
+    return this.lastIndexExclusive - this.firstIndex;
+  }
+
+  /**
+   * @param index
+   * @return The operation(Mutation) at the specified position.
+   */
+  public T getOperation(int index) {
+    return operations[getAbsoluteIndex(index)];
+  }
+
+  /**
+   * Sets the status code for the operation(Mutation) at the specified position.
+   * By setting this status, {@link RegionObserver} can make HRegion to skip Mutations.
+   * @param index
+   * @param opStatus
+   */
+  public void setOperationStatus(int index, OperationStatus opStatus) {
+    this.retCodeDetails[getAbsoluteIndex(index)] = opStatus;
+  }
+
+  /**
+   * @param index
+   * @return Gets the status code for the operation(Mutation) at the specified position.
+   */
+  public OperationStatus getOperationStatus(int index) {
+    return this.retCodeDetails[getAbsoluteIndex(index)];
+  }
+
+  /**
+   * Sets the walEdit for the operation(Mutation) at the specified position.
+   * @param index
+   * @param walEdit
+   */
+  public void setWalEdit(int index, WALEdit walEdit) {
+    this.walEditsFromCoprocessors[getAbsoluteIndex(index)] = walEdit;
+  }
+
+  /**
+   * @param index
+   * @return Gets the walEdit for the operation(Mutation) at the specified position.
+   */
+  public WALEdit getWalEdit(int index) {
+    return this.walEditsFromCoprocessors[getAbsoluteIndex(index)];
+  }
+
+  private int getAbsoluteIndex(int index) {
+    if (index < 0 || this.firstIndex + index >= this.lastIndexExclusive) {
+      throw new ArrayIndexOutOfBoundsException(index);
+    }
+    return this.firstIndex + index;
+  }
+}

Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java?rev=1450593&r1=1450592&r2=1450593&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.java Wed Feb 27 04:09:04 2013
@@ -1,105 +1,105 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.regionserver;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.apache.hadoop.hbase.SmallTests;
-import org.apache.hadoop.hbase.client.Mutation;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.Pair;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-@Category(SmallTests.class)
-public class TestMiniBatchOperationInProgress {
-
-  @Test
-  public void testMiniBatchOperationInProgressMethods() {
-    Pair<Mutation, Integer>[] operations = new Pair[10];
-    OperationStatus[] retCodeDetails = new OperationStatus[10];
-    WALEdit[] walEditsFromCoprocessors = new WALEdit[10];
-    for (int i = 0; i < 10; i++) {
-      operations[i] = new Pair<Mutation, Integer>(new Put(Bytes.toBytes(i)), null);
-    }
-    MiniBatchOperationInProgress<Pair<Mutation, Integer>> miniBatch = 
-      new MiniBatchOperationInProgress<Pair<Mutation, Integer>>(operations, retCodeDetails, 
-      walEditsFromCoprocessors, 0, 5);
-
-    assertEquals(5, miniBatch.size());
-    assertTrue(Bytes.equals(Bytes.toBytes(0), miniBatch.getOperation(0).getFirst().getRow()));
-    assertTrue(Bytes.equals(Bytes.toBytes(2), miniBatch.getOperation(2).getFirst().getRow()));
-    assertTrue(Bytes.equals(Bytes.toBytes(4), miniBatch.getOperation(4).getFirst().getRow()));
-    try {
-      miniBatch.getOperation(5);
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    miniBatch.setOperationStatus(1, OperationStatus.FAILURE);
-    assertEquals(OperationStatus.FAILURE, retCodeDetails[1]);
-    try {
-      miniBatch.setOperationStatus(6, OperationStatus.FAILURE);
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    try {
-      miniBatch.setWalEdit(5, new WALEdit());
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-
-    miniBatch = new MiniBatchOperationInProgress<Pair<Mutation, Integer>>(operations,
-        retCodeDetails, walEditsFromCoprocessors, 7, 10);
-    try {
-      miniBatch.setWalEdit(-1, new WALEdit());
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    try {
-      miniBatch.getOperation(-1);
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    try {
-      miniBatch.getOperation(3);
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    try {
-      miniBatch.getOperationStatus(9);
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    try {
-      miniBatch.setOperationStatus(3, OperationStatus.FAILURE);
-      fail("Should throw Exception while accessing out of range");
-    } catch (ArrayIndexOutOfBoundsException e) {
-    }
-    assertTrue(Bytes.equals(Bytes.toBytes(7), miniBatch.getOperation(0).getFirst().getRow()));
-    assertTrue(Bytes.equals(Bytes.toBytes(9), miniBatch.getOperation(2).getFirst().getRow()));
-    miniBatch.setOperationStatus(1, OperationStatus.SUCCESS);
-    assertEquals(OperationStatus.SUCCESS, retCodeDetails[8]);
-    WALEdit wal = new WALEdit();
-    miniBatch.setWalEdit(0, wal);
-    assertEquals(wal, walEditsFromCoprocessors[7]);
-  }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.regionserver;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.apache.hadoop.hbase.SmallTests;
+import org.apache.hadoop.hbase.client.Mutation;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.Pair;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category(SmallTests.class)
+public class TestMiniBatchOperationInProgress {
+
+  @Test
+  public void testMiniBatchOperationInProgressMethods() {
+    Pair<Mutation, Integer>[] operations = new Pair[10];
+    OperationStatus[] retCodeDetails = new OperationStatus[10];
+    WALEdit[] walEditsFromCoprocessors = new WALEdit[10];
+    for (int i = 0; i < 10; i++) {
+      operations[i] = new Pair<Mutation, Integer>(new Put(Bytes.toBytes(i)), null);
+    }
+    MiniBatchOperationInProgress<Pair<Mutation, Integer>> miniBatch = 
+      new MiniBatchOperationInProgress<Pair<Mutation, Integer>>(operations, retCodeDetails, 
+      walEditsFromCoprocessors, 0, 5);
+
+    assertEquals(5, miniBatch.size());
+    assertTrue(Bytes.equals(Bytes.toBytes(0), miniBatch.getOperation(0).getFirst().getRow()));
+    assertTrue(Bytes.equals(Bytes.toBytes(2), miniBatch.getOperation(2).getFirst().getRow()));
+    assertTrue(Bytes.equals(Bytes.toBytes(4), miniBatch.getOperation(4).getFirst().getRow()));
+    try {
+      miniBatch.getOperation(5);
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    miniBatch.setOperationStatus(1, OperationStatus.FAILURE);
+    assertEquals(OperationStatus.FAILURE, retCodeDetails[1]);
+    try {
+      miniBatch.setOperationStatus(6, OperationStatus.FAILURE);
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    try {
+      miniBatch.setWalEdit(5, new WALEdit());
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+
+    miniBatch = new MiniBatchOperationInProgress<Pair<Mutation, Integer>>(operations,
+        retCodeDetails, walEditsFromCoprocessors, 7, 10);
+    try {
+      miniBatch.setWalEdit(-1, new WALEdit());
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    try {
+      miniBatch.getOperation(-1);
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    try {
+      miniBatch.getOperation(3);
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    try {
+      miniBatch.getOperationStatus(9);
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    try {
+      miniBatch.setOperationStatus(3, OperationStatus.FAILURE);
+      fail("Should throw Exception while accessing out of range");
+    } catch (ArrayIndexOutOfBoundsException e) {
+    }
+    assertTrue(Bytes.equals(Bytes.toBytes(7), miniBatch.getOperation(0).getFirst().getRow()));
+    assertTrue(Bytes.equals(Bytes.toBytes(9), miniBatch.getOperation(2).getFirst().getRow()));
+    miniBatch.setOperationStatus(1, OperationStatus.SUCCESS);
+    assertEquals(OperationStatus.SUCCESS, retCodeDetails[8]);
+    WALEdit wal = new WALEdit();
+    miniBatch.setWalEdit(0, wal);
+    assertEquals(wal, walEditsFromCoprocessors[7]);
+  }
+}