commit 6248da3a9bcddebb8ee0c3d7d552ccc171e7017c Author: John Leach Date: Tue Aug 23 13:34:33 2016 -0500 HBASE-16484 Defining an interface for HBase Consistency diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index 86c02ea..6a1bafb 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -157,7 +157,7 @@ import org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor.Stor import org.apache.hadoop.hbase.protobuf.generated.WALProtos.RegionEventDescriptor; import org.apache.hadoop.hbase.protobuf.generated.WALProtos.RegionEventDescriptor.EventType; import org.apache.hadoop.hbase.protobuf.generated.WALProtos.StoreDescriptor; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl.WriteEntry; import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope; import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState; import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext; @@ -571,7 +571,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi private boolean splitRequest; private byte[] explicitSplitPoint = null; - private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControlImpl(); // Coprocessor host private RegionCoprocessorHost coprocessorHost; @@ -7569,7 +7569,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi WriteState.HEAP_SIZE + // writestate ClassSize.CONCURRENT_SKIPLISTMAP + ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY + // stores (2 * ClassSize.REENTRANT_LOCK) + // lock, updatesLock - MultiVersionConcurrencyControl.FIXED_SIZE // mvcc + MultiVersionConcurrencyControlImpl.FIXED_SIZE // mvcc + 2 * ClassSize.TREEMAP // maxSeqIdInStores, replicationScopes + 2 * ClassSize.ATOMIC_INTEGER // majorInProgress, minorInProgress + ClassSize.STORE_SERVICES // store services diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java index 7424e4e..10cb394 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java @@ -18,265 +18,78 @@ */ package org.apache.hadoop.hbase.regionserver; -import java.util.LinkedList; -import java.util.concurrent.atomic.AtomicLong; - import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Objects; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.hbase.classification.InterfaceAudience; -import org.apache.hadoop.hbase.util.Bytes; -import org.apache.hadoop.hbase.util.ClassSize; - - /** - * Manages the read/write consistency. This provides an interface for readers to determine what + * + * This provides an interface for readers to determine what * entries to ignore, and a mechanism for writers to obtain new write numbers, then "commit" * the new writes for readers to read (thus forming atomic transactions). + * */ -@InterfaceAudience.Private -public class MultiVersionConcurrencyControl { - private static final Log LOG = LogFactory.getLog(MultiVersionConcurrencyControl.class); - - final AtomicLong readPoint = new AtomicLong(0); - final AtomicLong writePoint = new AtomicLong(0); - private final Object readWaiters = new Object(); - /** - * Represents no value, or not set. - */ - public static final long NONE = -1; - - // This is the pending queue of writes. - // - // TODO(eclark): Should this be an array of fixed size to - // reduce the number of allocations on the write path? - // This could be equal to the number of handlers + a small number. - // TODO: St.Ack 20150903 Sounds good to me. - private final LinkedList writeQueue = new LinkedList(); - - public MultiVersionConcurrencyControl() { - super(); - } - - /** - * Construct and set read point. Write point is uninitialized. - */ - public MultiVersionConcurrencyControl(long startPoint) { - tryAdvanceTo(startPoint, NONE); - } - - /** - * Step the MVCC forward on to a new read/write basis. - * @param newStartPoint - */ - public void advanceTo(long newStartPoint) { - while (true) { - long seqId = this.getWritePoint(); - if (seqId >= newStartPoint) break; - if (this.tryAdvanceTo(/* newSeqId = */ newStartPoint, /* expected = */ seqId)) break; - } - } - - /** - * Step the MVCC forward on to a new read/write basis. - * @param newStartPoint Point to move read and write points to. - * @param expected If not -1 (#NONE) - * @return Returns false if expected is not equal to the - * current readPoint or if startPoint is less than current - * readPoint - */ - boolean tryAdvanceTo(long newStartPoint, long expected) { - synchronized (writeQueue) { - long currentRead = this.readPoint.get(); - long currentWrite = this.writePoint.get(); - if (currentRead != currentWrite) { - throw new RuntimeException("Already used this mvcc; currentRead=" + currentRead + - ", currentWrite=" + currentWrite + "; too late to tryAdvanceTo"); - } - if (expected != NONE && expected != currentRead) { - return false; - } - - if (newStartPoint < currentRead) { - return false; - } - - readPoint.set(newStartPoint); - writePoint.set(newStartPoint); - } - return true; - } - - /** - * Start a write transaction. Create a new {@link WriteEntry} with a new write number and add it - * to our queue of ongoing writes. Return this WriteEntry instance. - * To complete the write transaction and wait for it to be visible, call - * {@link #completeAndWait(WriteEntry)}. If the write failed, call - * {@link #complete(WriteEntry)} so we can clean up AFTER removing ALL trace of the failed write - * transaction. - * @see #complete(WriteEntry) - * @see #completeAndWait(WriteEntry) - */ - public WriteEntry begin() { - synchronized (writeQueue) { - long nextWriteNumber = writePoint.incrementAndGet(); - WriteEntry e = new WriteEntry(nextWriteNumber); - writeQueue.add(e); - return e; - } - } - - /** - * Wait until the read point catches up to the write point; i.e. wait on all outstanding mvccs - * to complete. - */ - public void await() { - // Add a write and then wait on reads to catch up to it. - completeAndWait(begin()); - } - - /** - * Complete a {@link WriteEntry} that was created by {@link #begin()} then wait until the - * read point catches up to our write. - * - * At the end of this call, the global read point is at least as large as the write point - * of the passed in WriteEntry. Thus, the write is visible to MVCC readers. - */ - public void completeAndWait(WriteEntry e) { - if (!complete(e)) { - waitForRead(e); - } - } - - /** - * Mark the {@link WriteEntry} as complete and advance the read point as much as possible. - * Call this even if the write has FAILED (AFTER backing out the write transaction - * changes completely) so we can clean up the outstanding transaction. - * - * How much is the read point advanced? - * - * Let S be the set of all write numbers that are completed. Set the read point to the highest - * numbered write of S. - * - * @param writeEntry - * - * @return true if e is visible to MVCC readers (that is, readpoint >= e.writeNumber) - */ - public boolean complete(WriteEntry writeEntry) { - synchronized (writeQueue) { - writeEntry.markCompleted(); - long nextReadValue = NONE; - boolean ranOnce = false; - while (!writeQueue.isEmpty()) { - ranOnce = true; - WriteEntry queueFirst = writeQueue.getFirst(); - - if (nextReadValue > 0) { - if (nextReadValue + 1 != queueFirst.getWriteNumber()) { - throw new RuntimeException("Invariant in complete violated, nextReadValue=" - + nextReadValue + ", writeNumber=" + queueFirst.getWriteNumber()); - } - } - - if (queueFirst.isCompleted()) { - nextReadValue = queueFirst.getWriteNumber(); - writeQueue.removeFirst(); - } else { - break; - } - } - - if (!ranOnce) { - throw new RuntimeException("There is no first!"); - } - - if (nextReadValue > 0) { - synchronized (readWaiters) { - readPoint.set(nextReadValue); - readWaiters.notifyAll(); - } - } - return readPoint.get() >= writeEntry.getWriteNumber(); - } - } - - /** - * Wait for the global readPoint to advance up to the passed in write entry number. - */ - void waitForRead(WriteEntry e) { - boolean interrupted = false; - int count = 0; - synchronized (readWaiters) { - while (readPoint.get() < e.getWriteNumber()) { - if (count % 100 == 0 && count > 0) { - LOG.warn("STUCK: " + this); - } - count++; - try { - readWaiters.wait(10); - } catch (InterruptedException ie) { - // We were interrupted... finish the loop -- i.e. cleanup --and then - // on our way out, reset the interrupt flag. - interrupted = true; - } - } - } - if (interrupted) { - Thread.currentThread().interrupt(); - } - } - - @VisibleForTesting - public String toString() { - return Objects.toStringHelper(this) - .add("readPoint", readPoint) - .add("writePoint", writePoint).toString(); - } - - public long getReadPoint() { - return readPoint.get(); - } - - @VisibleForTesting - public long getWritePoint() { - return writePoint.get(); - } - - /** - * Write number and whether write has completed given out at start of a write transaction. - * Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait. - */ - @InterfaceAudience.Private - public static class WriteEntry { - private final long writeNumber; - private boolean completed = false; - - WriteEntry(long writeNumber) { - this.writeNumber = writeNumber; - } - - void markCompleted() { - this.completed = true; - } - - boolean isCompleted() { - return this.completed; - } - - public long getWriteNumber() { - return this.writeNumber; - } - - @Override - public String toString() { - return this.writeNumber + ", " + this.completed; - } - } - - public static final long FIXED_SIZE = ClassSize.align( - ClassSize.OBJECT + - 2 * Bytes.SIZEOF_LONG + - 2 * ClassSize.REFERENCE); -} +public interface MultiVersionConcurrencyControl { + + /** + * Step the MVCC forward on to a new read/write basis. + * + * @param newStartPoint + */ + public void advanceTo(long newStartPoint); + + /** + * Wait until the read point catches up to the write point; i.e. wait on all outstanding mvccs + * to complete. + */ + public void await(); + + /** + * Complete a {@link MultiVersionConcurrencyControlImpl.WriteEntry} that was created by {@link #begin()} then wait until the + * read point catches up to our write. + */ + public void completeAndWait(MultiVersionConcurrencyControlImpl.WriteEntry e); + + /** + * Mark the {@link WriteEntry} as complete and advance the read point as much as possible. + * Call this even if the write has FAILED (AFTER backing out the write transaction + * changes completely) so we can clean up the outstanding transaction. + *

