1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package org.apache.hadoop.hbase;
19
20 import org.apache.hadoop.hbase.classification.InterfaceAudience;
21
22 /**
23 * Implementations of this interface will keep and return to clients
24 * implementations of classes providing API to execute
25 * coordinated operations. This interface is client-side, so it does NOT
26 * include methods to retrieve the particular interface implementations.
27 *
28 * For each coarse-grained area of operations there will be a separate
29 * interface with implementation, providing API for relevant operations
30 * requiring coordination.
31 *
32 * Property hbase.coordinated.state.manager.class in hbase-site.xml controls
33 * which provider to use.
34 */
35 @InterfaceAudience.Private
36 public interface CoordinatedStateManager {
37
38 /**
39 * Initialize coordinated state management service.
40 * @param server server instance to run within.
41 */
42 void initialize(Server server);
43
44 /**
45 * Starts service.
46 */
47 void start();
48
49 /**
50 * Stops service.
51 */
52 void stop();
53
54 /**
55 * @return instance of Server coordinated state manager runs within
56 */
57 Server getServer();
58
59 /**
60 * Returns implementation of TableStateManager.
61 * @throws InterruptedException if operation is interrupted
62 * @throws CoordinatedStateException if error happens in underlying coordination mechanism
63 */
64 TableStateManager getTableStateManager() throws InterruptedException,
65 CoordinatedStateException;
66 }