1 /*
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19 package org.apache.hadoop.hbase.replication;
20
21 import java.util.List;
22 import java.util.Map;
23
24 import org.apache.hadoop.hbase.classification.InterfaceAudience;
25 import org.apache.zookeeper.KeeperException;
26
27 /**
28 * This provides an interface for clients of replication to view replication queues. These queues
29 * keep track of the sources(WALs/HFile references) that still need to be replicated to remote
30 * clusters.
31 */
32 @InterfaceAudience.Private
33 public interface ReplicationQueuesClient {
34
35 /**
36 * Initialize the replication queue client interface.
37 */
38 public void init() throws ReplicationException;
39
40 /**
41 * Get a list of all region servers that have outstanding replication queues. These servers could
42 * be alive, dead or from a previous run of the cluster.
43 * @return a list of server names
44 * @throws KeeperException zookeeper exception
45 */
46 List<String> getListOfReplicators() throws KeeperException;
47
48 /**
49 * Get a list of all WALs in the given queue on the given region server.
50 * @param serverName the server name of the region server that owns the queue
51 * @param queueId a String that identifies the queue
52 * @return a list of WALs, null if this region server is dead and has no outstanding queues
53 * @throws KeeperException zookeeper exception
54 */
55 List<String> getLogsInQueue(String serverName, String queueId) throws KeeperException;
56
57 /**
58 * Get a list of all queues for the specified region server.
59 * @param serverName the server name of the region server that owns the set of queues
60 * @return a list of queueIds, null if this region server is not a replicator.
61 */
62 List<String> getAllQueues(String serverName) throws KeeperException;
63
64 /**
65 * Get the cversion of replication rs node. This can be used as optimistic locking to get a
66 * consistent snapshot of the replication queues.
67 * @return cversion of replication rs node
68 */
69 int getQueuesZNodeCversion() throws KeeperException;
70
71 /**
72 * Get a map of cversion of all replicator nodes. This can be used as optimistic locking
73 * to get a consistent snapshot of the replication queues.
74 * @return a map of replicator to cversion
75 */
76 Map<String, Integer> getReplicatorsZNodeCversion() throws KeeperException;
77
78 /**
79 * Get the change version number of replication hfile references node. This can be used as
80 * optimistic locking to get a consistent snapshot of the replication queues of hfile references.
81 * @return change version number of hfile references node
82 */
83 int getHFileRefsNodeChangeVersion() throws KeeperException;
84
85 /**
86 * Get list of all peers from hfile reference queue.
87 * @return a list of peer ids
88 * @throws KeeperException zookeeper exception
89 */
90 List<String> getAllPeersFromHFileRefsQueue() throws KeeperException;
91
92 /**
93 * Get a list of all hfile references in the given peer.
94 * @param peerId a String that identifies the peer
95 * @return a list of hfile references, null if not found any
96 * @throws KeeperException zookeeper exception
97 */
98 List<String> getReplicableHFiles(String peerId) throws KeeperException;
99 }