You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2014/04/24 00:58:52 UTC
svn commit: r1589538 - in
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus:
./ ConsensusProvider.java ConsensusProviderFactory.java
ZkConsensusProvider.java
Author: stack
Date: Wed Apr 23 22:58:51 2014
New Revision: 1589538
URL: http://svn.apache.org/r1589538
Log:
HBASE-11025 Infrastructure for pluggable consensus service (Mikhail Antonov)
Added:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProvider.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProviderFactory.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ZkConsensusProvider.java
Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProvider.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProvider.java?rev=1589538&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProvider.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProvider.java Wed Apr 23 22:58:51 2014
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.consensus;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.Server;
+
+/**
+ * Implementations of this interface will keep and return to clients
+ * implementations of classes providing API to execute
+ * coordinated operations.
+ *
+ * For each coarse-grained area of operations there will be a separate
+ * interface with implementation, providing API for relevant operations
+ * requiring coordination.
+ *
+ * Property hbase.consensus.provider.class in hbase-site.xml controls
+ * which provider to use.
+ */
+@InterfaceAudience.Private
+public interface ConsensusProvider {
+
+ /**
+ * Initialize consensus service.
+ * @param server server instance to run within.
+ */
+ void initialize(Server server);
+
+ /**
+ * Starts consensus service.
+ */
+ void start();
+
+ /**
+ * Stop consensus provider.
+ */
+ void stop();
+
+ /**
+ * @return instance of Server consensus runs within
+ */
+ Server getServer();
+}
Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProviderFactory.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProviderFactory.java?rev=1589538&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProviderFactory.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ConsensusProviderFactory.java Wed Apr 23 22:58:51 2014
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.consensus;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.util.ReflectionUtils;
+
+/**
+ * Creates instance of {@link org.apache.hadoop.hbase.consensus.ConsensusProvider}
+ * based on configuration.
+ */
+@InterfaceAudience.Private
+public class ConsensusProviderFactory {
+
+ /**
+ * Creates consensus provider from the given configuration.
+ * @param conf Configuration
+ * @return A {@link org.apache.hadoop.hbase.consensus.ConsensusProvider}
+ */
+ public static ConsensusProvider getConsensusProvider(Configuration conf) {
+ Class<? extends ConsensusProvider> consensusKlass =
+ conf.getClass(HConstants.HBASE_CONSENSUS_PROVIDER_CLASS, ZkConsensusProvider.class,
+ ConsensusProvider.class);
+ return ReflectionUtils.newInstance(consensusKlass, conf);
+ }
+}
Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ZkConsensusProvider.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ZkConsensusProvider.java?rev=1589538&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ZkConsensusProvider.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/consensus/ZkConsensusProvider.java Wed Apr 23 22:58:51 2014
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.consensus;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+
+/**
+ * ZooKeeper-based implementation of {@link ConsensusProvider}.
+ */
+@InterfaceAudience.Private
+public class ZkConsensusProvider implements ConsensusProvider {
+ private Server server;
+ private ZooKeeperWatcher watcher;
+
+ @Override
+ public void initialize(Server server) {
+ this.server = server;
+ this.watcher = server.getZooKeeper();
+ }
+
+ @Override
+ public void start() {
+ }
+
+ @Override
+ public void stop() {
+ }
+
+ @Override
+ public Server getServer() {
+ return server;
+ }
+}