HDFS-16233. Do not use exception handler to implement copy-on-write for EnumCounters. (#3468)
(cherry picked from commit 87632bbacf064e9b07564ba66ed1fbb1d42290d1) (cherry picked from commit bb08de559a36fd56c7d4023c6dcac66da3fbacc5) (cherry picked from commit 978ec57445f4178b31a6bfc383c6be032692c288) (cherry picked from commit cd7c34f9b4005d27886f73e58bef88e706fcccf9)
This commit is contained in:
parent
008bd8afc3
commit
6d11f7ae8c
@ -23,7 +23,6 @@
|
|||||||
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
|
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
|
||||||
import org.apache.hadoop.hdfs.util.ConstEnumCounters;
|
import org.apache.hadoop.hdfs.util.ConstEnumCounters;
|
||||||
import org.apache.hadoop.hdfs.util.EnumCounters;
|
import org.apache.hadoop.hdfs.util.EnumCounters;
|
||||||
import org.apache.hadoop.hdfs.util.ConstEnumCounters.ConstEnumException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,14 +55,10 @@ public class QuotaCounts {
|
|||||||
*/
|
*/
|
||||||
static <T extends Enum<T>> EnumCounters<T> modify(EnumCounters<T> counter,
|
static <T extends Enum<T>> EnumCounters<T> modify(EnumCounters<T> counter,
|
||||||
ModifyAction<T> action) {
|
ModifyAction<T> action) {
|
||||||
try {
|
if (counter instanceof ConstEnumCounters) {
|
||||||
action.accept(counter);
|
|
||||||
} catch (ConstEnumException cee) {
|
|
||||||
// We don't call clone here because ConstEnumCounters.clone() will return
|
|
||||||
// an object of class ConstEnumCounters. We want EnumCounters.
|
|
||||||
counter = counter.deepCopyEnumCounter();
|
counter = counter.deepCopyEnumCounter();
|
||||||
action.accept(counter);
|
|
||||||
}
|
}
|
||||||
|
action.accept(counter);
|
||||||
return counter;
|
return counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user