You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/11/18 01:22:37 UTC
[09/30] hbase git commit: HBASE-19239 Fix findbugs and error-prone
issues
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
index 1739553..1e69dbf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
@@ -41,6 +41,7 @@ import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -139,8 +140,8 @@ public class HStore implements Store {
volatile boolean forceMajor = false;
/* how many bytes to write between status checks */
static int closeCheckInterval = 0;
- private volatile long storeSize = 0L;
- private volatile long totalUncompressedBytes = 0L;
+ private AtomicLong storeSize = new AtomicLong();
+ private AtomicLong totalUncompressedBytes = new AtomicLong();
/**
* RWLock for store operations.
@@ -200,13 +201,13 @@ public class HStore implements Store {
private Encryption.Context cryptoContext = Encryption.Context.NONE;
- private volatile long flushedCellsCount = 0;
- private volatile long compactedCellsCount = 0;
- private volatile long majorCompactedCellsCount = 0;
- private volatile long flushedCellsSize = 0;
- private volatile long flushedOutputFileSize = 0;
- private volatile long compactedCellsSize = 0;
- private volatile long majorCompactedCellsSize = 0;
+ private AtomicLong flushedCellsCount = new AtomicLong();
+ private AtomicLong compactedCellsCount = new AtomicLong();
+ private AtomicLong majorCompactedCellsCount = new AtomicLong();
+ private AtomicLong flushedCellsSize = new AtomicLong();
+ private AtomicLong flushedOutputFileSize = new AtomicLong();
+ private AtomicLong compactedCellsSize = new AtomicLong();
+ private AtomicLong majorCompactedCellsSize = new AtomicLong();
/**
* Constructor
@@ -549,8 +550,8 @@ public class HStore implements Store {
StoreFile storeFile = future.get();
if (storeFile != null) {
long length = storeFile.getReader().length();
- this.storeSize += length;
- this.totalUncompressedBytes += storeFile.getReader().getTotalUncompressedBytes();
+ this.storeSize.addAndGet(length);
+ this.totalUncompressedBytes.addAndGet(storeFile.getReader().getTotalUncompressedBytes());
if (LOG.isDebugEnabled()) {
LOG.debug("loaded " + storeFile.toStringDetailed());
}
@@ -844,8 +845,8 @@ public class HStore implements Store {
private void bulkLoadHFile(StoreFile sf) throws IOException {
StoreFile.Reader r = sf.getReader();
- this.storeSize += r.length();
- this.totalUncompressedBytes += r.getTotalUncompressedBytes();
+ this.storeSize.addAndGet(r.length());
+ this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());
// Append the new storefile into the list
this.lock.writeLock().lock();
@@ -1014,8 +1015,8 @@ public class HStore implements Store {
StoreFile sf = createStoreFileAndReader(dstPath);
StoreFile.Reader r = sf.getReader();
- this.storeSize += r.length();
- this.totalUncompressedBytes += r.getTotalUncompressedBytes();
+ this.storeSize.addAndGet(r.length());
+ this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());
if (LOG.isInfoEnabled()) {
LOG.info("Added " + sf + ", entries=" + r.getEntries() +
@@ -1348,11 +1349,11 @@ public class HStore implements Store {
writeCompactionWalRecord(filesToCompact, sfs);
replaceStoreFiles(filesToCompact, sfs);
if (cr.isMajor()) {
- majorCompactedCellsCount += getCompactionProgress().totalCompactingKVs;
- majorCompactedCellsSize += getCompactionProgress().totalCompactedSize;
+ majorCompactedCellsCount.addAndGet(getCompactionProgress().totalCompactingKVs);
+ majorCompactedCellsSize.addAndGet(getCompactionProgress().totalCompactedSize);
} else {
- compactedCellsCount += getCompactionProgress().totalCompactingKVs;
- compactedCellsSize += getCompactionProgress().totalCompactedSize;
+ compactedCellsCount.addAndGet(getCompactionProgress().totalCompactingKVs);
+ compactedCellsSize.addAndGet(getCompactionProgress().totalCompactedSize);
}
for (StoreFile sf : sfs) {
@@ -1475,7 +1476,7 @@ public class HStore implements Store {
}
}
message.append("total size for store is ")
- .append(StringUtils.TraditionalBinaryPrefix.long2String(storeSize, "", 1))
+ .append(StringUtils.TraditionalBinaryPrefix.long2String(storeSize.get(), "", 1))
.append(". This selection was in queue for ")
.append(StringUtils.formatTimeDiff(compactionStartTime, cr.getSelectionTime()))
.append(", and took ").append(StringUtils.formatTimeDiff(now, compactionStartTime))
@@ -1812,7 +1813,7 @@ public class HStore implements Store {
completeCompaction(delSfs);
LOG.info("Completed removal of " + delSfs.size() + " unnecessary (expired) file(s) in "
+ this + " of " + this.getRegionInfo().getRegionNameAsString()
- + "; total size for store is " + TraditionalBinaryPrefix.long2String(storeSize, "", 1));
+ + "; total size for store is " + TraditionalBinaryPrefix.long2String(storeSize.get(), "", 1));
}
@Override
@@ -1892,16 +1893,16 @@ public class HStore implements Store {
protected void completeCompaction(final Collection<StoreFile> compactedFiles, boolean removeFiles)
throws IOException {
LOG.debug("Completing compaction...");
- this.storeSize = 0L;
- this.totalUncompressedBytes = 0L;
+ this.storeSize.set(0L);
+ this.totalUncompressedBytes.set(0L);
for (StoreFile hsf : this.storeEngine.getStoreFileManager().getStorefiles()) {
StoreFile.Reader r = hsf.getReader();
if (r == null) {
LOG.warn("StoreFile " + hsf + " has a null Reader");
continue;
}
- this.storeSize += r.length();
- this.totalUncompressedBytes += r.getTotalUncompressedBytes();
+ this.storeSize.addAndGet(r.length());
+ this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());
}
}
@@ -2147,7 +2148,7 @@ public class HStore implements Store {
@Override
public long getSize() {
- return storeSize;
+ return storeSize.get();
}
@Override
@@ -2275,7 +2276,7 @@ public class HStore implements Store {
@Override
public long getStoreSizeUncompressed() {
- return this.totalUncompressedBytes;
+ return this.totalUncompressedBytes.get();
}
@Override
@@ -2491,9 +2492,9 @@ public class HStore implements Store {
committedFiles.add(sf.getPath());
}
- HStore.this.flushedCellsCount += cacheFlushCount;
- HStore.this.flushedCellsSize += cacheFlushSize;
- HStore.this.flushedOutputFileSize += outputFileSize;
+ HStore.this.flushedCellsCount.addAndGet(cacheFlushCount);
+ HStore.this.flushedCellsSize.addAndGet(cacheFlushSize);
+ HStore.this.flushedOutputFileSize.addAndGet(outputFileSize);
// Add new file to store files. Clear snapshot too while we have the Store write lock.
return HStore.this.updateStorefiles(storeFiles, snapshot.getId());
@@ -2526,8 +2527,9 @@ public class HStore implements Store {
StoreFileInfo storeFileInfo = fs.getStoreFileInfo(getColumnFamilyName(), file);
StoreFile storeFile = createStoreFileAndReader(storeFileInfo);
storeFiles.add(storeFile);
- HStore.this.storeSize += storeFile.getReader().length();
- HStore.this.totalUncompressedBytes += storeFile.getReader().getTotalUncompressedBytes();
+ HStore.this.storeSize.addAndGet(storeFile.getReader().length());
+ HStore.this.totalUncompressedBytes.addAndGet(
+ storeFile.getReader().getTotalUncompressedBytes());
if (LOG.isInfoEnabled()) {
LOG.info("Region: " + HStore.this.getRegionInfo().getEncodedName() +
" added " + storeFile + ", entries=" + storeFile.getReader().getEntries() +
@@ -2567,7 +2569,7 @@ public class HStore implements Store {
}
public static final long FIXED_OVERHEAD =
- ClassSize.align(ClassSize.OBJECT + (17 * ClassSize.REFERENCE) + (11 * Bytes.SIZEOF_LONG)
+ ClassSize.align(ClassSize.OBJECT + (26 * ClassSize.REFERENCE) + (2 * Bytes.SIZEOF_LONG)
+ (5 * Bytes.SIZEOF_INT) + (2 * Bytes.SIZEOF_BOOLEAN));
public static final long DEEP_OVERHEAD = ClassSize.align(FIXED_OVERHEAD
@@ -2606,37 +2608,37 @@ public class HStore implements Store {
@Override
public long getFlushedCellsCount() {
- return flushedCellsCount;
+ return flushedCellsCount.get();
}
@Override
public long getFlushedCellsSize() {
- return flushedCellsSize;
+ return flushedCellsSize.get();
}
@Override
public long getFlushedOutputFileSize() {
- return flushedOutputFileSize;
+ return flushedOutputFileSize.get();
}
@Override
public long getCompactedCellsCount() {
- return compactedCellsCount;
+ return compactedCellsCount.get();
}
@Override
public long getCompactedCellsSize() {
- return compactedCellsSize;
+ return compactedCellsSize.get();
}
@Override
public long getMajorCompactedCellsCount() {
- return majorCompactedCellsCount;
+ return majorCompactedCellsCount.get();
}
@Override
public long getMajorCompactedCellsSize() {
- return majorCompactedCellsSize;
+ return majorCompactedCellsSize.get();
}
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
index ff68110..61bf0c9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
@@ -91,7 +91,7 @@ public class IncreasingToUpperBoundRegionSplitPolicy extends ConstantSizeRegionS
}
}
- return foundABigStore | force;
+ return foundABigStore || force;
}
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/InternalScanner.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/InternalScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/InternalScanner.java
index a255b85..2a94182 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/InternalScanner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/InternalScanner.java
@@ -65,5 +65,6 @@ public interface InternalScanner extends Closeable {
* Closes the scanner and releases any resources it has allocated
* @throws IOException
*/
+ @Override
void close() throws IOException;
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
index 30dc2c1..c0ba844 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/KeyValueHeap.java
@@ -97,6 +97,7 @@ public class KeyValueHeap extends NonReversedNonLazyKeyValueScanner
}
}
+ @Override
public Cell peek() {
if (this.current == null) {
return null;
@@ -104,6 +105,7 @@ public class KeyValueHeap extends NonReversedNonLazyKeyValueScanner
return this.current.peek();
}
+ @Override
public Cell next() throws IOException {
if(this.current == null) {
return null;
@@ -180,6 +182,8 @@ public class KeyValueHeap extends NonReversedNonLazyKeyValueScanner
public KVScannerComparator(KVComparator kvComparator) {
this.kvComparator = kvComparator;
}
+
+ @Override
public int compare(KeyValueScanner left, KeyValueScanner right) {
int comparison = compare(left.peek(), right.peek());
if (comparison != 0) {
@@ -208,6 +212,7 @@ public class KeyValueHeap extends NonReversedNonLazyKeyValueScanner
}
}
+ @Override
public void close() {
if (this.current != null) {
this.current.close();
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java
index eb8bd06..02ebd97 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Leases.java
@@ -288,11 +288,13 @@ public class Leases extends HasThread {
return this.leaseName.hashCode();
}
+ @Override
public long getDelay(TimeUnit unit) {
return unit.convert(this.expirationTime - EnvironmentEdgeManager.currentTime(),
TimeUnit.MILLISECONDS);
}
+ @Override
public int compareTo(Delayed o) {
long delta = this.getDelay(TimeUnit.MILLISECONDS) -
o.getDelay(TimeUnit.MILLISECONDS);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
index 0e5f284..246c02c 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LogRoller.java
@@ -37,10 +37,6 @@ import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.HasThread;
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.ReentrantLock;
-
import com.google.common.annotations.VisibleForTesting;
/**
@@ -54,6 +50,8 @@ import com.google.common.annotations.VisibleForTesting;
*/
@InterfaceAudience.Private
@VisibleForTesting
+@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="JLM_JSR166_UTILCONCURRENT_MONITORENTER",
+ justification="Use of an atomic type both as monitor and condition variable is intended")
public class LogRoller extends HasThread {
private static final Log LOG = LogFactory.getLog(LogRoller.class);
private final ReentrantLock rollLock = new ReentrantLock();
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
index 3bca175..2da782e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
@@ -29,6 +29,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.SortedMap;
import java.util.concurrent.BlockingQueue;
@@ -700,8 +701,13 @@ class MemStoreFlusher implements FlushRequester {
}
@Override
+ public int hashCode() {
+ return System.identityHashCode(this);
+ }
+
+ @Override
public boolean equals(Object obj) {
- return (this == obj);
+ return Objects.equals(this, obj);
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java
----------------------------------------------------------------------
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 57d6356..cc68b03 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
@@ -76,7 +76,7 @@ public class MultiVersionConcurrencyControl {
while (true) {
long seqId = this.getWritePoint();
if (seqId >= newStartPoint) break;
- if (this.tryAdvanceTo(/* newSeqId = */ newStartPoint, /* expected = */ seqId)) break;
+ if (this.tryAdvanceTo(newStartPoint, seqId)) break;
}
}
@@ -245,6 +245,7 @@ public class MultiVersionConcurrencyControl {
}
@VisibleForTesting
+ @Override
public String toString() {
return Objects.toStringHelper(this)
.add("readPoint", readPoint)
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 531721a..fda8259 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -1059,10 +1059,9 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
Class<?> rpcSchedulerFactoryClass = rs.conf.getClass(
REGION_SERVER_RPC_SCHEDULER_FACTORY_CLASS,
SimpleRpcSchedulerFactory.class);
- rpcSchedulerFactory = ((RpcSchedulerFactory) rpcSchedulerFactoryClass.newInstance());
- } catch (InstantiationException e) {
- throw new IllegalArgumentException(e);
- } catch (IllegalAccessException e) {
+ rpcSchedulerFactory = (RpcSchedulerFactory)
+ rpcSchedulerFactoryClass.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
throw new IllegalArgumentException(e);
}
// Server to handle client requests.
@@ -1653,6 +1652,9 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
*/
@Override
@QosPriority(priority=HConstants.ADMIN_QOS)
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(
+ value="JLM_JSR166_UTILCONCURRENT_MONITORENTER",
+ justification="We double up use of an atomic both as monitor and condition variable")
public OpenRegionResponse openRegion(final RpcController controller,
final OpenRegionRequest request) throws ServiceException {
requestCount.increment();
@@ -2583,7 +2585,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
private static final long serialVersionUID = -4305297078988180130L;
@Override
- public Throwable fillInStackTrace() {
+ public synchronized Throwable fillInStackTrace() {
return this;
}
};
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
index dbe8521..f29397d 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
@@ -71,7 +71,6 @@ import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.io.Reference;
import org.apache.hadoop.hbase.io.hfile.CacheConfig;
-import org.apache.hadoop.hbase.ipc.RpcServer;
import org.apache.hadoop.hbase.metrics.MetricRegistry;
import org.apache.hadoop.hbase.regionserver.DeleteTracker;
import org.apache.hadoop.hbase.regionserver.Region.Operation;
@@ -88,11 +87,6 @@ import com.google.common.collect.Lists;
import com.google.protobuf.Message;
import com.google.protobuf.Service;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import com.google.protobuf.Message;
-import com.google.protobuf.Service;
-
/**
* Implements the coprocessor environment and runtime support for coprocessors
* loaded within a {@link Region}.
@@ -160,6 +154,7 @@ public class RegionCoprocessorHost
return rsServices;
}
+ @Override
public void shutdown() {
super.shutdown();
MetricsCoprocessor.removeRegistry(this.metricRegistry);
@@ -525,6 +520,7 @@ public class RegionCoprocessorHost
throws IOException {
oserver.postClose(ctx, abortRequested);
}
+ @Override
public void postEnvCall(RegionEnvironment env) {
shutdown(env);
}
@@ -1704,10 +1700,12 @@ public class RegionCoprocessorHost
public abstract void call(RegionObserver observer,
ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException;
+ @Override
public boolean hasCall(Coprocessor observer) {
return observer instanceof RegionObserver;
}
+ @Override
public void call(Coprocessor observer, ObserverContext<RegionCoprocessorEnvironment> ctx)
throws IOException {
call((RegionObserver)observer, ctx);
@@ -1724,10 +1722,12 @@ public class RegionCoprocessorHost
public abstract void call(EndpointObserver observer,
ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException;
+ @Override
public boolean hasCall(Coprocessor observer) {
return observer instanceof EndpointObserver;
}
+ @Override
public void call(Coprocessor observer, ObserverContext<RegionCoprocessorEnvironment> ctx)
throws IOException {
call((EndpointObserver)observer, ctx);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScannerContext.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScannerContext.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScannerContext.java
index 6831c91..77d0e35 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScannerContext.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScannerContext.java
@@ -425,8 +425,8 @@ public class ScannerContext {
TIME_LIMIT_REACHED_MID_ROW(true, true),
BATCH_LIMIT_REACHED(true, true);
- private boolean moreValues;
- private boolean limitReached;
+ private final boolean moreValues;
+ private final boolean limitReached;
private NextState(boolean moreValues, boolean limitReached) {
this.moreValues = moreValues;
@@ -482,7 +482,7 @@ public class ScannerContext {
* limits, the checker must know their own scope (i.e. are they checking the limits between
* rows, between cells, etc...)
*/
- int depth;
+ final int depth;
LimitScope(int depth) {
this.depth = depth;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
index 874acb2..1115528 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
@@ -83,9 +83,9 @@ public class SplitLogWorker implements Runnable {
}
public SplitLogWorker(final Server hserver, final Configuration conf,
- final RegionServerServices server, final LastSequenceId sequenceIdChecker,
+ final RegionServerServices rsServices, final LastSequenceId sequenceIdChecker,
final WALFactory factory) {
- this(server, conf, server, new TaskExecutor() {
+ this(hserver, conf, rsServices, new TaskExecutor() {
@Override
public Status exec(String filename, RecoveryMode mode, CancelableProgressable p) {
Path walDir;
@@ -102,7 +102,7 @@ public class SplitLogWorker implements Runnable {
// encountered a bad non-retry-able persistent error.
try {
if (!WALSplitter.splitLogFile(walDir, fs.getFileStatus(new Path(walDir, filename)),
- fs, conf, p, sequenceIdChecker, server.getCoordinatedStateManager(), mode, factory)) {
+ fs, conf, p, sequenceIdChecker, rsServices.getCoordinatedStateManager(), mode, factory)) {
return Status.PREEMPTED;
}
} catch (InterruptedIOException iioe) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.java
index 29ac199..f9a5d31 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.java
@@ -170,6 +170,7 @@ public class SplitTransactionImpl implements SplitTransaction {
* @return <code>true</code> if the region is splittable else
* <code>false</code> if it is not (e.g. its already closed, etc.).
*/
+ @Override
public boolean prepare() throws IOException {
if (!this.parent.isSplittable()) return false;
// Split key can be null if this region is unsplittable; i.e. has refs.
@@ -886,6 +887,7 @@ public class SplitTransactionImpl implements SplitTransaction {
this.family = family;
}
+ @Override
public Pair<Path,Path> call() throws IOException {
return splitStoreFile(family, sf);
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
index 28c0892..c27cf40 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
@@ -1045,6 +1045,7 @@ public class StoreFile {
}
}
+ @Override
public void append(final Cell cell) throws IOException {
appendGeneralBloomfilter(cell);
appendDeleteFamilyBloomFilter(cell);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileInfo.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileInfo.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileInfo.java
index 08259de..12da6b7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileInfo.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileInfo.java
@@ -502,37 +502,49 @@ public class StoreFileInfo {
}
@Override
- public boolean equals(Object that) {
- if (this == that) return true;
- if (that == null) return false;
-
- if (!(that instanceof StoreFileInfo)) return false;
-
- StoreFileInfo o = (StoreFileInfo)that;
- if (initialPath != null && o.initialPath == null) return false;
- if (initialPath == null && o.initialPath != null) return false;
- if (initialPath != o.initialPath && initialPath != null
- && !initialPath.equals(o.initialPath)) return false;
-
- if (reference != null && o.reference == null) return false;
- if (reference == null && o.reference != null) return false;
- if (reference != o.reference && reference != null
- && !reference.equals(o.reference)) return false;
-
- if (link != null && o.link == null) return false;
- if (link == null && o.link != null) return false;
- if (link != o.link && link != null && !link.equals(o.link)) return false;
-
- return true;
- };
-
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((initialPath == null) ? 0 : initialPath.hashCode());
+ result = prime * result + ((link == null) ? 0 : link.hashCode());
+ result = prime * result + ((reference == null) ? 0 : reference.hashCode());
+ return result;
+ }
@Override
- public int hashCode() {
- int hash = 17;
- hash = hash * 31 + ((reference == null) ? 0 : reference.hashCode());
- hash = hash * 31 + ((initialPath == null) ? 0 : initialPath.hashCode());
- hash = hash * 31 + ((link == null) ? 0 : link.hashCode());
- return hash;
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ StoreFileInfo other = (StoreFileInfo) obj;
+ if (initialPath == null) {
+ if (other.initialPath != null) {
+ return false;
+ }
+ } else if (!initialPath.equals(other.initialPath)) {
+ return false;
+ }
+ if (link == null) {
+ if (other.link != null) {
+ return false;
+ }
+ } else if (!link.equals(other.link)) {
+ return false;
+ }
+ if (reference == null) {
+ if (other.reference != null) {
+ return false;
+ }
+ } else if (!reference.equals(other.reference)) {
+ return false;
+ }
+ return true;
}
+
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
index f5eb74f..8132365 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java
@@ -150,14 +150,17 @@ public class StoreFileScanner implements KeyValueScanner {
matcher, readPt, true);
}
+ @Override
public String toString() {
return "StoreFileScanner[" + hfs.toString() + ", cur=" + cur + "]";
}
+ @Override
public Cell peek() {
return cur;
}
+ @Override
public Cell next() throws IOException {
Cell retKey = cur;
@@ -178,6 +181,7 @@ public class StoreFileScanner implements KeyValueScanner {
return retKey;
}
+ @Override
public boolean seek(Cell key) throws IOException {
if (seekCount != null) seekCount.incrementAndGet();
@@ -205,6 +209,7 @@ public class StoreFileScanner implements KeyValueScanner {
}
}
+ @Override
public boolean reseek(Cell key) throws IOException {
if (seekCount != null) seekCount.incrementAndGet();
@@ -263,6 +268,7 @@ public class StoreFileScanner implements KeyValueScanner {
return true;
}
+ @Override
public void close() {
cur = null;
if (closed) return;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java
index 9b2a56a..12cc7bf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java
@@ -157,11 +157,13 @@ public class TimeRangeTracker implements Writable {
return maximumTimestamp.get();
}
+ @Override
public void write(final DataOutput out) throws IOException {
out.writeLong(minimumTimestamp.get());
out.writeLong(maximumTimestamp.get());
}
+ @Override
public void readFields(final DataInput in) throws IOException {
this.minimumTimestamp.set(in.readLong());
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java
index 12a84eb..9d67af5 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java
@@ -26,9 +26,8 @@ import com.google.common.collect.Collections2;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.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.classification.InterfaceStability;
import org.apache.hadoop.hbase.regionserver.Store;
@@ -43,7 +42,7 @@ import org.apache.hadoop.util.StringUtils;
@InterfaceAudience.LimitedPrivate({ "coprocessor" })
@InterfaceStability.Evolving
public class CompactionRequest implements Comparable<CompactionRequest> {
- private static final Log LOG = LogFactory.getLog(CompactionRequest.class);
+
// was this compaction promoted to an off-peak
private boolean isOffPeak = false;
private enum DisplayCompactionType { MINOR, ALL_FILES, MAJOR }
@@ -142,8 +141,13 @@ public class CompactionRequest implements Comparable<CompactionRequest> {
}
@Override
+ public int hashCode() {
+ return System.identityHashCode(this);
+ }
+
+ @Override
public boolean equals(Object obj) {
- return (this == obj);
+ return Objects.equals(this, obj);
}
public Collection<StoreFile> getFiles() {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java
index 2d8772c..9e11ecf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java
@@ -207,6 +207,7 @@ public class RatioBasedCompactionPolicy extends SortedCompactionPolicy {
* @param filesCompacting files being scheduled to compact.
* @return true to schedule a request.
*/
+ @Override
public boolean needsCompaction(final Collection<StoreFile> storeFiles,
final List<StoreFile> filesCompacting) {
int numCandidates = storeFiles.size() - filesCompacting.size();
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.java
index 77b0af8..4e8c35a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/SortedCompactionPolicy.java
@@ -106,6 +106,7 @@ public abstract class SortedCompactionPolicy extends CompactionPolicy {
* @param filesToCompact Files to compact. Can be null.
* @return True if we should run a major compaction.
*/
+ @Override
public abstract boolean shouldPerformMajorCompaction(final Collection<StoreFile> filesToCompact)
throws IOException;
@@ -148,6 +149,7 @@ public abstract class SortedCompactionPolicy extends CompactionPolicy {
* @param compactionSize Total size of some compaction
* @return whether this should be a large or small compaction
*/
+ @Override
public boolean throttleCompaction(long compactionSize) {
return compactionSize > comConf.getThrottlePoint();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java
index 69786b6..d64b789 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java
@@ -43,6 +43,8 @@ import org.apache.hadoop.hbase.util.ConfigUtil;
* This is executed after receiving an OPEN RPC from the master or client.
*/
@InterfaceAudience.Private
+@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="JLM_JSR166_UTILCONCURRENT_MONITORENTER",
+ justification="Use of an atomic type both as monitor and condition variable is intended")
public class OpenRegionHandler extends EventHandler {
private static final Log LOG = LogFactory.getLog(OpenRegionHandler.class);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
index d5cf6bb..593132f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java
@@ -1323,7 +1323,7 @@ public class FSHLog implements WAL {
rollWriterLock.unlock();
}
try {
- if (lowReplication || writer != null && writer.getLength() > logrollsize) {
+ if (lowReplication || (writer != null && writer.getLength() > logrollsize)) {
requestLogRoll(lowReplication);
}
} catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java
----------------------------------------------------------------------
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 69d1c59..69c0db7 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
@@ -81,6 +81,7 @@ class FSWALEntry extends Entry {
}
}
+ @Override
public String toString() {
return "sequence=" + this.sequence + ", " + super.toString();
};
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.java
index 9fd171f..5643174 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.java
@@ -100,10 +100,12 @@ public class ProtobufLogReader extends ReaderBase {
public long trailerSize() {
if (trailerPresent) {
// sizeof PB_WAL_COMPLETE_MAGIC + sizof trailerSize + trailer
- final long calculatedSize = PB_WAL_COMPLETE_MAGIC.length + Bytes.SIZEOF_INT + trailer.getSerializedSize();
+ final long calculatedSize = (long) PB_WAL_COMPLETE_MAGIC.length + Bytes.SIZEOF_INT +
+ trailer.getSerializedSize();
final long expectedSize = fileLength - walEditsStopOffset;
if (expectedSize != calculatedSize) {
- LOG.warn("After parsing the trailer, we expect the total footer to be "+ expectedSize +" bytes, but we calculate it as being " + calculatedSize);
+ LOG.warn("After parsing the trailer, we expect the total footer to be "+ expectedSize
+ + " bytes, but we calculate it as being " + calculatedSize);
}
return expectedSize;
} else {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.java
index 25c2111..deb9959 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.java
@@ -109,6 +109,7 @@ class RingBufferTruck {
* Factory for making a bunch of these. Needed by the ringbuffer/disruptor.
*/
final static EventFactory<RingBufferTruck> EVENT_FACTORY = new EventFactory<RingBufferTruck>() {
+ @Override
public RingBufferTruck newInstance() {
return new RingBufferTruck();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java
index 700dd01..add1043 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.java
@@ -572,7 +572,7 @@ public class ReplicationSource extends Thread implements ReplicationSourceInterf
if (replicationQueueInfo.isQueueRecovered() && getWorkerState() == WorkerState.FINISHED) {
// use synchronize to make sure one last thread will clean the queue
- synchronized (workerThreads) {
+ synchronized (this) {
Threads.sleep(100);// wait a short while for other worker thread to fully exit
boolean allOtherTaskDone = true;
for (ReplicationSourceShipperThread worker : workerThreads.values()) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java
index 8ce1437..8660bd2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.java
@@ -334,6 +334,7 @@ public class AuthenticationTokenSecretManager
interrupt();
}
+ @Override
public void run() {
zkLeader.start();
zkLeader.waitToBecomeLeader();
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ExpressionParser.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ExpressionParser.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ExpressionParser.java
index db3caff..4a34f5b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ExpressionParser.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/ExpressionParser.java
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.hbase.security.visibility;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
@@ -103,7 +104,8 @@ public class ExpressionParser {
}
index++;
} while (index < endPos && !isEndOfLabel(exp[index]));
- leafExp = new String(exp, labelOffset, index - labelOffset).trim();
+ leafExp = new String(exp, labelOffset, index - labelOffset,
+ StandardCharsets.UTF_8).trim();
if (leafExp.isEmpty()) {
throw new ParseException("Error parsing expression " + expS + " at column : " + index);
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/LeafExpressionNode.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/LeafExpressionNode.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/LeafExpressionNode.java
index a15669f..1ace4c0 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/LeafExpressionNode.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/LeafExpressionNode.java
@@ -58,6 +58,7 @@ public class LeafExpressionNode implements ExpressionNode {
return true;
}
+ @Override
public LeafExpressionNode deepClone() {
LeafExpressionNode clone = new LeafExpressionNode(this.identifier);
return clone;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/NonLeafExpressionNode.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/NonLeafExpressionNode.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/NonLeafExpressionNode.java
index 4399ecc..e926045 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/NonLeafExpressionNode.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/NonLeafExpressionNode.java
@@ -91,6 +91,7 @@ public class NonLeafExpressionNode implements ExpressionNode {
return this.op == Operator.NOT;
}
+ @Override
public NonLeafExpressionNode deepClone() {
NonLeafExpressionNode clone = new NonLeafExpressionNode(this.op);
for (ExpressionNode exp : this.childExps) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/Operator.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/Operator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/Operator.java
index 1025ca9..ace34ae 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/Operator.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/expression/Operator.java
@@ -23,12 +23,13 @@ import org.apache.hadoop.hbase.classification.InterfaceAudience;
public enum Operator {
AND('&'), OR('|'), NOT('!');
- private char rep;
+ private final char rep;
private Operator(char rep) {
this.rep = rep;
}
+ @Override
public String toString() {
return String.valueOf(this.rep);
};
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
index 37a02bd..0824189 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
@@ -573,6 +573,7 @@ public class ExportSnapshot extends Configured implements Tool {
final List<Pair<SnapshotFileInfo, Long>> files, final int ngroups) {
// Sort files by size, from small to big
Collections.sort(files, new Comparator<Pair<SnapshotFileInfo, Long>>() {
+ @Override
public int compare(Pair<SnapshotFileInfo, Long> a, Pair<SnapshotFileInfo, Long> b) {
long r = a.getSecond() - b.getSecond();
return (r < 0) ? -1 : ((r > 0) ? 1 : 0);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java
index 47b3c34..75dac43 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java
@@ -749,7 +749,7 @@ public class RestoreSnapshotHelper {
public static void restoreSnapshotACL(SnapshotDescription snapshot, TableName newTableName,
Configuration conf) throws IOException {
- if (snapshot.hasUsersAndPermissions() && snapshot.getUsersAndPermissions() != null) {
+ if (snapshot.hasUsersAndPermissions()) {
LOG.info("Restore snapshot acl to table. snapshot: " + snapshot + ", table: " + newTableName);
ListMultimap<String, TablePermission> perms =
ProtobufUtil.toUserTablePermissions(snapshot.getUsersAndPermissions());
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
index 06eb9ea..7e161ca 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
@@ -382,7 +382,7 @@ public class FSTableDescriptors implements TableDescriptors {
// Clean away old versions
for (FileStatus file : status) {
Path path = file.getPath();
- if (file != mostCurrent) {
+ if (!file.equals(mostCurrent)) {
if (!fs.delete(file.getPath(), false)) {
LOG.warn("Failed cleanup of " + path);
} else {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java
index 3e2d230..5d850b0 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java
@@ -1078,7 +1078,7 @@ public abstract class FSUtils {
private static boolean isValidWALRootDir(Path walDir, final Configuration c) throws IOException {
Path rootDir = FSUtils.getRootDir(c);
- if (walDir != rootDir) {
+ if (!walDir.equals(rootDir)) {
if (walDir.toString().startsWith(rootDir.toString() + "/")) {
throw new IllegalStateException("Illegal WAL directory specified. " +
"WAL directories are not permitted to be under the root directory if set.");
@@ -1343,6 +1343,7 @@ public abstract class FSUtils {
super(fs, HConstants.HBASE_NON_TABLE_DIRS);
}
+ @Override
protected boolean isValidName(final String name) {
if (!super.isValidName(name))
return false;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index e5e4b5a..066f2b3 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -574,10 +574,12 @@ public class HBaseFsck extends Configured implements Closeable {
errors.print("Number of regions: " + status.getRegionsCount());
Set<RegionState> rits = status.getRegionsInTransition();
- errors.print("Number of regions in transition: " + rits.size());
- if (details) {
- for (RegionState state: rits) {
- errors.print(" " + state.toDescriptiveString());
+ if (rits != null) {
+ errors.print("Number of regions in transition: " + rits.size());
+ if (details) {
+ for (RegionState state: rits) {
+ errors.print(" " + state.toDescriptiveString());
+ }
}
}
@@ -3798,7 +3800,7 @@ public class HBaseFsck extends Configured implements Closeable {
@Override
public int hashCode() {
int hash = Arrays.hashCode(getRegionName());
- hash ^= getRegionId();
+ hash = (int) (hash ^ getRegionId());
hash ^= Arrays.hashCode(getStartKey());
hash ^= Arrays.hashCode(getEndKey());
hash ^= Boolean.valueOf(isOffline()).hashCode();
@@ -3806,7 +3808,7 @@ public class HBaseFsck extends Configured implements Closeable {
if (regionServer != null) {
hash ^= regionServer.hashCode();
}
- hash ^= modTime;
+ hash = (int) (hash ^ modTime);
return hash;
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/util/IdReadWriteLock.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/IdReadWriteLock.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/IdReadWriteLock.java
index 98ce80d..f55f8cf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/IdReadWriteLock.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/IdReadWriteLock.java
@@ -80,6 +80,9 @@ public class IdReadWriteLock {
}
@VisibleForTesting
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(
+ value="JLM_JSR166_UTILCONCURRENT_MONITORENTER",
+ justification="Synchronization on rwlock is intentional")
public void waitForWaiters(long id, int numWaiters) throws InterruptedException {
for (ReentrantReadWriteLock readWriteLock;;) {
readWriteLock = lockPool.get(id);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
index 0739e91..a05d7cf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JSONBean.java
@@ -16,12 +16,15 @@
*/
package org.apache.hadoop.hbase.util;
+import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.IOException;
+import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Array;
+import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.Set;
@@ -371,7 +374,8 @@ public class JSONBean {
* @throws MalformedObjectNameException
*/
public static void dumpAllBeans() throws IOException, MalformedObjectNameException {
- try (PrintWriter writer = new PrintWriter(System.out)) {
+ try (PrintWriter writer = new PrintWriter(new BufferedWriter(
+ new OutputStreamWriter(System.out, StandardCharsets.UTF_8)))) {
JSONBean dumper = new JSONBean();
try (JSONBean.Writer jsonBeanWriter = dumper.open(writer)) {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java
index d0f01f8..89a1c56 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java
@@ -1086,6 +1086,8 @@ public class RegionSplitter {
}
@Override
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NP_NULL_ON_SOME_PATH",
+ justification="Preconditions checks insure we are not going to dereference a null value")
public byte[][] split(int numRegions) {
Preconditions.checkArgument(
Bytes.compareTo(lastRowBytes, firstRowBytes) > 0,
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java
index 3fa38b9..53a9681 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java
@@ -18,9 +18,6 @@
*/
package org.apache.hadoop.hbase.wal;
-import java.io.Closeable;
-import java.io.DataInput;
-import java.io.DataOutput;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -382,7 +379,7 @@ public class DefaultWALProvider implements WALProvider {
ProtobufLogWriter.class, Writer.class);
Writer writer = null;
try {
- writer = logWriterClass.newInstance();
+ writer = logWriterClass.getDeclaredConstructor().newInstance();
writer.init(fs, path, conf, overwritable);
return writer;
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WAL.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WAL.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WAL.java
index 413cbaa..cc2f42a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WAL.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WAL.java
@@ -99,6 +99,7 @@ public interface WAL extends Closeable {
* underlying resources after this call; i.e. filesystem based WALs can archive or
* delete files.
*/
+ @Override
void close() throws IOException;
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java
index 5452742..f5723a7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java
@@ -79,7 +79,8 @@ public class WALFactory {
filesystem(DefaultWALProvider.class),
multiwal(RegionGroupingProvider.class);
- Class<? extends WALProvider> clazz;
+ final Class<? extends WALProvider> clazz;
+
Providers(Class<? extends WALProvider> clazz) {
this.clazz = clazz;
}
@@ -142,17 +143,13 @@ public class WALFactory {
List<WALActionsListener> listeners, String providerId) throws IOException {
LOG.info("Instantiating WALProvider of type " + clazz);
try {
- final WALProvider result = clazz.newInstance();
+ final WALProvider result = clazz.getDeclaredConstructor().newInstance();
result.init(this, conf, listeners, providerId);
return result;
- } catch (InstantiationException exception) {
- LOG.error("couldn't set up WALProvider, the configured class is " + clazz);
- LOG.debug("Exception details for failure to load WALProvider.", exception);
- throw new IOException("couldn't set up WALProvider", exception);
- } catch (IllegalAccessException exception) {
+ } catch (Exception e) {
LOG.error("couldn't set up WALProvider, the configured class is " + clazz);
- LOG.debug("Exception details for failure to load WALProvider.", exception);
- throw new IOException("couldn't set up WALProvider", exception);
+ LOG.debug("Exception details for failure to load WALProvider.", e);
+ throw new IOException("couldn't set up WALProvider", e);
}
}
@@ -299,7 +296,7 @@ public class WALFactory {
try {
if (lrClass != ProtobufLogReader.class) {
// User is overriding the WAL reader, let them.
- reader = lrClass.newInstance();
+ reader = lrClass.getDeclaredConstructor().newInstance();
reader.init(fs, path, conf, null);
return reader;
} else {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALKey.java
----------------------------------------------------------------------
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 5cc7567..4eb79b3 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
@@ -476,8 +476,8 @@ public class WALKey implements SequenceId, Comparable<WALKey> {
@Override
public int hashCode() {
int result = Bytes.hashCode(this.encodedRegionName);
- result ^= this.logSeqNum;
- result ^= this.writeTime;
+ result = (int) (result ^ this.logSeqNum);
+ result = (int) (result ^ this.writeTime);
return result;
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
index 005e948..7c74649 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java
@@ -132,6 +132,8 @@ import com.google.protobuf.TextFormat;
* region to replay on startup. Delete the old log files when finished.
*/
@InterfaceAudience.Private
+@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="JLM_JSR166_UTILCONCURRENT_MONITORENTER",
+ justification="Synchronization on concurrent map is intended")
public class WALSplitter {
private static final Log LOG = LogFactory.getLog(WALSplitter.class);
@@ -1145,7 +1147,7 @@ public class WALSplitter {
protected PipelineController controller;
protected EntryBuffers entryBuffers;
- protected Map<byte[], SinkWriter> writers = Collections
+ protected final Map<byte[], SinkWriter> writers = Collections
.synchronizedMap(new TreeMap<byte[], SinkWriter>(Bytes.BYTES_COMPARATOR));;
protected final Map<byte[], Long> regionMaximumEditLogSeqNum = Collections
@@ -1710,21 +1712,21 @@ public class WALSplitter {
private long waitRegionOnlineTimeOut;
private final Set<String> recoveredRegions = Collections.synchronizedSet(new HashSet<String>());
- private final Map<String, RegionServerWriter> writers =
+ private final Map<String, RegionServerWriter> rsWriters =
new ConcurrentHashMap<String, RegionServerWriter>();
// online encoded region name -> region location map
private final Map<String, HRegionLocation> onlineRegions =
new ConcurrentHashMap<String, HRegionLocation>();
- private Map<TableName, HConnection> tableNameToHConnectionMap = Collections
+ private final Map<TableName, HConnection> tableNameToHConnectionMap = Collections
.synchronizedMap(new TreeMap<TableName, HConnection>());
/**
* Map key -> value layout
* <servername>:<table name> -> Queue<Row>
*/
- private Map<String, List<Pair<HRegionLocation, Entry>>> serverToBufferQueueMap =
+ private final Map<String, List<Pair<HRegionLocation, Entry>>> serverToBufferQueueMap =
new ConcurrentHashMap<String, List<Pair<HRegionLocation, Entry>>>();
- private List<Throwable> thrown = new ArrayList<Throwable>();
+ private final List<Throwable> thrown = new ArrayList<Throwable>();
// The following sink is used in distrubitedLogReplay mode for entries of regions in a disabling
// table. It's a limitation of distributedLogReplay. Because log replay needs a region is
@@ -2124,7 +2126,7 @@ public class WALSplitter {
@Override
int getNumOpenWriters() {
- return this.writers.size() + this.logRecoveredEditsOutputSink.getNumOpenWriters();
+ return this.rsWriters.size() + this.logRecoveredEditsOutputSink.getNumOpenWriters();
}
private List<IOException> closeRegionServerWriters() throws IOException {
@@ -2146,8 +2148,8 @@ public class WALSplitter {
}
}
} finally {
- synchronized (writers) {
- for (Map.Entry<String, RegionServerWriter> entry : writers.entrySet()) {
+ synchronized (rsWriters) {
+ for (Map.Entry<String, RegionServerWriter> entry : rsWriters.entrySet()) {
String locationKey = entry.getKey();
RegionServerWriter tmpW = entry.getValue();
try {
@@ -2182,8 +2184,8 @@ public class WALSplitter {
@Override
public Map<byte[], Long> getOutputCounts() {
TreeMap<byte[], Long> ret = new TreeMap<byte[], Long>(Bytes.BYTES_COMPARATOR);
- synchronized (writers) {
- for (Map.Entry<String, RegionServerWriter> entry : writers.entrySet()) {
+ synchronized (rsWriters) {
+ for (Map.Entry<String, RegionServerWriter> entry : rsWriters.entrySet()) {
ret.put(Bytes.toBytes(entry.getKey()), entry.getValue().editsWritten);
}
}
@@ -2201,7 +2203,7 @@ public class WALSplitter {
* @return null if this region shouldn't output any logs
*/
private RegionServerWriter getRegionServerWriter(String loc) throws IOException {
- RegionServerWriter ret = writers.get(loc);
+ RegionServerWriter ret = rsWriters.get(loc);
if (ret != null) {
return ret;
}
@@ -2212,11 +2214,11 @@ public class WALSplitter {
}
HConnection hconn = getConnectionByTableName(tableName);
- synchronized (writers) {
- ret = writers.get(loc);
+ synchronized (rsWriters) {
+ ret = rsWriters.get(loc);
if (ret == null) {
ret = new RegionServerWriter(conf, tableName, hconn);
- writers.put(loc, ret);
+ rsWriters.put(loc, ret);
}
}
return ret;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
index 6cd5a28..4fbce90 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.java
@@ -28,6 +28,7 @@ import java.io.Reader;
import java.net.BindException;
import java.net.InetSocketAddress;
import java.net.Socket;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@@ -405,7 +406,7 @@ public class MiniZooKeeperCluster {
Socket sock = new Socket("localhost", port);
try {
OutputStream outstream = sock.getOutputStream();
- outstream.write("stat".getBytes());
+ outstream.write("stat".getBytes(StandardCharsets.UTF_8));
outstream.flush();
} finally {
sock.close();
@@ -435,10 +436,10 @@ public class MiniZooKeeperCluster {
BufferedReader reader = null;
try {
OutputStream outstream = sock.getOutputStream();
- outstream.write("stat".getBytes());
+ outstream.write("stat".getBytes(StandardCharsets.UTF_8));
outstream.flush();
- Reader isr = new InputStreamReader(sock.getInputStream());
+ Reader isr = new InputStreamReader(sock.getInputStream(), StandardCharsets.UTF_8);
reader = new BufferedReader(isr);
String line = reader.readLine();
if (line != null && line.startsWith("Zookeeper version:")) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
index 1d2f394..0fe60e7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/RegionServerTracker.java
@@ -51,7 +51,7 @@ import org.apache.zookeeper.KeeperException;
@InterfaceAudience.Private
public class RegionServerTracker extends ZooKeeperListener {
private static final Log LOG = LogFactory.getLog(RegionServerTracker.class);
- private NavigableMap<ServerName, RegionServerInfo> regionServers =
+ private final NavigableMap<ServerName, RegionServerInfo> regionServers =
new TreeMap<ServerName, RegionServerInfo>();
private ServerManager serverManager;
private MasterServices server;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
index dceed8e..ad7996b 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
@@ -112,30 +112,32 @@
<th>Shared Storefile Size</th>
<th>Archived Storefile Size</th>
</tr>
- <%for (SnapshotDescription snapshotDesc : snapshots) { %>
- <tr>
- <td><a href="/snapshot.jsp?name=<%= snapshotDesc.getName() %>">
- <%= snapshotDesc.getName() %></a></td>
- <%
- TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable());
- SnapshotInfo.SnapshotStats stats = SnapshotInfo.getSnapshotStats(master.getConfiguration(),
- snapshotDesc, filesMap);
- totalUnsharedArchivedSize += stats.getNonSharedArchivedStoreFilesSize();
- tableExists = admin.tableExists(snapshotTable);
- %>
- <td>
- <% if (tableExists) { %>
- <a href="/table.jsp?name=<%= snapshotTable.getNameAsString() %>">
- <%= snapshotTable.getNameAsString() %></a>
- <% } else { %>
- <%= snapshotTable.getNameAsString() %>
+ <% if (snapshots != null) { %>
+ <% for (SnapshotDescription snapshotDesc : snapshots) { %>
+ <tr>
+ <td><a href="/snapshot.jsp?name=<%= snapshotDesc.getName() %>">
+ <%= snapshotDesc.getName() %></a></td>
+ <%
+ TableName snapshotTable = TableName.valueOf(snapshotDesc.getTable());
+ SnapshotInfo.SnapshotStats stats = SnapshotInfo.getSnapshotStats(master.getConfiguration(),
+ snapshotDesc, filesMap);
+ totalUnsharedArchivedSize += stats.getNonSharedArchivedStoreFilesSize();
+ tableExists = admin.tableExists(snapshotTable);
+ %>
+ <td>
+ <% if (tableExists) { %>
+ <a href="/table.jsp?name=<%= snapshotTable.getNameAsString() %>">
+ <%= snapshotTable.getNameAsString() %></a>
+ <% } else { %>
+ <%= snapshotTable.getNameAsString() %>
+ <% } %>
+ </td>
+ <td><%= new Date(snapshotDesc.getCreationTime()) %></td>
+ <td><%= StringUtils.humanReadableInt(stats.getSharedStoreFilesSize()) %></td>
+ <td><%= StringUtils.humanReadableInt(stats.getArchivedStoreFileSize()) %>
+ (<%= StringUtils.humanReadableInt(stats.getNonSharedArchivedStoreFilesSize()) %>)</td>
+ </tr>
<% } %>
- </td>
- <td><%= new Date(snapshotDesc.getCreationTime()) %></td>
- <td><%= StringUtils.humanReadableInt(stats.getSharedStoreFilesSize()) %></td>
- <td><%= StringUtils.humanReadableInt(stats.getArchivedStoreFileSize()) %>
- (<%= StringUtils.humanReadableInt(stats.getNonSharedArchivedStoreFilesSize()) %>)</td>
- </tr>
<% } %>
<p><%= snapshots.size() %> snapshot(s) in set.</p>
<p>Total Storefile Size: <%= StringUtils.humanReadableInt(totalSize) %></p>
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
index 19e66e1..86a5a76 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
@@ -22,6 +22,7 @@
import="com.google.protobuf.ByteString"
import="java.net.URLEncoder"
import="java.util.ArrayList"
+ import="java.util.HashMap"
import="java.util.TreeMap"
import="java.util.List"
import="java.util.LinkedHashMap"
@@ -252,8 +253,14 @@ if ( fqtn != null ) {
}
%>
<tr>
+ <%
+ String metaLocationString = metaLocation != null ?
+ StringEscapeUtils.escapeHtml(metaLocation.getHostname().toString())
+ + ":" + master.getRegionServerInfoPort(metaLocation) :
+ "(null)";
+ %>
<td><%= escapeXml(meta.getRegionNameAsString()) %></td>
- <td><a href="<%= url %>"><%= StringEscapeUtils.escapeHtml(metaLocation.getHostname().toString()) + ":" + master.getRegionServerInfoPort(metaLocation) %></a></td>
+ <td><a href="<%= url %>"><%= metaLocationString %></a></td>
<td><%= readReq%></td>
<td><%= writeReq%></td>
<td><%= fileSize%></td>
@@ -355,8 +362,11 @@ if ( fqtn != null ) {
String urlRegionServer = null;
Map<ServerName, Integer> regDistribution = new TreeMap<ServerName, Integer>();
Map<ServerName, Integer> primaryRegDistribution = new TreeMap<ServerName, Integer>();
- Map<HRegionInfo, ServerName> regions = table.getRegionLocations();
Map<HRegionInfo, RegionLoad> regionsToLoad = new LinkedHashMap<HRegionInfo, RegionLoad>();
+ Map<HRegionInfo, ServerName> regions = table.getRegionLocations();
+ if (regions == null) {
+ regions = new HashMap<HRegionInfo, ServerName>();
+ }
for (Map.Entry<HRegionInfo, ServerName> hriEntry : regions.entrySet()) {
HRegionInfo regionInfo = hriEntry.getKey();
ServerName addr = hriEntry.getValue();
@@ -811,7 +821,7 @@ var showWhole='<%= showWhole %>';
if(showWhole=='true')document.getElementById("showWhole").checked=true;
function reloadAsSort(){
- var url="?name="+'<%= URLEncoder.encode(fqtn) %>';
+ var url="?name="+'<%= fqtn != null ? URLEncoder.encode(fqtn) : "" %>';
if(document.getElementById("sel").selectedIndex>0){
url=url+"&sort="+document.getElementById("sel").value;
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
index cd35ad1..04d54a5 100644
--- a/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
@@ -37,7 +37,7 @@
Configuration conf = rs.getConfiguration();
Region region = rs.getFromOnlineRegions(regionName);
- String displayName = region.getRegionInfo().getRegionNameAsString();
+ String displayName = region != null ? region.getRegionInfo().getRegionNameAsString() : "(null)";
%>
<!--[if IE]>
<!DOCTYPE html>
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java
index 6981c8a..ee8596f 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/GenericTestUtils.java
@@ -142,6 +142,7 @@ public abstract class GenericTestUtils {
Layout layout = Logger.getRootLogger().getAppender("stdout").getLayout();
WriterAppender wa = new WriterAppender(layout, sw);
logger.addAppender(wa);
+ appender = wa;
}
public String getOutput() {
@@ -150,7 +151,6 @@ public abstract class GenericTestUtils {
public void stopCapturing() {
logger.removeAppender(appender);
-
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
index 71bc9ad..7230b41 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java
@@ -384,7 +384,7 @@ public class PerformanceEvaluation extends Configured implements Tool {
if (opts.replicas != DEFAULT_OPTS.replicas) {
desc.setRegionReplication(opts.replicas);
}
- if (opts.splitPolicy != DEFAULT_OPTS.splitPolicy) {
+ if (!opts.splitPolicy.equals(DEFAULT_OPTS.splitPolicy)) {
desc.setRegionSplitPolicyClassName(opts.splitPolicy);
}
return desc;
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/test/java/org/apache/hadoop/hbase/TestIOFencing.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestIOFencing.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestIOFencing.java
index a656325..889da99 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestIOFencing.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestIOFencing.java
@@ -24,6 +24,7 @@ import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -89,9 +90,9 @@ public class TestIOFencing {
}
public abstract static class CompactionBlockerRegion extends HRegion {
- volatile int compactCount = 0;
- volatile CountDownLatch compactionsBlocked = new CountDownLatch(0);
- volatile CountDownLatch compactionsWaiting = new CountDownLatch(0);
+ AtomicInteger compactCount = new AtomicInteger(0);
+ CountDownLatch compactionsBlocked = new CountDownLatch(0);
+ CountDownLatch compactionsWaiting = new CountDownLatch(0);
@SuppressWarnings("deprecation")
public CompactionBlockerRegion(Path tableDir, WAL log,
@@ -125,7 +126,7 @@ public class TestIOFencing {
try {
return super.compact(compaction, store, throughputController);
} finally {
- compactCount++;
+ compactCount.incrementAndGet();
}
}
@@ -135,7 +136,7 @@ public class TestIOFencing {
try {
return super.compact(compaction, store, throughputController, user);
} finally {
- compactCount++;
+ compactCount.incrementAndGet();
}
}
@@ -325,7 +326,7 @@ public class TestIOFencing {
}
LOG.info("Allowing compaction to proceed");
compactingRegion.allowCompactions();
- while (compactingRegion.compactCount == 0) {
+ while (compactingRegion.compactCount.get() == 0) {
Thread.sleep(1000);
}
// The server we killed stays up until the compaction that was started before it was killed completes. In logs
@@ -337,7 +338,7 @@ public class TestIOFencing {
TEST_UTIL.loadNumericRows(table, FAMILY, FIRST_BATCH_COUNT, FIRST_BATCH_COUNT + SECOND_BATCH_COUNT);
((HBaseAdmin)admin).majorCompact(TABLE_NAME.getName());
startWaitTime = System.currentTimeMillis();
- while (newRegion.compactCount == 0) {
+ while (newRegion.compactCount.get() == 0) {
Thread.sleep(1000);
assertTrue("New region never compacted", System.currentTimeMillis() - startWaitTime < 180000);
}
@@ -346,7 +347,9 @@ public class TestIOFencing {
if (compactingRegion != null) {
compactingRegion.allowCompactions();
}
- admin.close();
+ if (admin != null) {
+ admin.close();
+ }
TEST_UTIL.shutdownMiniCluster();
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
index 43171c3..279b304 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin1.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.client;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -220,6 +221,7 @@ public class TestAdmin1 {
} catch (IOException e) {
exception = e;
}
+ assertNotNull(exception);
assertTrue("found=" + exception.getClass().getName(),
exception instanceof InvalidFamilyOperationException);
@@ -229,6 +231,7 @@ public class TestAdmin1 {
} catch (IOException e) {
exception = e;
}
+ assertNotNull(exception);
assertTrue("found=" + exception.getClass().getName(),
exception instanceof InvalidFamilyOperationException);
} finally {
@@ -610,32 +613,6 @@ public class TestAdmin1 {
"hbase.online.schema.update.enable", true);
}
- /**
- * Listens for when an event is done in Master.
- */
- static class DoneListener implements EventHandler.EventHandlerListener {
- private final AtomicBoolean done;
-
- DoneListener(final AtomicBoolean done) {
- super();
- this.done = done;
- }
-
- @Override
- public void afterProcess(EventHandler event) {
- this.done.set(true);
- synchronized (this.done) {
- // Wake anyone waiting on this value to change.
- this.done.notifyAll();
- }
- }
-
- @Override
- public void beforeProcess(EventHandler event) {
- // continue
- }
- }
-
@SuppressWarnings("deprecation")
protected void verifyRoundRobinDistribution(HTable ht, int expectedRegions) throws IOException {
int numRS = ht.getConnection().getCurrentNrHRS();
@@ -1129,6 +1106,7 @@ public class TestAdmin1 {
} catch (IOException e) {
e.printStackTrace();
}
+ assertNotNull(regions);
assertEquals(2, regions.size());
Set<HRegionInfo> hRegionInfos = regions.keySet();
HRegionInfo[] r = hRegionInfos.toArray(new HRegionInfo[hRegionInfos.size()]);
http://git-wip-us.apache.org/repos/asf/hbase/blob/108ea30e/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin2.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin2.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin2.java
index 72f41a76..bfd4200 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin2.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin2.java
@@ -772,7 +772,7 @@ public class TestAdmin2 {
@Test(timeout = 300000)
public void testListProcedures() throws Exception {
ProcedureInfo[] procList = admin.listProcedures();
- assertTrue(procList.length >= 0);
+ assertTrue(procList.length > 0);
}
@Test(timeout = 30000)