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:48 UTC
[20/30] hbase git commit: HBASE-19239 Fix findbugs and error-prone
issues
HBASE-19239 Fix findbugs and error-prone issues
Fixes for hbase-metrics
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/357b3dbc
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/357b3dbc
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/357b3dbc
Branch: refs/heads/branch-1
Commit: 357b3dbc3e3c289f2ac0ff6c6210cd226681dcb4
Parents: 24feb1a
Author: Andrew Purtell <ap...@apache.org>
Authored: Wed Nov 15 18:47:45 2017 -0800
Committer: Andrew Purtell <ap...@apache.org>
Committed: Fri Nov 17 17:12:36 2017 -0800
----------------------------------------------------------------------
.../hadoop/hbase/metrics/impl/HistogramImpl.java | 2 ++
.../hbase/metrics/impl/MetricRegistriesImpl.java | 5 +++++
.../hadoop/hbase/metrics/impl/RefCountingMap.java | 16 +++++++++-------
3 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/357b3dbc/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
----------------------------------------------------------------------
diff --git a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
index b52caf8..17a179d 100644
--- a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
+++ b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
@@ -67,6 +67,7 @@ public class HistogramImpl implements Histogram {
histogram.add(value, 1);
}
+ @Override
public long getCount() {
return counter.getCount();
}
@@ -75,6 +76,7 @@ public class HistogramImpl implements Histogram {
return this.histogram.getMax();
}
+ @Override
public Snapshot snapshot() {
return histogram.snapshotAndReset();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/357b3dbc/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/MetricRegistriesImpl.java
----------------------------------------------------------------------
diff --git a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/MetricRegistriesImpl.java b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/MetricRegistriesImpl.java
index 3788bd1..2966429 100644
--- a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/MetricRegistriesImpl.java
+++ b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/MetricRegistriesImpl.java
@@ -60,22 +60,27 @@ public class MetricRegistriesImpl extends MetricRegistries {
});
}
+ @Override
public boolean remove(MetricRegistryInfo key) {
return registries.remove(key) == null;
}
+ @Override
public Optional<MetricRegistry> get(MetricRegistryInfo info) {
return Optional.fromNullable(registries.get(info));
}
+ @Override
public Collection<MetricRegistry> getMetricRegistries() {
return Collections.unmodifiableCollection(registries.values());
}
+ @Override
public void clear() {
registries.clear();
}
+ @Override
public Set<MetricRegistryInfo> getMetricRegistryInfos() {
return Collections.unmodifiableSet(registries.keySet());
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/357b3dbc/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/RefCountingMap.java
----------------------------------------------------------------------
diff --git a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/RefCountingMap.java b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/RefCountingMap.java
index 889b026..25c7634 100644
--- a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/RefCountingMap.java
+++ b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/RefCountingMap.java
@@ -24,7 +24,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
@@ -42,22 +42,24 @@ class RefCountingMap<K, V> {
private ConcurrentHashMap<K, Payload<V>> map = new ConcurrentHashMap<>();
private static class Payload<V> {
V v;
- volatile int refCount;
+ final AtomicInteger refCount = new AtomicInteger(1); // create with ref count = 1
Payload(V v) {
this.v = v;
- this.refCount = 1; // create with ref count = 1
}
}
+ @edu.umd.cs.findbugs.annotations.SuppressWarnings(
+ value="AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION",
+ justification="We use the object monitor to serialize operations on the concurrent map")
V put(K key, Supplier<V> supplier) {
- synchronized (map) {
+ synchronized (this) {
Payload<V> oldValue = map.get(key);
if (oldValue == null) {
oldValue = new Payload<V>(supplier.get());
map.put(key, oldValue);
return oldValue.v;
}
- oldValue.refCount++;
+ oldValue.refCount.incrementAndGet();
return oldValue.v;
}
}
@@ -73,10 +75,10 @@ class RefCountingMap<K, V> {
* @return the value associated with the specified key or null if key is removed from map.
*/
V remove(K key) {
- synchronized (map) {
+ synchronized (this) {
Payload<V> oldValue = map.get(key);
if (oldValue != null) {
- if (--oldValue.refCount == 0) {
+ if (oldValue.refCount.decrementAndGet() == 0) {
map.remove(key);
return null;
}