1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.replication;
20
21 import java.util.ArrayList;
22 import java.util.NavigableMap;
23
24 import org.apache.hadoop.hbase.classification.InterfaceAudience;
25 import org.apache.hadoop.hbase.Cell;
26 import org.apache.hadoop.hbase.HConstants;
27 import org.apache.hadoop.hbase.wal.WAL.Entry;
28
29
30
31
32 @InterfaceAudience.Private
33 public class ScopeWALEntryFilter implements WALEntryFilter {
34
35 @Override
36 public Entry filter(Entry entry) {
37 NavigableMap<byte[], Integer> scopes = entry.getKey().getScopes();
38 if (scopes == null || scopes.isEmpty()) {
39 return null;
40 }
41 ArrayList<Cell> cells = entry.getEdit().getCells();
42 int size = cells.size();
43 for (int i = size - 1; i >= 0; i--) {
44 Cell cell = cells.get(i);
45
46
47 if (!scopes.containsKey(cell.getFamily())
48 || scopes.get(cell.getFamily()) == HConstants.REPLICATION_SCOPE_LOCAL) {
49 cells.remove(i);
50 }
51 }
52 if (cells.size() < size / 2) {
53 cells.trimToSize();
54 }
55 return entry;
56 }
57
58 }