+ * How much is the read point advanced? + *

+ * Let S be the set of all write numbers that are completed. Set the read point to the highest + * numbered write of S. + * + * @param writeEntry + * @return true if e is visible to MVCC readers (that is, readpoint >= e.writeNumber) + */ + public boolean complete(MultiVersionConcurrencyControlImpl.WriteEntry writeEntry); + + /** + * + * Read point for scanners. + * + * @return + */ + public long getReadPoint(); + + /** + * + * Current write point. + * + * @return + */ + @VisibleForTesting + public long getWritePoint(); + + + /** + * Start a write transaction. Create a new {@link MultiVersionConcurrencyControlImpl.WriteEntry} with a new write number and add it + * to our queue of ongoing writes. Return this WriteEntry instance. + * To complete the write transaction and wait for it to be visible, call + * {@link #completeAndWait(MultiVersionConcurrencyControlImpl.WriteEntry)}. If the write failed, call + * {@link #complete(MultiVersionConcurrencyControlImpl.WriteEntry)} so we can clean up AFTER removing ALL trace of the failed write + * transaction. + * @see #complete(MultiVersionConcurrencyControlImpl.WriteEntry) + * @see #completeAndWait(MultiVersionConcurrencyControlImpl.WriteEntry) + */ + public MultiVersionConcurrencyControlImpl.WriteEntry begin(); +} \ No newline at end of file diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControlImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControlImpl.java new file mode 100644 index 0000000..b120191 --- /dev/null +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControlImpl.java @@ -0,0 +1,287 @@ +/** + * + * 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 java.util.LinkedList; +import java.util.concurrent.atomic.AtomicLong; + +import com.google.common.annotations.VisibleForTesting; + +import com.google.common.base.Objects; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hbase.classification.InterfaceAudience; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.ClassSize; + + +/** + * Manages the read/write consistency. This provides an interface for readers to determine what + * entries to ignore, and a mechanism for writers to obtain new write numbers, then "commit" + * the new writes for readers to read (thus forming atomic transactions). + */ +@InterfaceAudience.Private +public class MultiVersionConcurrencyControlImpl implements MultiVersionConcurrencyControl { + private static final Log LOG = LogFactory.getLog(MultiVersionConcurrencyControlImpl.class); + + final AtomicLong readPoint = new AtomicLong(0); + final AtomicLong writePoint = new AtomicLong(0); + private final Object readWaiters = new Object(); + /** + * Represents no value, or not set. + */ + public static final long NONE = -1; + + // This is the pending queue of writes. + // + // TODO(eclark): Should this be an array of fixed size to + // reduce the number of allocations on the write path? + // This could be equal to the number of handlers + a small number. + // TODO: St.Ack 20150903 Sounds good to me. + private final LinkedList writeQueue = new LinkedList(); + + public MultiVersionConcurrencyControlImpl() { + super(); + } + + /** + * Construct and set read point. Write point is uninitialized. + */ + public MultiVersionConcurrencyControlImpl(long startPoint) { + tryAdvanceTo(startPoint, NONE); + } + + /** + * Step the MVCC forward on to a new read/write basis. + * @param newStartPoint + */ + @Override + public void advanceTo(long newStartPoint) { + while (true) { + long seqId = this.getWritePoint(); + if (seqId >= newStartPoint) break; + if (this.tryAdvanceTo(/* newSeqId = */ newStartPoint, /* expected = */ seqId)) break; + } + } + + /** + * Step the MVCC forward on to a new read/write basis. + * @param newStartPoint Point to move read and write points to. + * @param expected If not -1 (#NONE) + * @return Returns false if expected is not equal to the + * current readPoint or if startPoint is less than current + * readPoint + */ + boolean tryAdvanceTo(long newStartPoint, long expected) { + synchronized (writeQueue) { + long currentRead = this.readPoint.get(); + long currentWrite = this.writePoint.get(); + if (currentRead != currentWrite) { + throw new RuntimeException("Already used this mvcc; currentRead=" + currentRead + + ", currentWrite=" + currentWrite + "; too late to tryAdvanceTo"); + } + if (expected != NONE && expected != currentRead) { + return false; + } + + if (newStartPoint < currentRead) { + return false; + } + + readPoint.set(newStartPoint); + writePoint.set(newStartPoint); + } + return true; + } + + /** + * Start a write transaction. Create a new {@link WriteEntry} with a new write number and add it + * to our queue of ongoing writes. Return this WriteEntry instance. + * To complete the write transaction and wait for it to be visible, call + * {@link #completeAndWait(WriteEntry)}. If the write failed, call + * {@link #complete(WriteEntry)} so we can clean up AFTER removing ALL trace of the failed write + * transaction. + * @see #complete(WriteEntry) + * @see #completeAndWait(WriteEntry) + */ + @Override + public WriteEntry begin() { + synchronized (writeQueue) { + long nextWriteNumber = writePoint.incrementAndGet(); + WriteEntry e = new WriteEntry(nextWriteNumber); + writeQueue.add(e); + return e; + } + } + + /** + * Wait until the read point catches up to the write point; i.e. wait on all outstanding mvccs + * to complete. + */ + @Override + public void await() { + // Add a write and then wait on reads to catch up to it. + completeAndWait(begin()); + } + + /** + * Complete a {@link WriteEntry} that was created by {@link #begin()} then wait until the + * read point catches up to our write. + * + * At the end of this call, the global read point is at least as large as the write point + * of the passed in WriteEntry. Thus, the write is visible to MVCC readers. + */ + @Override + public void completeAndWait(WriteEntry e) { + if (!complete(e)) { + waitForRead(e); + } + } + + /** + * Mark the {@link WriteEntry} as complete and advance the read point as much as possible. + * Call this even if the write has FAILED (AFTER backing out the write transaction + * changes completely) so we can clean up the outstanding transaction. + * + * How much is the read point advanced? + * + * Let S be the set of all write numbers that are completed. Set the read point to the highest + * numbered write of S. + * + * @param writeEntry + * + * @return true if e is visible to MVCC readers (that is, readpoint >= e.writeNumber) + */ + @Override + public boolean complete(WriteEntry writeEntry) { + synchronized (writeQueue) { + writeEntry.markCompleted(); + long nextReadValue = NONE; + boolean ranOnce = false; + while (!writeQueue.isEmpty()) { + ranOnce = true; + WriteEntry queueFirst = writeQueue.getFirst(); + + if (nextReadValue > 0) { + if (nextReadValue + 1 != queueFirst.getWriteNumber()) { + throw new RuntimeException("Invariant in complete violated, nextReadValue=" + + nextReadValue + ", writeNumber=" + queueFirst.getWriteNumber()); + } + } + + if (queueFirst.isCompleted()) { + nextReadValue = queueFirst.getWriteNumber(); + writeQueue.removeFirst(); + } else { + break; + } + } + + if (!ranOnce) { + throw new RuntimeException("There is no first!"); + } + + if (nextReadValue > 0) { + synchronized (readWaiters) { + readPoint.set(nextReadValue); + readWaiters.notifyAll(); + } + } + return readPoint.get() >= writeEntry.getWriteNumber(); + } + } + + /** + * Wait for the global readPoint to advance up to the passed in write entry number. + */ + void waitForRead(WriteEntry e) { + boolean interrupted = false; + int count = 0; + synchronized (readWaiters) { + while (readPoint.get() < e.getWriteNumber()) { + if (count % 100 == 0 && count > 0) { + LOG.warn("STUCK: " + this); + } + count++; + try { + readWaiters.wait(10); + } catch (InterruptedException ie) { + // We were interrupted... finish the loop -- i.e. cleanup --and then + // on our way out, reset the interrupt flag. + interrupted = true; + } + } + } + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + + @VisibleForTesting + public String toString() { + return Objects.toStringHelper(this) + .add("readPoint", readPoint) + .add("writePoint", writePoint).toString(); + } + @Override + public long getReadPoint() { + return readPoint.get(); + } + @Override + @VisibleForTesting + public long getWritePoint() { + return writePoint.get(); + } + + /** + * Write number and whether write has completed given out at start of a write transaction. + * Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait. + */ + @InterfaceAudience.Private + public static class WriteEntry { + private final long writeNumber; + private boolean completed = false; + + WriteEntry(long writeNumber) { + this.writeNumber = writeNumber; + } + + void markCompleted() { + this.completed = true; + } + + boolean isCompleted() { + return this.completed; + } + + public long getWriteNumber() { + return this.writeNumber; + } + + @Override + public String toString() { + return this.writeNumber + ", " + this.completed; + } + } + + public static final long FIXED_SIZE = ClassSize.align( + ClassSize.OBJECT + + 2 * Bytes.SIZEOF_LONG + + 2 * ClassSize.REFERENCE); +} diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java index 5b33db4..e32a120 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionScanner.java @@ -63,7 +63,7 @@ public interface RegionScanner extends InternalScanner, Shipper { long getMaxResultSize(); /** - * @return The Scanner's MVCC readPt see {@link MultiVersionConcurrencyControl} + * @return The Scanner's MVCC readPt see {@link MultiVersionConcurrencyControlImpl} */ long getMvccReadPoint(); @@ -94,7 +94,7 @@ public interface RegionScanner extends InternalScanner, Shipper { * close a region operation, an synchronize on the scanner object. Example: * HRegion region = ...; * RegionScanner scanner = ... - * MultiVersionConcurrencyControl.setThreadReadPoint(scanner.getMvccReadPoint()); + * MultiVersionConcurrencyControlImpl.setThreadReadPoint(scanner.getMvccReadPoint()); * region.startRegionOperation(); * try { * synchronized(scanner) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java index e33ae33..9a9937e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java @@ -908,7 +908,7 @@ public abstract class AbstractFSWAL implements WAL { * transaction by calling 'begin' wherein which we assign this update a sequenceid. At assignment * time, we stamp all the passed in Cells inside WALEdit with their sequenceId. You must * 'complete' the transaction this mvcc transaction by calling - * MultiVersionConcurrencyControl#complete(...) or a variant otherwise mvcc will get stuck. Do it + * MultiVersionConcurrencyControlImpl#complete(...) or a variant otherwise mvcc will get stuck. Do it * in the finally of a try/finally block within which this append lives and any subsequent * operations like sync or update of memstore, etc. Get the WriteEntry to pass mvcc out of the * passed in WALKey walKey parameter. Be warned that the WriteEntry is not diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java index 72474a0..be5be0c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java @@ -30,6 +30,7 @@ import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.CollectionUtils; import org.apache.hadoop.hbase.wal.WAL.Entry; @@ -113,7 +114,7 @@ class FSWALEntry extends Entry { stamped = true; long regionSequenceId = WALKey.NO_SEQUENCE_ID; MultiVersionConcurrencyControl mvcc = getKey().getMvcc(); - MultiVersionConcurrencyControl.WriteEntry we = null; + MultiVersionConcurrencyControlImpl.WriteEntry we = null; if (mvcc != null) { we = mvcc.begin(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogKey.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogKey.java index d7bf4a5..5a1a401 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogKey.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogKey.java @@ -34,6 +34,7 @@ import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.wal.WALKey; import org.apache.hadoop.io.Writable; @@ -83,7 +84,7 @@ public class HLogKey extends WALKey implements Writable { } public HLogKey(final byte[] encodedRegionName, final TableName tablename, final long now, - final MultiVersionConcurrencyControl mvcc, final NavigableMap scopes) { + final MultiVersionConcurrencyControl mvcc, final NavigableMap scopes) { super(encodedRegionName, tablename, now, mvcc, scopes); } @@ -129,14 +130,14 @@ public class HLogKey extends WALKey implements Writable { * @param replicationScope the replicationScope of the non-default column families' of the region */ public HLogKey( - final byte[] encodedRegionName, - final TableName tablename, - long logSeqNum, - final long now, - List clusterIds, - long nonceGroup, - long nonce, - MultiVersionConcurrencyControl mvcc, NavigableMap replicationScope) { + final byte[] encodedRegionName, + final TableName tablename, + long logSeqNum, + final long now, + List clusterIds, + long nonceGroup, + long nonce, + MultiVersionConcurrencyControl mvcc, NavigableMap replicationScope) { super(encodedRegionName, tablename, logSeqNum, now, clusterIds, nonceGroup, nonce, mvcc, replicationScope); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.java index d5a1561..c1f02057 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.java @@ -24,6 +24,7 @@ import java.util.UUID; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; /** * An HLogKey specific to WalEdits coming from replay. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALUtil.java index 197144d..ff00371 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALUtil.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor import org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor; import org.apache.hadoop.hbase.protobuf.generated.WALProtos.RegionEventDescriptor; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.wal.WAL; import org.apache.hadoop.hbase.wal.WALKey; @@ -140,13 +141,13 @@ public class WALUtil { * @return WALKey that was added to the WAL. */ public static WALKey doFullAppendTransaction(final WAL wal, - final NavigableMap replicationScope, final HRegionInfo hri, - final WALEdit edit, final MultiVersionConcurrencyControl mvcc, final boolean sync) + final NavigableMap replicationScope, final HRegionInfo hri, + final WALEdit edit, final MultiVersionConcurrencyControl mvcc, final boolean sync) throws IOException { // TODO: Pass in current time to use? WALKey walKey = new WALKey(hri.getEncodedNameAsBytes(), hri.getTable(), System.currentTimeMillis(), mvcc, replicationScope); - long trx = MultiVersionConcurrencyControl.NONE; + long trx = MultiVersionConcurrencyControlImpl.NONE; try { trx = wal.append(hri, walKey, edit, false); if (sync) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALKey.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALKey.java index 86fdfbd..6a92bd2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALKey.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALKey.java @@ -41,6 +41,7 @@ import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos; import org.apache.hadoop.hbase.protobuf.generated.WALProtos.FamilyScope; import org.apache.hadoop.hbase.protobuf.generated.WALProtos.ScopeType; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.SequenceId; // imports for things that haven't moved from regionserver.wal yet. import org.apache.hadoop.hbase.regionserver.wal.CompressionContext; @@ -84,13 +85,13 @@ public class WALKey implements SequenceId, Comparable { * Use it to complete mvcc transaction. This WALKey was part of * (the transaction is started when you call append; see the comment on FSHLog#append). To * complete call - * {@link MultiVersionConcurrencyControl#complete(MultiVersionConcurrencyControl.WriteEntry)} - * or {@link MultiVersionConcurrencyControl#complete(MultiVersionConcurrencyControl.WriteEntry)} + * {@link MultiVersionConcurrencyControlImpl#complete(MultiVersionConcurrencyControlImpl.WriteEntry)} + * or {@link MultiVersionConcurrencyControlImpl#complete(MultiVersionConcurrencyControlImpl.WriteEntry)} * @return A WriteEntry gotten from local WAL subsystem. - * @see #setWriteEntry(MultiVersionConcurrencyControl.WriteEntry) + * @see #setWriteEntry(MultiVersionConcurrencyControlImpl.WriteEntry) */ @InterfaceAudience.Private // For internal use only. - public MultiVersionConcurrencyControl.WriteEntry getWriteEntry() throws InterruptedIOException { + public MultiVersionConcurrencyControlImpl.WriteEntry getWriteEntry() throws InterruptedIOException { try { this.sequenceIdAssignedLatch.await(); } catch (InterruptedException ie) { @@ -106,7 +107,7 @@ public class WALKey implements SequenceId, Comparable { } @InterfaceAudience.Private // For internal use only. - public void setWriteEntry(MultiVersionConcurrencyControl.WriteEntry writeEntry) { + public void setWriteEntry(MultiVersionConcurrencyControlImpl.WriteEntry writeEntry) { if (this.writeEntry != null) { throw new RuntimeException("Non-null!!!"); } @@ -201,7 +202,7 @@ public class WALKey implements SequenceId, Comparable { /** * Set in a way visible to multiple threads; e.g. synchronized getter/setters. */ - private MultiVersionConcurrencyControl.WriteEntry writeEntry; + private MultiVersionConcurrencyControlImpl.WriteEntry writeEntry; public static final List EMPTY_UUIDS = Collections.unmodifiableList(new ArrayList()); // visible for deprecated HLogKey @@ -257,7 +258,7 @@ public class WALKey implements SequenceId, Comparable { } public WALKey(final byte[] encodedRegionName, final TableName tablename, final long now, - MultiVersionConcurrencyControl mvcc, final NavigableMap replicationScope) { + MultiVersionConcurrencyControl mvcc, final NavigableMap replicationScope) { init(encodedRegionName, tablename, NO_SEQUENCE_ID, now, EMPTY_UUIDS, HConstants.NO_NONCE, HConstants.NO_NONCE, mvcc, replicationScope); } @@ -296,8 +297,8 @@ public class WALKey implements SequenceId, Comparable { */ // TODO: Fix being able to pass in sequenceid. public WALKey(final byte[] encodedRegionName, final TableName tablename, long logSeqNum, - final long now, List clusterIds, long nonceGroup, long nonce, - MultiVersionConcurrencyControl mvcc, final NavigableMap replicationScope) { + final long now, List clusterIds, long nonceGroup, long nonce, + MultiVersionConcurrencyControl mvcc, final NavigableMap replicationScope) { init(encodedRegionName, tablename, logSeqNum, now, clusterIds, nonceGroup, nonce, mvcc, replicationScope); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index 04afb01..e203d74 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -3304,7 +3304,7 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { Scan scan = new Scan(get); InternalScanner scanner = (InternalScanner) store.getScanner(scan, scan.getFamilyMap().get(store.getFamily().getName()), - // originally MultiVersionConcurrencyControl.resetThreadReadPoint() was called to set + // originally MultiVersionConcurrencyControlImpl.resetThreadReadPoint() was called to set // readpoint 0. 0); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java index 8da76a6..4fe8524 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java @@ -51,6 +51,7 @@ import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.wal.HLogKey; import org.apache.hadoop.hbase.regionserver.wal.WALCoprocessorHost; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; @@ -278,7 +279,7 @@ public class TestWALObserver { final HTableDescriptor htd = createBasic3FamilyHTD(Bytes .toString(TEST_TABLE)); final HRegionInfo hri = new HRegionInfo(tableName, null, null); - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControlImpl(); fs.mkdirs(new Path(FSUtils.getTableDir(hbaseRootDir, tableName), hri.getEncodedName())); @@ -359,7 +360,7 @@ public class TestWALObserver { public void testEmptyWALEditAreNotSeen() throws Exception { final HRegionInfo hri = createBasic3FamilyHRegionInfo(Bytes.toString(TEST_TABLE)); final HTableDescriptor htd = createBasic3FamilyHTD(Bytes.toString(TEST_TABLE)); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControlImpl(); NavigableMap scopes = new TreeMap( Bytes.BYTES_COMPARATOR); for(byte[] fam : htd.getFamiliesKeys()) { @@ -396,7 +397,7 @@ public class TestWALObserver { // ultimately called by HRegion::initialize() TableName tableName = TableName.valueOf("testWALCoprocessorReplay"); final HTableDescriptor htd = getBasic3FamilyHTableDescriptor(tableName); - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); // final HRegionInfo hri = // createBasic3FamilyHRegionInfo(Bytes.toString(tableName)); // final HRegionInfo hri1 = diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java index aee2a06..8c9bfad 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java @@ -42,7 +42,7 @@ import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.mapreduce.WALInputFormat.WALKeyRecordReader; import org.apache.hadoop.hbase.mapreduce.WALInputFormat.WALRecordReader; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.wal.WAL; import org.apache.hadoop.hbase.wal.WALFactory; @@ -78,7 +78,7 @@ public class TestWALRecordReader { private static final byte [] value = Bytes.toBytes("value"); private static HTableDescriptor htd; private static Path logDir; - protected MultiVersionConcurrencyControl mvcc; + protected MultiVersionConcurrencyControlImpl mvcc; protected static NavigableMap scopes = new TreeMap( Bytes.BYTES_COMPARATOR); @@ -88,7 +88,7 @@ public class TestWALRecordReader { @Before public void setUp() throws Exception { - mvcc = new MultiVersionConcurrencyControl(); + mvcc = new MultiVersionConcurrencyControlImpl(); FileStatus[] entries = fs.listStatus(hbaseDir); for (FileStatus dir : entries) { fs.delete(dir.getPath(), true); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBulkLoad.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBulkLoad.java index 6ba12a9..0e455c1 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBulkLoad.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestBulkLoad.java @@ -116,7 +116,7 @@ public class TestBulkLoad { WALKey walKey = invocation.getArgumentAt(1, WALKey.class); MultiVersionConcurrencyControl mvcc = walKey.getMvcc(); if (mvcc != null) { - MultiVersionConcurrencyControl.WriteEntry we = mvcc.begin(); + MultiVersionConcurrencyControlImpl.WriteEntry we = mvcc.begin(); walKey.setWriteEntry(we); } return 01L; @@ -142,7 +142,7 @@ public class TestBulkLoad { WALKey walKey = invocation.getArgumentAt(1, WALKey.class); MultiVersionConcurrencyControl mvcc = walKey.getMvcc(); if (mvcc != null) { - MultiVersionConcurrencyControl.WriteEntry we = mvcc.begin(); + MultiVersionConcurrencyControlImpl.WriteEntry we = mvcc.begin(); walKey.setWriteEntry(we); } return 01L; @@ -161,7 +161,7 @@ public class TestBulkLoad { WALKey walKey = invocation.getArgumentAt(1, WALKey.class); MultiVersionConcurrencyControl mvcc = walKey.getMvcc(); if (mvcc != null) { - MultiVersionConcurrencyControl.WriteEntry we = mvcc.begin(); + MultiVersionConcurrencyControlImpl.WriteEntry we = mvcc.begin(); walKey.setWriteEntry(we); } return 01L; @@ -181,7 +181,7 @@ public class TestBulkLoad { WALKey walKey = invocation.getArgumentAt(1, WALKey.class); MultiVersionConcurrencyControl mvcc = walKey.getMvcc(); if (mvcc != null) { - MultiVersionConcurrencyControl.WriteEntry we = mvcc.begin(); + MultiVersionConcurrencyControlImpl.WriteEntry we = mvcc.begin(); walKey.setWriteEntry(we); } return 01L; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java index 7285c67..da3e18a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java @@ -96,7 +96,7 @@ public class TestDefaultMemStore { } protected void internalSetUp() throws Exception { - this.mvcc = new MultiVersionConcurrencyControl(); + this.mvcc = new MultiVersionConcurrencyControlImpl(); } @Test @@ -295,7 +295,7 @@ public class TestDefaultMemStore { final byte[] q2 = Bytes.toBytes("q2"); final byte[] v = Bytes.toBytes("value"); - MultiVersionConcurrencyControl.WriteEntry w = + MultiVersionConcurrencyControlImpl.WriteEntry w = mvcc.begin(); KeyValue kv1 = new KeyValue(row, f, q1, v); @@ -340,7 +340,7 @@ public class TestDefaultMemStore { final byte[] v2 = Bytes.toBytes("value2"); // INSERT 1: Write both columns val1 - MultiVersionConcurrencyControl.WriteEntry w = + MultiVersionConcurrencyControlImpl.WriteEntry w = mvcc.begin(); KeyValue kv11 = new KeyValue(row, f, q1, v1); @@ -393,7 +393,7 @@ public class TestDefaultMemStore { final byte[] q2 = Bytes.toBytes("q2"); final byte[] v1 = Bytes.toBytes("value1"); // INSERT 1: Write both columns val1 - MultiVersionConcurrencyControl.WriteEntry w = + MultiVersionConcurrencyControlImpl.WriteEntry w = mvcc.begin(); KeyValue kv11 = new KeyValue(row, f, q1, v1); @@ -468,7 +468,7 @@ public class TestDefaultMemStore { private void internalRun() throws IOException { for (long i = 0; i < NUM_TRIES && caughtException.get() == null; i++) { - MultiVersionConcurrencyControl.WriteEntry w = + MultiVersionConcurrencyControlImpl.WriteEntry w = mvcc.begin(); // Insert the sequence value (i) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java index 765c9cf..46b5c77 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java @@ -90,7 +90,6 @@ import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.RowMutations; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; -import org.apache.hadoop.hbase.client.TestMobSnapshotCloneIndependence; import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException; import org.apache.hadoop.hbase.filter.BinaryComparator; import org.apache.hadoop.hbase.filter.ColumnCountGetFilter; @@ -103,7 +102,6 @@ import org.apache.hadoop.hbase.filter.PrefixFilter; import org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.io.hfile.HFile; -import org.apache.hadoop.hbase.master.procedure.TestMasterFailoverWithProcedures; import org.apache.hadoop.hbase.monitoring.MonitoredRPCHandler; import org.apache.hadoop.hbase.monitoring.MonitoredTask; import org.apache.hadoop.hbase.monitoring.TaskMonitor; @@ -6223,7 +6221,7 @@ public class TestHRegion { @Override public Long answer(InvocationOnMock invocation) throws Throwable { WALKey key = invocation.getArgumentAt(1, WALKey.class); - MultiVersionConcurrencyControl.WriteEntry we = key.getMvcc().begin(); + MultiVersionConcurrencyControlImpl.WriteEntry we = key.getMvcc().begin(); key.setWriteEntry(we); return 1L; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.java index 1c2a4cd..3235565 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.java @@ -27,7 +27,7 @@ import org.junit.Assert; import org.junit.experimental.categories.Category; /** - * This is a hammer test that verifies MultiVersionConcurrencyControl in a + * This is a hammer test that verifies MultiVersionConcurrencyControlImpl in a * multiple writer single reader scenario. */ @Category({RegionServerTests.class, MediumTests.class}) @@ -48,7 +48,7 @@ public class TestMultiVersionConcurrencyControl { public void run() { while (!finished.get()) { - MultiVersionConcurrencyControl.WriteEntry e = + MultiVersionConcurrencyControlImpl.WriteEntry e = mvcc.begin(); // System.out.println("Begin write: " + e.getWriteNumber()); // 10 usec - 500usec (including 0) @@ -74,7 +74,7 @@ public class TestMultiVersionConcurrencyControl { } public void testParallelism() throws Exception { - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControlImpl(); final AtomicBoolean finished = new AtomicBoolean(false); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.java index b63ca9e..3c0e948 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.java @@ -32,9 +32,9 @@ import org.junit.experimental.categories.Category; public class TestMultiVersionConcurrencyControlBasic { @Test public void testSimpleMvccOps() { - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControlImpl(); long readPoint = mvcc.getReadPoint(); - MultiVersionConcurrencyControl.WriteEntry writeEntry = mvcc.begin(); + MultiVersionConcurrencyControlImpl.WriteEntry writeEntry = mvcc.begin(); mvcc.completeAndWait(writeEntry); assertEquals(readPoint + 1, mvcc.getReadPoint()); writeEntry = mvcc.begin(); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java index 9eaeda4..d28c6c1 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java @@ -55,6 +55,7 @@ import org.apache.hadoop.hbase.coprocessor.CoprocessorHost; import org.apache.hadoop.hbase.coprocessor.SampleRegionWALObserver; import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.EnvironmentEdge; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; @@ -147,7 +148,7 @@ public abstract class AbstractTestFSWAL { } protected void addEdits(WAL log, HRegionInfo hri, HTableDescriptor htd, int times, - MultiVersionConcurrencyControl mvcc, NavigableMap scopes) + MultiVersionConcurrencyControl mvcc, NavigableMap scopes) throws IOException { final byte[] row = Bytes.toBytes("row"); for (int i = 0; i < times; i++) { @@ -251,7 +252,7 @@ public abstract class AbstractTestFSWAL { HRegionInfo hri2 = new HRegionInfo(t2.getTableName(), HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW); // add edits and roll the wal - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); NavigableMap scopes1 = new TreeMap(Bytes.BYTES_COMPARATOR); for (byte[] fam : t1.getFamiliesKeys()) { scopes1.put(fam, 0); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java index a974639..c934d76 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java @@ -74,18 +74,8 @@ import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.master.HMaster; import org.apache.hadoop.hbase.monitoring.MonitoredTask; import org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitLogTask.RecoveryMode; -import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine; -import org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher; -import org.apache.hadoop.hbase.regionserver.FlushRequestListener; -import org.apache.hadoop.hbase.regionserver.FlushRequester; -import org.apache.hadoop.hbase.regionserver.HRegion; -import org.apache.hadoop.hbase.regionserver.HRegionServer; -import org.apache.hadoop.hbase.regionserver.MemStoreSnapshot; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; -import org.apache.hadoop.hbase.regionserver.Region; -import org.apache.hadoop.hbase.regionserver.RegionScanner; -import org.apache.hadoop.hbase.regionserver.RegionServerServices; -import org.apache.hadoop.hbase.regionserver.Store; +import org.apache.hadoop.hbase.regionserver.*; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.Bytes; @@ -95,8 +85,6 @@ import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.hbase.util.HFileTestUtil; import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.wal.AbstractFSWALProvider; -import org.apache.hadoop.hbase.wal.AsyncFSWALProvider; -import org.apache.hadoop.hbase.wal.FSHLogProvider; import org.apache.hadoop.hbase.wal.WAL; import org.apache.hadoop.hbase.wal.WALFactory; import org.apache.hadoop.hbase.wal.WALKey; @@ -294,7 +282,7 @@ public abstract class AbstractTestWALReplay { final TableName tableName = TableName.valueOf("test2727"); - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); HRegionInfo hri = createBasic3FamilyHRegionInfo(tableName); Path basedir = FSUtils.getTableDir(hbaseRootDir, tableName); deleteDir(basedir); @@ -790,7 +778,7 @@ public abstract class AbstractTestWALReplay { public void testReplayEditsWrittenIntoWAL() throws Exception { final TableName tableName = TableName.valueOf("testReplayEditsWrittenIntoWAL"); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); final HRegionInfo hri = createBasic3FamilyHRegionInfo(tableName); final Path basedir = FSUtils.getTableDir(hbaseRootDir, tableName); deleteDir(basedir); @@ -1052,7 +1040,7 @@ public abstract class AbstractTestWALReplay { */ private void testNameConflictWhenSplit(boolean largeFirst) throws IOException { final TableName tableName = TableName.valueOf("testReplayEditsWrittenIntoWAL"); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); final HRegionInfo hri = createBasic3FamilyHRegionInfo(tableName); final Path basedir = FSUtils.getTableDir(hbaseRootDir, tableName); deleteDir(basedir); @@ -1170,7 +1158,7 @@ public abstract class AbstractTestWALReplay { } private WALKey createWALKey(final TableName tableName, final HRegionInfo hri, - final MultiVersionConcurrencyControl mvcc, NavigableMap scopes) { + final MultiVersionConcurrencyControlImpl mvcc, NavigableMap scopes) { return new WALKey(hri.getEncodedNameAsBytes(), tableName, 999, mvcc, scopes); } @@ -1184,7 +1172,7 @@ public abstract class AbstractTestWALReplay { } private FSWALEntry createFSWALEntry(HTableDescriptor htd, HRegionInfo hri, long sequence, - byte[] rowName, byte[] family, EnvironmentEdge ee, MultiVersionConcurrencyControl mvcc, + byte[] rowName, byte[] family, EnvironmentEdge ee, MultiVersionConcurrencyControlImpl mvcc, int index, NavigableMap scopes) throws IOException { FSWALEntry entry = new FSWALEntry(sequence, createWALKey(htd.getTableName(), hri, mvcc, scopes), createWALEdit( @@ -1195,7 +1183,7 @@ public abstract class AbstractTestWALReplay { private void addWALEdits(final TableName tableName, final HRegionInfo hri, final byte[] rowName, final byte[] family, final int count, EnvironmentEdge ee, final WAL wal, - final HTableDescriptor htd, final MultiVersionConcurrencyControl mvcc, + final HTableDescriptor htd, final MultiVersionConcurrencyControlImpl mvcc, NavigableMap scopes) throws IOException { for (int j = 0; j < count; j++) { wal.append(hri, createWALKey(tableName, hri, mvcc, scopes), diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java index bf56afe..a2ebee2 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java @@ -32,7 +32,7 @@ import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.testclassification.RegionServerTests; import org.apache.hadoop.hbase.util.Bytes; @@ -93,7 +93,7 @@ public class TestFSHLog extends AbstractTestFSWAL { } HRegionInfo hri = new HRegionInfo(htd.getTableName(), HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW); - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); for (int i = 0; i < 10; i++) { addEdits(log, hri, htd, 1, mvcc, scopes); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollAbort.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollAbort.java index 788828a..13f99e3 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollAbort.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollAbort.java @@ -41,13 +41,12 @@ import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.regionserver.HRegionServer; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.testclassification.RegionServerTests; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.hbase.wal.AbstractFSWALProvider; -import org.apache.hadoop.hbase.wal.FSHLogProvider; import org.apache.hadoop.hbase.wal.WAL; import org.apache.hadoop.hbase.wal.WALFactory; import org.apache.hadoop.hbase.wal.WALKey; @@ -196,7 +195,7 @@ public class TestLogRollAbort { HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW); final WAL log = wals.getWAL(regioninfo.getEncodedNameAsBytes(), regioninfo.getTable().getNamespace()); - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); final int total = 20; for (int i = 0; i < total; i++) { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.java index eda7df7..f46f72d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.java @@ -34,7 +34,7 @@ import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.testclassification.RegionServerTests; import org.apache.hadoop.hbase.util.Bytes; @@ -129,7 +129,7 @@ public class TestLogRollingNoCluster { @Override public void run() { this.log.info(getName() +" started"); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); try { for (int i = 0; i < this.count; i++) { long now = System.currentTimeMillis(); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java index e3cc6e9..6726867 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java @@ -55,7 +55,7 @@ import org.apache.hadoop.hbase.client.replication.ReplicationAdmin; import org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication; import org.apache.hadoop.hbase.protobuf.generated.WALProtos; import org.apache.hadoop.hbase.regionserver.HRegion; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.replication.regionserver.Replication; import org.apache.hadoop.hbase.testclassification.LargeTests; @@ -764,7 +764,7 @@ public class TestReplicationSmallTests extends TestReplicationBase { for (byte[] fam : htable1.getTableDescriptor().getFamiliesKeys()) { scopes.put(fam, 1); } - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); int index = utility1.getMiniHBaseCluster().getServerWith(hri.getRegionName()); WAL wal = utility1.getMiniHBaseCluster().getRegionServer(index).getWAL(region.getRegionInfo()); final byte[] rowName = Bytes.toBytes("testReplicationInReplay"); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.java index 4ee783d..6631301 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.java @@ -60,7 +60,7 @@ import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.ClusterConnection; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.generated.WALProtos.BulkLoadDescriptor; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.replication.ReplicationFactory; @@ -215,7 +215,7 @@ public abstract class TestReplicationSourceManager { public void testLogRoll() throws Exception { long baseline = 1000; long time = baseline; - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); KeyValue kv = new KeyValue(r1, f1, r1); WALEdit edit = new WALEdit(); edit.add(kv); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationWALReaderManager.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationWALReaderManager.java index 3ef658f..cff746c 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationWALReaderManager.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationWALReaderManager.java @@ -30,7 +30,6 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.List; import java.util.NavigableMap; import java.util.TreeMap; -import java.util.concurrent.atomic.AtomicLong; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; @@ -41,7 +40,7 @@ import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener; import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.testclassification.LargeTests; @@ -86,7 +85,7 @@ public class TestReplicationWALReaderManager { private int walEditKVs; private final AtomicLong sequenceId = new AtomicLong(1); @Rule public TestName tn = new TestName(); - private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + private final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); @Parameters public static Collection parameters() { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProvider.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProvider.java index 368aa89..2d6a39a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProvider.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestFSHLogProvider.java @@ -45,7 +45,7 @@ import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; // imports for things that haven't moved from regionserver.wal yet. import org.apache.hadoop.hbase.regionserver.wal.WALEdit; import org.apache.hadoop.hbase.testclassification.MediumTests; @@ -68,14 +68,14 @@ public class TestFSHLogProvider { protected static Configuration conf; protected static FileSystem fs; protected final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(); - protected MultiVersionConcurrencyControl mvcc; + protected MultiVersionConcurrencyControlImpl mvcc; @Rule public final TestName currentTest = new TestName(); @Before public void setUp() throws Exception { - mvcc = new MultiVersionConcurrencyControl(); + mvcc = new MultiVersionConcurrencyControlImpl(); FileStatus[] entries = fs.listStatus(new Path("/")); for (FileStatus dir : entries) { fs.delete(dir.getPath(), true); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java index fb1afa6..375340c 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java @@ -53,7 +53,7 @@ import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.coprocessor.CoprocessorHost; import org.apache.hadoop.hbase.coprocessor.SampleRegionWALObserver; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.regionserver.wal.HLogKey; import org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader; import org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter; @@ -169,7 +169,7 @@ public class TestWALFactory { public void testSplit() throws IOException { final TableName tableName = TableName.valueOf(currentTest.getMethodName()); final byte [] rowName = tableName.getName(); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); final Path logdir = new Path(hbaseDir, AbstractFSWALProvider.getWALDirectoryName(currentTest.getMethodName())); Path oldLogDir = new Path(hbaseDir, HConstants.HREGION_OLDLOGDIR_NAME); @@ -225,7 +225,7 @@ public class TestWALFactory { @Test public void Broken_testSync() throws Exception { TableName tableName = TableName.valueOf(currentTest.getMethodName()); - MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); // First verify that using streams all works. Path p = new Path(dir, currentTest.getMethodName() + ".fsdos"); FSDataOutputStream out = fs.create(p); @@ -512,7 +512,7 @@ public class TestWALFactory { final byte [] row = Bytes.toBytes("row"); WAL.Reader reader = null; try { - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); // Write columns named 1, 2, 3, etc. and then values of single byte // 1, 2, 3... @@ -576,7 +576,7 @@ public class TestWALFactory { } final byte [] row = Bytes.toBytes("row"); WAL.Reader reader = null; - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); try { // Write columns named 1, 2, 3, etc. and then values of single byte // 1, 2, 3... @@ -632,7 +632,7 @@ public class TestWALFactory { TableName.valueOf("tablename"); final byte [] row = Bytes.toBytes("row"); final DumbWALActionsListener visitor = new DumbWALActionsListener(); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); long timestamp = System.currentTimeMillis(); HTableDescriptor htd = new HTableDescriptor(tableName); htd.addFamily(new HColumnDescriptor("column")); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALReaderOnSecureWAL.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALReaderOnSecureWAL.java index d01298b..b4a0d0f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALReaderOnSecureWAL.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALReaderOnSecureWAL.java @@ -41,7 +41,7 @@ import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.io.crypto.KeyProviderForTesting; import org.apache.hadoop.hbase.protobuf.generated.ZooKeeperProtos.SplitLogTask.RecoveryMode; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; // imports for things that haven't moved from regionserver.wal yet. import org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader; import org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriter; @@ -109,7 +109,7 @@ public class TestWALReaderOnSecureWAL { final int total = 10; final byte[] row = Bytes.toBytes("row"); final byte[] family = Bytes.toBytes("family"); - final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(1); + final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(1); // Write the WAL WAL wal = diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java index c7ea5f2..b800af0 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java @@ -50,7 +50,7 @@ import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.io.crypto.KeyProviderForTesting; import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.LogRoller; -import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl; +import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControlImpl; import org.apache.hadoop.hbase.trace.HBaseHTraceConfiguration; import org.apache.hadoop.hbase.trace.SpanReceiverHost; import org.apache.hadoop.hbase.wal.WALProvider.Writer; @@ -99,7 +99,7 @@ public final class WALPerformanceEvaluation extends Configured implements Tool { private final Histogram latencyHistogram = metrics.histogram(name(WALPerformanceEvaluation.class, "latencyHistogram", "nanos")); - private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl(); + private final MultiVersionConcurrencyControlImpl mvcc = new MultiVersionConcurrencyControlImpl(); private HBaseTestingUtility TEST_UTIL;