1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.hadoop.hbase.quotas.policies;
18
19 import java.util.concurrent.atomic.AtomicBoolean;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.apache.hadoop.hbase.quotas.SpaceViolationPolicy;
24 import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;
25
26
27
28
29
30 public class NoWritesCompactionsViolationPolicyEnforcement
31 extends NoWritesViolationPolicyEnforcement {
32 private static final Log LOG = LogFactory.getLog(
33 NoWritesCompactionsViolationPolicyEnforcement.class);
34
35 private AtomicBoolean disableCompactions = new AtomicBoolean(false);
36
37 @Override
38 public synchronized void enable() {
39 boolean ret = disableCompactions.compareAndSet(false, true);
40 if (!ret && LOG.isTraceEnabled()) {
41 LOG.trace("Compactions were already disabled upon enabling the policy");
42 }
43 }
44
45 @Override
46 public synchronized void disable() {
47 boolean ret = disableCompactions.compareAndSet(true, false);
48 if (!ret && LOG.isTraceEnabled()) {
49 LOG.trace("Compactions were already enabled upon disabling the policy");
50 }
51 }
52
53 @Override
54 public String getPolicyName() {
55 return SpaceViolationPolicy.NO_WRITES_COMPACTIONS.name();
56 }
57
58 @Override
59 public boolean areCompactionsDisabled() {
60 return disableCompactions.get();
61 }
62 }