http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolClientSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolClientSideTranslatorPB.java b/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolClientSideTranslatorPB.java deleted file mode 100644 index f93bd0a..0000000 --- a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolClientSideTranslatorPB.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * 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.raft.hadooprpc.client; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.conf.Configuration; -import org.apache.raft.client.impl.ClientProtoUtils; -import org.apache.raft.hadooprpc.Proxy; -import org.apache.raft.protocol.RaftClientProtocol; -import org.apache.raft.protocol.RaftClientReply; -import org.apache.raft.protocol.RaftClientRequest; -import org.apache.raft.protocol.SetConfigurationRequest; -import org.apache.raft.shaded.com.google.protobuf.ServiceException; -import org.apache.raft.shaded.proto.RaftProtos.RaftClientReplyProto; -import org.apache.raft.shaded.proto.RaftProtos.RaftClientRequestProto; -import org.apache.raft.shaded.proto.RaftProtos.SetConfigurationRequestProto; -import org.apache.raft.util.ProtoUtils; - -import java.io.IOException; - [email protected] -public class RaftClientProtocolClientSideTranslatorPB - extends Proxy<RaftClientProtocolPB> - implements RaftClientProtocol { - - public RaftClientProtocolClientSideTranslatorPB( - String addressStr, Configuration conf) throws IOException { - super(RaftClientProtocolPB.class, addressStr, conf); - } - - @Override - public RaftClientReply submitClientRequest(RaftClientRequest request) - throws IOException { - final RaftClientRequestProto p = ClientProtoUtils.toRaftClientRequestProto(request); - try { - final RaftClientReplyProto reply = getProtocol().submitClientRequest(null, p); - return ClientProtoUtils.toRaftClientReply(reply); - } catch (ServiceException se) { - throw ProtoUtils.toIOException(se); - } - } - - @Override - public RaftClientReply setConfiguration(SetConfigurationRequest request) - throws IOException { - final SetConfigurationRequestProto p - = ClientProtoUtils.toSetConfigurationRequestProto(request); - try { - final RaftClientReplyProto reply = getProtocol().setConfiguration(null, p); - return ClientProtoUtils.toRaftClientReply(reply); - } catch (ServiceException se) { - throw ProtoUtils.toIOException(se); - } - } -}
http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolPB.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolPB.java b/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolPB.java deleted file mode 100644 index ca2443a..0000000 --- a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolPB.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.raft.hadooprpc.client; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.classification.InterfaceStability; -import org.apache.hadoop.ipc.ProtocolInfo; -import org.apache.hadoop.security.KerberosInfo; -import org.apache.raft.hadooprpc.HadoopConstants; -import org.apache.raft.shaded.proto.hadoop.HadoopProtos.RaftClientProtocolService; - [email protected] [email protected] -@KerberosInfo( - serverPrincipal = HadoopConstants.RAFT_SERVER_KERBEROS_PRINCIPAL_KEY, - clientPrincipal = HadoopConstants.RAFT_CLIENT_KERBEROS_PRINCIPAL_KEY) -@ProtocolInfo( - protocolName = HadoopConstants.RAFT_CLIENT_PROTOCOL_NAME, - protocolVersion = 1) -public interface RaftClientProtocolPB extends - RaftClientProtocolService.BlockingInterface { -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolServerSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolServerSideTranslatorPB.java b/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolServerSideTranslatorPB.java deleted file mode 100644 index 4802fd6..0000000 --- a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/client/RaftClientProtocolServerSideTranslatorPB.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * 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.raft.hadooprpc.client; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.raft.client.impl.ClientProtoUtils; -import org.apache.raft.protocol.RaftClientProtocol; -import org.apache.raft.protocol.RaftClientReply; -import org.apache.raft.protocol.RaftClientRequest; -import org.apache.raft.protocol.SetConfigurationRequest; -import org.apache.raft.shaded.com.google.protobuf.RpcController; -import org.apache.raft.shaded.com.google.protobuf.ServiceException; -import org.apache.raft.shaded.proto.RaftProtos.RaftClientReplyProto; -import org.apache.raft.shaded.proto.RaftProtos.RaftClientRequestProto; -import org.apache.raft.shaded.proto.RaftProtos.SetConfigurationRequestProto; - -import java.io.IOException; - [email protected] -public class RaftClientProtocolServerSideTranslatorPB - implements RaftClientProtocolPB { - private final RaftClientProtocol impl; - - public RaftClientProtocolServerSideTranslatorPB(RaftClientProtocol impl) { - this.impl = impl; - } - - @Override - public RaftClientReplyProto submitClientRequest( - RpcController unused, RaftClientRequestProto proto) - throws ServiceException { - final RaftClientRequest request = ClientProtoUtils.toRaftClientRequest(proto); - try { - final RaftClientReply reply = impl.submitClientRequest(request); - return ClientProtoUtils.toRaftClientReplyProto(reply); - } catch(IOException ioe) { - throw new ServiceException(ioe); - } - } - - @Override - public RaftClientReplyProto setConfiguration( - RpcController unused, SetConfigurationRequestProto proto) - throws ServiceException { - final SetConfigurationRequest request; - try { - request = ClientProtoUtils.toSetConfigurationRequest(proto); - final RaftClientReply reply = impl.setConfiguration(request); - return ClientProtoUtils.toRaftClientReplyProto(reply); - } catch(IOException ioe) { - throw new ServiceException(ioe); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/HadoopRpcService.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/HadoopRpcService.java b/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/HadoopRpcService.java deleted file mode 100644 index 24e1d2c..0000000 --- a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/HadoopRpcService.java +++ /dev/null @@ -1,178 +0,0 @@ -/** - * 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.raft.hadooprpc.server; - -import com.google.common.base.Preconditions; -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.ipc.ProtobufRpcEngineShaded; -import org.apache.hadoop.ipc.RPC; -import org.apache.raft.hadooprpc.Proxy; -import org.apache.raft.hadooprpc.client.RaftClientProtocolPB; -import org.apache.raft.hadooprpc.client.RaftClientProtocolServerSideTranslatorPB; -import org.apache.raft.protocol.RaftClientProtocol; -import org.apache.raft.protocol.RaftPeer; -import org.apache.raft.server.RaftServer; -import org.apache.raft.server.RaftServerConfigKeys; -import org.apache.raft.server.RaftServerRpc; -import org.apache.raft.server.protocol.RaftServerProtocol; -import org.apache.raft.shaded.com.google.protobuf.BlockingService; -import org.apache.raft.shaded.com.google.protobuf.ServiceException; -import org.apache.raft.shaded.proto.RaftProtos.*; -import org.apache.raft.shaded.proto.hadoop.HadoopProtos.RaftClientProtocolService; -import org.apache.raft.shaded.proto.hadoop.HadoopProtos.RaftServerProtocolService; -import org.apache.raft.util.CodeInjectionForTesting; -import org.apache.raft.util.PeerProxyMap; -import org.apache.raft.util.ProtoUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.InetSocketAddress; - -/** Server side Hadoop RPC service. */ -public class HadoopRpcService implements RaftServerRpc { - public static final Logger LOG = LoggerFactory.getLogger(HadoopRpcService.class); - static final String CLASS_NAME = HadoopRpcService.class.getSimpleName(); - public static final String SEND_SERVER_REQUEST = CLASS_NAME + ".sendServerRequest"; - - private final String id; - private final RPC.Server ipcServer; - private final InetSocketAddress ipcServerAddress; - - private final PeerProxyMap<Proxy<RaftServerProtocolPB>> proxies; - - public HadoopRpcService(RaftServer server, final Configuration conf) - throws IOException { - this.proxies = new PeerProxyMap<>( - p -> new Proxy(RaftServerProtocolPB.class, p.getAddress(), conf)); - this.id = server.getId(); - this.ipcServer = newRpcServer(server, conf); - this.ipcServerAddress = ipcServer.getListenerAddress(); - - addRaftClientProtocol(server, conf); - - LOG.info(getClass().getSimpleName() + " created RPC.Server at " - + ipcServerAddress); - } - - @Override - public InetSocketAddress getInetSocketAddress() { - return ipcServerAddress; - } - - private RPC.Server newRpcServer(RaftServerProtocol serverProtocol, final Configuration conf) - throws IOException { - final RaftServerConfigKeys.Get get = new RaftServerConfigKeys.Get() { - @Override - protected int getInt(String key, int defaultValue) { - return conf.getInt(key, defaultValue); - } - - @Override - protected String getTrimmed(String key, String defaultValue) { - return conf.getTrimmed(key, defaultValue); - } - }; - - final int handlerCount = get.ipc().handlers(); - final InetSocketAddress address = get.ipc().address(); - - final BlockingService service - = RaftServerProtocolService.newReflectiveBlockingService( - new RaftServerProtocolServerSideTranslatorPB(serverProtocol)); - RPC.setProtocolEngine(conf, RaftServerProtocolPB.class, ProtobufRpcEngineShaded.class); - return new RPC.Builder(conf) - .setProtocol(RaftServerProtocolPB.class) - .setInstance(service) - .setBindAddress(address.getHostName()) - .setPort(address.getPort()) - .setNumHandlers(handlerCount) - .setVerbose(false) - .build(); - } - - private void addRaftClientProtocol(RaftClientProtocol clientProtocol, Configuration conf) { - final Class<?> protocol = RaftClientProtocolPB.class; - RPC.setProtocolEngine(conf,protocol, ProtobufRpcEngineShaded.class); - - final BlockingService service - = RaftClientProtocolService.newReflectiveBlockingService( - new RaftClientProtocolServerSideTranslatorPB(clientProtocol)); - ipcServer.addProtocol(RPC.RpcKind.RPC_PROTOCOL_BUFFER, protocol, service); - } - - @Override - public void start() { - ipcServer.start(); - } - - @Override - public void close() { - ipcServer.stop(); - } - - @Override - public AppendEntriesReplyProto appendEntries( - AppendEntriesRequestProto request) throws IOException { - Preconditions.checkArgument(id.equals(request.getServerRequest().getRequestorId())); - CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request); - - final RaftServerProtocolPB proxy = proxies.getProxy( - request.getServerRequest().getReplyId()).getProtocol(); - try { - return proxy.appendEntries(null, request); - } catch (ServiceException se) { - throw ProtoUtils.toIOException(se); - } - } - - @Override - public InstallSnapshotReplyProto installSnapshot( - InstallSnapshotRequestProto request) throws IOException { - Preconditions.checkArgument(id.equals(request.getServerRequest().getRequestorId())); - CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request); - - final RaftServerProtocolPB proxy = proxies.getProxy( - request.getServerRequest().getReplyId()).getProtocol(); - try { - return proxy.installSnapshot(null, request); - } catch (ServiceException se) { - throw ProtoUtils.toIOException(se); - } - } - - @Override - public RequestVoteReplyProto requestVote( - RequestVoteRequestProto request) throws IOException { - Preconditions.checkArgument(id.equals(request.getServerRequest().getRequestorId())); - CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request); - - final RaftServerProtocolPB proxy = proxies.getProxy( - request.getServerRequest().getReplyId()).getProtocol(); - try { - return proxy.requestVote(null, request); - } catch (ServiceException se) { - throw ProtoUtils.toIOException(se); - } - } - - @Override - public void addPeers(Iterable<RaftPeer> peers) { - proxies.addPeers(peers); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolPB.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolPB.java b/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolPB.java deleted file mode 100644 index 27d3bba..0000000 --- a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolPB.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.raft.hadooprpc.server; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.classification.InterfaceStability; -import org.apache.hadoop.ipc.ProtocolInfo; -import org.apache.hadoop.security.KerberosInfo; -import org.apache.raft.hadooprpc.HadoopConstants; -import org.apache.raft.shaded.proto.hadoop.HadoopProtos.RaftServerProtocolService; - [email protected] [email protected] -@KerberosInfo( - serverPrincipal = HadoopConstants.RAFT_SERVER_KERBEROS_PRINCIPAL_KEY, - clientPrincipal = HadoopConstants.RAFT_SERVER_KERBEROS_PRINCIPAL_KEY) -@ProtocolInfo( - protocolName = HadoopConstants.RAFT_SERVER_PROTOCOL_NAME, - protocolVersion = 1) -public interface RaftServerProtocolPB extends - RaftServerProtocolService.BlockingInterface { -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java b/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java deleted file mode 100644 index c598eb3..0000000 --- a/raft-hadoop/src/main/java/org/apache/raft/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * 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.raft.hadooprpc.server; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.raft.server.protocol.RaftServerProtocol; -import org.apache.raft.shaded.com.google.protobuf.RpcController; -import org.apache.raft.shaded.com.google.protobuf.ServiceException; -import org.apache.raft.shaded.proto.RaftProtos.*; - -import java.io.IOException; - [email protected] -public class RaftServerProtocolServerSideTranslatorPB - implements RaftServerProtocolPB { - private final RaftServerProtocol impl; - - public RaftServerProtocolServerSideTranslatorPB(RaftServerProtocol impl) { - this.impl = impl; - } - - @Override - public RequestVoteReplyProto requestVote( - RpcController unused, RequestVoteRequestProto request) - throws ServiceException { - try { - return impl.requestVote(request); - } catch(IOException ioe) { - throw new ServiceException(ioe); - } - } - - @Override - public AppendEntriesReplyProto appendEntries( - RpcController unused, AppendEntriesRequestProto request) - throws ServiceException { - try { - return impl.appendEntries(request); - } catch(IOException ioe) { - throw new ServiceException(ioe); - } - } - - @Override - public InstallSnapshotReplyProto installSnapshot(RpcController controller, - InstallSnapshotRequestProto request) throws ServiceException { - try { - return impl.installSnapshot(request); - } catch(IOException ioe) { - throw new ServiceException(ioe); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/MiniRaftClusterWithHadoopRpc.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/MiniRaftClusterWithHadoopRpc.java b/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/MiniRaftClusterWithHadoopRpc.java deleted file mode 100644 index 87b4d1c..0000000 --- a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/MiniRaftClusterWithHadoopRpc.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * 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.raft.hadooprpc; - -import com.google.common.base.Preconditions; -import org.apache.hadoop.conf.Configuration; -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.RaftTestUtil; -import org.apache.raft.client.RaftClientRequestSender; -import org.apache.raft.conf.RaftProperties; -import org.apache.raft.hadooprpc.client.HadoopClientRequestSender; -import org.apache.raft.hadooprpc.server.HadoopRpcService; -import org.apache.raft.protocol.RaftPeer; -import org.apache.raft.server.impl.DelayLocalExecutionInjection; -import org.apache.raft.server.impl.RaftServerImpl; -import org.apache.raft.server.RaftServerConfigKeys; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -public class MiniRaftClusterWithHadoopRpc extends MiniRaftCluster.RpcBase { - static final Logger LOG = LoggerFactory.getLogger(MiniRaftClusterWithHadoopRpc.class); - - public static final Factory<MiniRaftClusterWithHadoopRpc> FACTORY - = new Factory<MiniRaftClusterWithHadoopRpc>() { - @Override - public MiniRaftClusterWithHadoopRpc newCluster( - String[] ids, RaftProperties prop, boolean formatted) throws IOException { - final Configuration conf = new Configuration(); - conf.set(RaftServerConfigKeys.Ipc.ADDRESS_KEY, "0.0.0.0:0"); - return new MiniRaftClusterWithHadoopRpc(ids, prop, conf, formatted); - } - }; - - public static final DelayLocalExecutionInjection sendServerRequest = - new DelayLocalExecutionInjection(HadoopRpcService.SEND_SERVER_REQUEST); - - private final Configuration hadoopConf; - - public MiniRaftClusterWithHadoopRpc(int numServers, RaftProperties properties, - Configuration conf) throws IOException { - this(generateIds(numServers, 0), properties, conf, true); - } - - public MiniRaftClusterWithHadoopRpc(String[] ids, RaftProperties properties, - Configuration hadoopConf, boolean formatted) throws IOException { - super(ids, properties, formatted); - this.hadoopConf = hadoopConf; - - init(initRpcServices(getServers(), hadoopConf)); - } - - private static Map<RaftPeer, HadoopRpcService> initRpcServices( - Collection<RaftServerImpl> servers, Configuration hadoopConf) throws IOException { - final Map<RaftPeer, HadoopRpcService> peerRpcs = new HashMap<>(); - - for(RaftServerImpl s : servers) { - final HadoopRpcService rpc = new HadoopRpcService(s, hadoopConf); - peerRpcs.put(new RaftPeer(s.getId(), rpc.getInetSocketAddress()), rpc); - } - return peerRpcs; - } - - @Override - protected RaftServerImpl setPeerRpc(RaftPeer peer) throws IOException { - Configuration hconf = new Configuration(hadoopConf); - hconf.set(RaftServerConfigKeys.Ipc.ADDRESS_KEY, peer.getAddress()); - - RaftServerImpl server = servers.get(peer.getId()); - final HadoopRpcService rpc = new HadoopRpcService(server, hconf); - Preconditions.checkState( - rpc.getInetSocketAddress().toString().contains(peer.getAddress()), - "address in the raft conf: %s, address in rpc server: %s", - peer.getAddress(), rpc.getInetSocketAddress().toString()); - server.setServerRpc(rpc); - return server; - } - - @Override - public Collection<RaftPeer> addNewPeers(Collection<RaftPeer> newPeers, - Collection<RaftServerImpl> newServers, boolean startService) - throws IOException { - return addNewPeers(initRpcServices(newServers, hadoopConf), - newServers, startService); - } - - @Override - public RaftClientRequestSender getRaftClientRequestSender() { - return new HadoopClientRequestSender(getPeers(), hadoopConf); - } - - @Override - public void blockQueueAndSetDelay(String leaderId, int delayMs) - throws InterruptedException { - RaftTestUtil.blockQueueAndSetDelay(getServers(), sendServerRequest, - leaderId, delayMs, getMaxTimeout()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestNotLeaderExceptionWithHadoopRpc.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestNotLeaderExceptionWithHadoopRpc.java b/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestNotLeaderExceptionWithHadoopRpc.java deleted file mode 100644 index 6ff13e4..0000000 --- a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestNotLeaderExceptionWithHadoopRpc.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.raft.hadooprpc; - -import org.apache.hadoop.conf.Configuration; -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.RaftNotLeaderExceptionBaseTest; -import org.apache.raft.conf.RaftProperties; -import org.apache.raft.server.RaftServerConfigKeys; - -import java.io.IOException; - -public class TestNotLeaderExceptionWithHadoopRpc extends RaftNotLeaderExceptionBaseTest { - @Override - public MiniRaftCluster initCluster() throws IOException { - String[] s = MiniRaftCluster.generateIds(NUM_PEERS, 0); - final Configuration conf = new Configuration(); - conf.set(RaftServerConfigKeys.Ipc.ADDRESS_KEY, "0.0.0.0:0"); - RaftProperties prop = new RaftProperties(); - return new MiniRaftClusterWithHadoopRpc(s, prop, conf, true); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftReconfigurationWithHadoopRpc.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftReconfigurationWithHadoopRpc.java b/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftReconfigurationWithHadoopRpc.java deleted file mode 100644 index 0116280..0000000 --- a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftReconfigurationWithHadoopRpc.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * 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.raft.hadooprpc; - -import org.apache.hadoop.conf.Configuration; -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.server.RaftServerConfigKeys; -import org.apache.raft.server.impl.RaftReconfigurationBaseTest; - -import java.io.IOException; - -import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.IPC_CLIENT_CONNECT_MAX_RETRIES_KEY; -import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.IPC_CLIENT_CONNECT_TIMEOUT_KEY; - -public class TestRaftReconfigurationWithHadoopRpc - extends RaftReconfigurationBaseTest { - @Override - public MiniRaftCluster getCluster(int peerNum) throws IOException { - final Configuration hadoopConf = new Configuration(); - hadoopConf.setInt(IPC_CLIENT_CONNECT_TIMEOUT_KEY, 1000); - hadoopConf.setInt(IPC_CLIENT_CONNECT_MAX_RETRIES_KEY, 0); - hadoopConf.set(RaftServerConfigKeys.Ipc.ADDRESS_KEY, "0.0.0.0:0"); - return new MiniRaftClusterWithHadoopRpc(peerNum, prop, hadoopConf); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftSnapshotWithHadoopRpc.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftSnapshotWithHadoopRpc.java b/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftSnapshotWithHadoopRpc.java deleted file mode 100644 index 43dc8e4..0000000 --- a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftSnapshotWithHadoopRpc.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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.raft.hadooprpc; - -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.conf.RaftProperties; -import org.apache.raft.statemachine.RaftSnapshotBaseTest; - -import java.io.IOException; - -public class TestRaftSnapshotWithHadoopRpc extends RaftSnapshotBaseTest { - @Override - public MiniRaftCluster initCluster(int numServer, RaftProperties prop) - throws IOException { - return MiniRaftClusterWithHadoopRpc.FACTORY.newCluster(numServer, prop, true); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftWithHadoopRpc.java ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftWithHadoopRpc.java b/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftWithHadoopRpc.java deleted file mode 100644 index 4848196..0000000 --- a/raft-hadoop/src/test/java/org/apache/raft/hadooprpc/TestRaftWithHadoopRpc.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * 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.raft.hadooprpc; - -import org.apache.hadoop.conf.Configuration; -import org.apache.log4j.Level; -import org.apache.raft.RaftBasicTests; -import org.apache.raft.client.RaftClient; -import org.apache.raft.server.impl.BlockRequestHandlingInjection; -import org.apache.raft.server.impl.RaftServerImpl; -import org.apache.raft.server.RaftServerConfigKeys; -import org.apache.raft.util.RaftUtils; -import org.junit.Test; - -import java.io.IOException; - -import static org.apache.raft.hadooprpc.MiniRaftClusterWithHadoopRpc.sendServerRequest; - -public class TestRaftWithHadoopRpc extends RaftBasicTests { - static { - RaftUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG); - RaftUtils.setLogLevel(RaftClient.LOG, Level.DEBUG); - RaftUtils.setLogLevel(MiniRaftClusterWithHadoopRpc.LOG, Level.DEBUG); - } - - private final MiniRaftClusterWithHadoopRpc cluster; - - public TestRaftWithHadoopRpc() throws IOException { - Configuration conf = new Configuration(); - conf.set(RaftServerConfigKeys.Ipc.ADDRESS_KEY, "0.0.0.0:0"); - cluster = new MiniRaftClusterWithHadoopRpc(NUM_SERVERS, getProperties(), conf); - } - - @Override - public MiniRaftClusterWithHadoopRpc getCluster() { - return cluster; - } - - @Override - @Test - public void testEnforceLeader() throws Exception { - super.testEnforceLeader(); - - sendServerRequest.clear(); - BlockRequestHandlingInjection.getInstance().unblockAll(); - } - - @Override - @Test - public void testWithLoad() throws Exception { - super.testWithLoad(); - BlockRequestHandlingInjection.getInstance().unblockAll(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-hadoop/src/test/resources/log4j.properties ---------------------------------------------------------------------- diff --git a/raft-hadoop/src/test/resources/log4j.properties b/raft-hadoop/src/test/resources/log4j.properties deleted file mode 100644 index ced0687..0000000 --- a/raft-hadoop/src/test/resources/log4j.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Licensed 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. -# log4j configuration used during build and unit tests - -log4j.rootLogger=info,stdout -log4j.threshold=ALL -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/pom.xml ---------------------------------------------------------------------- diff --git a/raft-netty/pom.xml b/raft-netty/pom.xml deleted file mode 100644 index 41494a0..0000000 --- a/raft-netty/pom.xml +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed 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. See accompanying LICENSE file. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <artifactId>raft-project-dist</artifactId> - <groupId>com.hortonworks.raft</groupId> - <version>1.0-SNAPSHOT</version> - <relativePath>../raft-project-dist</relativePath> - </parent> - - <artifactId>raft-netty</artifactId> - <name>Raft Netty Support</name> - - <dependencies> - <dependency> - <artifactId>raft-proto-shaded</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>provided</scope> - </dependency> - - <dependency> - <artifactId>raft-common</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>provided</scope> - </dependency> - <dependency> - <artifactId>raft-common</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>test</scope> - <type>test-jar</type> - </dependency> - - <dependency> - <artifactId>raft-client</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>provided</scope> - </dependency> - <dependency> - <artifactId>raft-client</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>test</scope> - <type>test-jar</type> - </dependency> - - <dependency> - <artifactId>raft-server</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>provided</scope> - </dependency> - <dependency> - <artifactId>raft-server</artifactId> - <groupId>com.hortonworks.raft</groupId> - <scope>test</scope> - <type>test-jar</type> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - <scope>compile</scope> - </dependency> - </dependencies> -</project> http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/main/java/org/apache/raft/netty/NettyClient.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/main/java/org/apache/raft/netty/NettyClient.java b/raft-netty/src/main/java/org/apache/raft/netty/NettyClient.java deleted file mode 100644 index acb44ef..0000000 --- a/raft-netty/src/main/java/org/apache/raft/netty/NettyClient.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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.raft.netty; - -import com.google.common.base.Preconditions; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; -import org.apache.raft.util.LifeCycle; -import org.apache.raft.util.NetUtils; - -import java.io.Closeable; -import java.net.InetSocketAddress; - -public class NettyClient implements Closeable { - private final LifeCycle lifeCycle = new LifeCycle(getClass().getSimpleName()); - - private Channel channel; - - /** Connects to the given server address. */ - public void connect(String serverAddress, EventLoopGroup group, - ChannelInitializer<SocketChannel> initializer) - throws InterruptedException { - final InetSocketAddress address = NetUtils.newInetSocketAddress(serverAddress); - Preconditions.checkNotNull(address, - "Failed to create InetSocketAddress from %s.", serverAddress); - - lifeCycle.startAndTransition( - () -> channel = new Bootstrap() - .group(group) - .channel(NioSocketChannel.class) - .handler(new LoggingHandler(LogLevel.INFO)) - .handler(initializer) - .connect(address) - .sync() - .channel(), - InterruptedException.class); - } - - @Override - public void close() { - lifeCycle.checkStateAndClose(() -> { - channel.close().syncUninterruptibly(); - }); - } - - public ChannelFuture writeAndFlush(Object msg) { - lifeCycle.assertCurrentState(LifeCycle.State.RUNNING); - return channel.writeAndFlush(msg); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/main/java/org/apache/raft/netty/NettyRpcProxy.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/main/java/org/apache/raft/netty/NettyRpcProxy.java b/raft-netty/src/main/java/org/apache/raft/netty/NettyRpcProxy.java deleted file mode 100644 index 2d5756a..0000000 --- a/raft-netty/src/main/java/org/apache/raft/netty/NettyRpcProxy.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * 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.raft.netty; - -import io.netty.channel.*; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import org.apache.raft.protocol.RaftPeer; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufDecoder; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufEncoder; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender; -import org.apache.raft.shaded.proto.RaftProtos.RaftRpcRequestProto; -import org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyServerReplyProto; -import org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyServerRequestProto; -import org.apache.raft.util.PeerProxyMap; -import org.apache.raft.util.ProtoUtils; -import org.apache.raft.util.RaftUtils; - -import java.io.Closeable; -import java.io.IOException; -import java.util.LinkedList; -import java.util.Queue; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; - -import static org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyServerReplyProto.RaftNettyServerReplyCase.EXCEPTIONREPLY; - - -public class NettyRpcProxy implements Closeable { - public static class PeerMap extends PeerProxyMap<NettyRpcProxy> { - private final EventLoopGroup group = new NioEventLoopGroup(); - - @Override - public NettyRpcProxy createProxyImpl(RaftPeer peer) - throws IOException { - try { - return new NettyRpcProxy(peer, group); - } catch (InterruptedException e) { - throw RaftUtils.toInterruptedIOException("Failed connecting to " + peer, e); - } - } - - @Override - public void close() { - super.close(); - group.shutdownGracefully(); - } - } - - public static long getSeqNum(RaftNettyServerReplyProto proto) { - switch (proto.getRaftNettyServerReplyCase()) { - case REQUESTVOTEREPLY: - return proto.getRequestVoteReply().getServerReply().getSeqNum(); - case APPENDENTRIESREPLY: - return proto.getAppendEntriesReply().getServerReply().getSeqNum(); - case INSTALLSNAPSHOTREPLY: - return proto.getInstallSnapshotReply().getServerReply().getSeqNum(); - case RAFTCLIENTREPLY: - return proto.getRaftClientReply().getRpcReply().getSeqNum(); - case EXCEPTIONREPLY: - return proto.getExceptionReply().getRpcReply().getSeqNum(); - case RAFTNETTYSERVERREPLY_NOT_SET: - throw new IllegalArgumentException("Reply case not set in proto: " - + proto.getRaftNettyServerReplyCase()); - default: - throw new UnsupportedOperationException("Reply case not supported: " - + proto.getRaftNettyServerReplyCase()); - } - } - - - class Connection implements Closeable { - private final NettyClient client = new NettyClient(); - private final Queue<CompletableFuture<RaftNettyServerReplyProto>> replies - = new LinkedList<>(); - - Connection(EventLoopGroup group) throws InterruptedException { - final ChannelInboundHandler inboundHandler - = new SimpleChannelInboundHandler<RaftNettyServerReplyProto>() { - @Override - protected void channelRead0(ChannelHandlerContext ctx, - RaftNettyServerReplyProto proto) { - final CompletableFuture<RaftNettyServerReplyProto> future = pollReply(); - if (future == null) { - throw new IllegalStateException("Request #" + getSeqNum(proto) - + " not found"); - } - if (proto.getRaftNettyServerReplyCase() == EXCEPTIONREPLY) { - final Object ioe = ProtoUtils.toObject(proto.getExceptionReply().getException()); - future.completeExceptionally((IOException)ioe); - } else { - future.complete(proto); - } - } - }; - final ChannelInitializer<SocketChannel> initializer - = new ChannelInitializer<SocketChannel>() { - @Override - protected void initChannel(SocketChannel ch) throws Exception { - final ChannelPipeline p = ch.pipeline(); - - p.addLast(new ProtobufVarint32FrameDecoder()); - p.addLast(new ProtobufDecoder(RaftNettyServerReplyProto.getDefaultInstance())); - p.addLast(new ProtobufVarint32LengthFieldPrepender()); - p.addLast(new ProtobufEncoder()); - - p.addLast(inboundHandler); - } - }; - - client.connect(peer.getAddress(), group, initializer); - } - - synchronized ChannelFuture offer(RaftNettyServerRequestProto request, - CompletableFuture<RaftNettyServerReplyProto> reply) { - replies.offer(reply); - return client.writeAndFlush(request); - } - - synchronized CompletableFuture<RaftNettyServerReplyProto> pollReply() { - return replies.poll(); - } - - @Override - public synchronized void close() { - client.close(); - if (!replies.isEmpty()) { - final IOException e = new IOException("Connection to " + peer + " is closed."); - replies.stream().forEach(f -> f.completeExceptionally(e)); - replies.clear(); - } - } - } - - private final RaftPeer peer; - private final Connection connection; - - public NettyRpcProxy(RaftPeer peer, EventLoopGroup group) throws InterruptedException { - this.peer = peer; - this.connection = new Connection(group); - } - - @Override - public void close() { - connection.close(); - } - - public RaftNettyServerReplyProto send( - RaftRpcRequestProto request, RaftNettyServerRequestProto proto) - throws IOException { - final CompletableFuture<RaftNettyServerReplyProto> reply = new CompletableFuture<>(); - final ChannelFuture channelFuture = connection.offer(proto, reply); - - try { - channelFuture.sync(); - return reply.get(); - } catch (InterruptedException e) { - throw RaftUtils.toInterruptedIOException(ProtoUtils.toString(request) - + " sending from " + peer + " is interrupted.", e); - } catch (ExecutionException e) { - throw RaftUtils.toIOException(e); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/main/java/org/apache/raft/netty/client/NettyClientRequestSender.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/main/java/org/apache/raft/netty/client/NettyClientRequestSender.java b/raft-netty/src/main/java/org/apache/raft/netty/client/NettyClientRequestSender.java deleted file mode 100644 index ba58b75..0000000 --- a/raft-netty/src/main/java/org/apache/raft/netty/client/NettyClientRequestSender.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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.raft.netty.client; - -import org.apache.raft.client.impl.ClientProtoUtils; -import org.apache.raft.client.RaftClientRequestSender; -import org.apache.raft.netty.NettyRpcProxy; -import org.apache.raft.protocol.RaftClientReply; -import org.apache.raft.protocol.RaftClientRequest; -import org.apache.raft.protocol.RaftPeer; -import org.apache.raft.protocol.SetConfigurationRequest; -import org.apache.raft.shaded.proto.RaftProtos.RaftClientRequestProto; -import org.apache.raft.shaded.proto.RaftProtos.RaftRpcRequestProto; -import org.apache.raft.shaded.proto.RaftProtos.SetConfigurationRequestProto; -import org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyServerRequestProto; - -import java.io.IOException; - -public class NettyClientRequestSender implements RaftClientRequestSender { - private final NettyRpcProxy.PeerMap proxies = new NettyRpcProxy.PeerMap(); - - public NettyClientRequestSender(Iterable<RaftPeer> servers) { - addServers(servers); - } - - @Override - public RaftClientReply sendRequest(RaftClientRequest request) throws IOException { - final String serverId = request.getReplierId(); - final NettyRpcProxy proxy = proxies.getProxy(serverId); - - final RaftNettyServerRequestProto.Builder b = RaftNettyServerRequestProto.newBuilder(); - final RaftRpcRequestProto rpcRequest; - if (request instanceof SetConfigurationRequest) { - final SetConfigurationRequestProto proto = ClientProtoUtils.toSetConfigurationRequestProto( - (SetConfigurationRequest)request); - b.setSetConfigurationRequest(proto); - rpcRequest = proto.getRpcRequest(); - } else { - final RaftClientRequestProto proto = ClientProtoUtils.toRaftClientRequestProto(request); - b.setRaftClientRequest(proto); - rpcRequest = proto.getRpcRequest(); - } - return ClientProtoUtils.toRaftClientReply( - proxy.send(rpcRequest, b.build()).getRaftClientReply()); - } - - @Override - public void addServers(Iterable<RaftPeer> servers) { - proxies.addPeers(servers); - } - - @Override - public void close() { - proxies.close(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/main/java/org/apache/raft/netty/server/NettyRpcService.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/main/java/org/apache/raft/netty/server/NettyRpcService.java b/raft-netty/src/main/java/org/apache/raft/netty/server/NettyRpcService.java deleted file mode 100644 index 50833fb..0000000 --- a/raft-netty/src/main/java/org/apache/raft/netty/server/NettyRpcService.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * 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.raft.netty.server; - -import com.google.common.base.Preconditions; -import io.netty.bootstrap.ServerBootstrap; -import io.netty.channel.*; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; -import org.apache.raft.client.impl.ClientProtoUtils; -import org.apache.raft.netty.NettyRpcProxy; -import org.apache.raft.protocol.RaftClientReply; -import org.apache.raft.protocol.RaftPeer; -import org.apache.raft.server.RaftServer; -import org.apache.raft.server.RaftServerRpc; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufDecoder; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufEncoder; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder; -import org.apache.raft.shaded.io.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender; -import org.apache.raft.shaded.proto.RaftProtos.*; -import org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyExceptionReplyProto; -import org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyServerReplyProto; -import org.apache.raft.shaded.proto.netty.NettyProtos.RaftNettyServerRequestProto; -import org.apache.raft.util.CodeInjectionForTesting; -import org.apache.raft.util.LifeCycle; -import org.apache.raft.util.ProtoUtils; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.nio.channels.ClosedChannelException; - -/** - * A netty server endpoint that acts as the communication layer. - */ -public final class NettyRpcService implements RaftServerRpc { - static final String CLASS_NAME = NettyRpcService.class.getSimpleName(); - public static final String SEND_SERVER_REQUEST = CLASS_NAME + ".sendServerRequest"; - - private final LifeCycle lifeCycle = new LifeCycle(getClass().getSimpleName()); - private final RaftServer server; - private final String id; - - private final EventLoopGroup bossGroup = new NioEventLoopGroup(); - private final EventLoopGroup workerGroup = new NioEventLoopGroup(); - private final ChannelFuture channelFuture; - - private final NettyRpcProxy.PeerMap proxies = new NettyRpcProxy.PeerMap(); - - @ChannelHandler.Sharable - class InboundHandler extends SimpleChannelInboundHandler<RaftNettyServerRequestProto> { - @Override - protected void channelRead0(ChannelHandlerContext ctx, RaftNettyServerRequestProto proto) { - final RaftNettyServerReplyProto reply = handle(proto); - ctx.writeAndFlush(reply); - } - } - - /** Constructs a netty server with the given port. */ - public NettyRpcService(int port, RaftServer server) { - this.server = server; - this.id = server.getId(); - - final ChannelInitializer<SocketChannel> initializer - = new ChannelInitializer<SocketChannel>() { - @Override - protected void initChannel(SocketChannel ch) throws Exception { - final ChannelPipeline p = ch.pipeline(); - - p.addLast(new ProtobufVarint32FrameDecoder()); - p.addLast(new ProtobufDecoder(RaftNettyServerRequestProto.getDefaultInstance())); - p.addLast(new ProtobufVarint32LengthFieldPrepender()); - p.addLast(new ProtobufEncoder()); - - p.addLast(new InboundHandler()); - } - }; - - channelFuture = new ServerBootstrap() - .group(bossGroup, workerGroup) - .channel(NioServerSocketChannel.class) - .handler(new LoggingHandler(LogLevel.INFO)) - .childHandler(initializer) - .bind(port); - } - - private Channel getChannel() { - return channelFuture.awaitUninterruptibly().channel(); - } - - @Override - public void start() { - lifeCycle.startAndTransition(() -> channelFuture.syncUninterruptibly()); - } - - @Override - public void close() { - lifeCycle.checkStateAndClose(() -> { - bossGroup.shutdownGracefully(); - workerGroup.shutdownGracefully(); - final ChannelFuture f = getChannel().close(); - proxies.close(); - f.syncUninterruptibly(); - }); - } - - @Override - public InetSocketAddress getInetSocketAddress() { - return (InetSocketAddress)getChannel().localAddress(); - } - - RaftNettyServerReplyProto handle(RaftNettyServerRequestProto proto) { - RaftRpcRequestProto rpcRequest = null; - try { - switch (proto.getRaftNettyServerRequestCase()) { - case REQUESTVOTEREQUEST: { - final RequestVoteRequestProto request = proto.getRequestVoteRequest(); - rpcRequest = request.getServerRequest(); - final RequestVoteReplyProto reply = server.requestVote(request); - return RaftNettyServerReplyProto.newBuilder() - .setRequestVoteReply(reply) - .build(); - } - case APPENDENTRIESREQUEST: { - final AppendEntriesRequestProto request = proto.getAppendEntriesRequest(); - rpcRequest = request.getServerRequest(); - final AppendEntriesReplyProto reply = server.appendEntries(request); - return RaftNettyServerReplyProto.newBuilder() - .setAppendEntriesReply(reply) - .build(); - } - case INSTALLSNAPSHOTREQUEST: { - final InstallSnapshotRequestProto request = proto.getInstallSnapshotRequest(); - rpcRequest = request.getServerRequest(); - final InstallSnapshotReplyProto reply = server.installSnapshot(request); - return RaftNettyServerReplyProto.newBuilder() - .setInstallSnapshotReply(reply) - .build(); - } - case RAFTCLIENTREQUEST: { - final RaftClientRequestProto request = proto.getRaftClientRequest(); - rpcRequest = request.getRpcRequest(); - final RaftClientReply reply = server.submitClientRequest( - ClientProtoUtils.toRaftClientRequest(request)); - return RaftNettyServerReplyProto.newBuilder() - .setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(reply)) - .build(); - } - case SETCONFIGURATIONREQUEST: { - final SetConfigurationRequestProto request = proto.getSetConfigurationRequest(); - rpcRequest = request.getRpcRequest(); - final RaftClientReply reply = server.setConfiguration( - ClientProtoUtils.toSetConfigurationRequest(request)); - return RaftNettyServerReplyProto.newBuilder() - .setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(reply)) - .build(); - } - case RAFTNETTYSERVERREQUEST_NOT_SET: - throw new IllegalArgumentException("Request case not set in proto: " - + proto.getRaftNettyServerRequestCase()); - default: - throw new UnsupportedOperationException("Request case not supported: " - + proto.getRaftNettyServerRequestCase()); - } - } catch (IOException ioe) { - Preconditions.checkNotNull(rpcRequest); - return toRaftNettyServerReplyProto(rpcRequest, ioe); - } - } - - private static RaftNettyServerReplyProto toRaftNettyServerReplyProto( - RaftRpcRequestProto request, IOException e) { - final RaftRpcReplyProto.Builder rpcReply = ClientProtoUtils.toRaftRpcReplyProtoBuilder( - request.getRequestorId(), - request.getReplyId(), - request.getSeqNum(), false); - final RaftNettyExceptionReplyProto.Builder ioe = RaftNettyExceptionReplyProto.newBuilder() - .setRpcReply(rpcReply) - .setException(ProtoUtils.toByteString(e)); - return RaftNettyServerReplyProto.newBuilder().setExceptionReply(ioe).build(); - } - - @Override - public RequestVoteReplyProto requestVote(RequestVoteRequestProto request) throws IOException { - Preconditions.checkArgument(id.equals(request.getServerRequest().getRequestorId())); - CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request); - - final RaftNettyServerRequestProto proto = RaftNettyServerRequestProto.newBuilder() - .setRequestVoteRequest(request) - .build(); - final RaftRpcRequestProto serverRequest = request.getServerRequest(); - return sendRaftNettyServerRequestProto(serverRequest, proto).getRequestVoteReply(); - } - - @Override - public AppendEntriesReplyProto appendEntries(AppendEntriesRequestProto request) throws IOException { - Preconditions.checkArgument(id.equals(request.getServerRequest().getRequestorId())); - CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request); - - final RaftNettyServerRequestProto proto = RaftNettyServerRequestProto.newBuilder() - .setAppendEntriesRequest(request) - .build(); - final RaftRpcRequestProto serverRequest = request.getServerRequest(); - return sendRaftNettyServerRequestProto(serverRequest, proto).getAppendEntriesReply(); - } - - @Override - public InstallSnapshotReplyProto installSnapshot(InstallSnapshotRequestProto request) throws IOException { - Preconditions.checkArgument(id.equals(request.getServerRequest().getRequestorId())); - CodeInjectionForTesting.execute(SEND_SERVER_REQUEST, id, null, request); - - final RaftNettyServerRequestProto proto = RaftNettyServerRequestProto.newBuilder() - .setInstallSnapshotRequest(request) - .build(); - final RaftRpcRequestProto serverRequest = request.getServerRequest(); - return sendRaftNettyServerRequestProto(serverRequest, proto).getInstallSnapshotReply(); - } - - private RaftNettyServerReplyProto sendRaftNettyServerRequestProto( - RaftRpcRequestProto request, RaftNettyServerRequestProto proto) - throws IOException { - final String id = request.getReplyId(); - final NettyRpcProxy p = proxies.getProxy(id); - try { - return p.send(request, proto); - } catch (ClosedChannelException cce) { - proxies.resetProxy(id); - throw cce; - } - } - - @Override - public void addPeers(Iterable<RaftPeer> peers) { - proxies.addPeers(peers); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/test/java/org/apache/raft/netty/MiniRaftClusterWithNetty.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/test/java/org/apache/raft/netty/MiniRaftClusterWithNetty.java b/raft-netty/src/test/java/org/apache/raft/netty/MiniRaftClusterWithNetty.java deleted file mode 100644 index 12cdf13..0000000 --- a/raft-netty/src/test/java/org/apache/raft/netty/MiniRaftClusterWithNetty.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * 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.raft.netty; - -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.RaftTestUtil; -import org.apache.raft.client.RaftClientRequestSender; -import org.apache.raft.conf.RaftProperties; -import org.apache.raft.netty.client.NettyClientRequestSender; -import org.apache.raft.netty.server.NettyRpcService; -import org.apache.raft.protocol.RaftPeer; -import org.apache.raft.server.impl.DelayLocalExecutionInjection; -import org.apache.raft.server.impl.RaftConfiguration; -import org.apache.raft.server.impl.RaftServerImpl; -import org.apache.raft.util.NetUtils; - -import java.io.IOException; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -public class MiniRaftClusterWithNetty extends MiniRaftCluster.RpcBase { - public static final Factory<MiniRaftClusterWithNetty> FACTORY - = new Factory<MiniRaftClusterWithNetty>() { - @Override - public MiniRaftClusterWithNetty newCluster( - String[] ids, RaftProperties prop, boolean formatted) { - return new MiniRaftClusterWithNetty(ids, prop, formatted); - } - }; - - public static final DelayLocalExecutionInjection sendServerRequest - = new DelayLocalExecutionInjection(NettyRpcService.SEND_SERVER_REQUEST); - - public MiniRaftClusterWithNetty(int numServers, RaftProperties properties) { - this(generateIds(numServers, 0), properties, true); - } - - public MiniRaftClusterWithNetty( - String[] ids, RaftProperties properties, boolean formatted) { - super(ids, properties, formatted); - init(initRpcServices(getServers(), getConf())); - } - - private static String getAddress(String id, RaftConfiguration conf) { - final RaftPeer peer = conf.getPeer(id); - if (peer != null) { - final String address = peer.getAddress(); - if (address != null) { - return address; - } - } - return "0.0.0.0:0"; - } - - private static NettyRpcService newNettyRpcService( - RaftServerImpl s, RaftConfiguration conf) { - final String address = getAddress(s.getId(), conf); - final int port = NetUtils.newInetSocketAddress(address).getPort(); - return new NettyRpcService(port, s); - } - - private static Map<RaftPeer, NettyRpcService> initRpcServices( - Collection<RaftServerImpl> servers, RaftConfiguration conf) { - final Map<RaftPeer, NettyRpcService> peerRpcs = new HashMap<>(); - - for (RaftServerImpl s : servers) { - final NettyRpcService rpc = newNettyRpcService(s, conf); - peerRpcs.put(new RaftPeer(s.getId(), rpc.getInetSocketAddress()), rpc); - } - - return peerRpcs; - } - - @Override - protected RaftServerImpl setPeerRpc(RaftPeer peer) throws IOException { - final RaftServerImpl s = servers.get(peer.getId()); - final NettyRpcService rpc = newNettyRpcService(s, conf); - s.setServerRpc(rpc); - return s; - } - - @Override - protected Collection<RaftPeer> addNewPeers( - Collection<RaftPeer> newPeers, Collection<RaftServerImpl> newServers, - boolean startService) throws IOException { - return addNewPeers(initRpcServices(newServers, conf), - newServers, startService); - } - - @Override - public RaftClientRequestSender getRaftClientRequestSender() { - return new NettyClientRequestSender(getPeers()); - } - - @Override - protected void blockQueueAndSetDelay(String leaderId, int delayMs) - throws InterruptedException { - RaftTestUtil.blockQueueAndSetDelay(getServers(), sendServerRequest, - leaderId, delayMs, getMaxTimeout()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/test/java/org/apache/raft/netty/TestNotLeaderExceptionWithNetty.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/test/java/org/apache/raft/netty/TestNotLeaderExceptionWithNetty.java b/raft-netty/src/test/java/org/apache/raft/netty/TestNotLeaderExceptionWithNetty.java deleted file mode 100644 index cfc7c01..0000000 --- a/raft-netty/src/test/java/org/apache/raft/netty/TestNotLeaderExceptionWithNetty.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * 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.raft.netty; - -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.RaftNotLeaderExceptionBaseTest; -import org.apache.raft.conf.RaftProperties; - -import java.io.IOException; - -public class TestNotLeaderExceptionWithNetty extends RaftNotLeaderExceptionBaseTest { - @Override - public MiniRaftCluster initCluster() throws IOException { - String[] s = MiniRaftCluster.generateIds(NUM_PEERS, 0); - RaftProperties prop = new RaftProperties(); - return new MiniRaftClusterWithNetty(s, prop, true); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/test/java/org/apache/raft/netty/TestRaftReconfigurationWithNetty.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/test/java/org/apache/raft/netty/TestRaftReconfigurationWithNetty.java b/raft-netty/src/test/java/org/apache/raft/netty/TestRaftReconfigurationWithNetty.java deleted file mode 100644 index c4dd914..0000000 --- a/raft-netty/src/test/java/org/apache/raft/netty/TestRaftReconfigurationWithNetty.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * 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.raft.netty; - -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.server.impl.RaftReconfigurationBaseTest; - -import java.io.IOException; - -public class TestRaftReconfigurationWithNetty - extends RaftReconfigurationBaseTest { - @Override - public MiniRaftCluster getCluster(int peerNum) throws IOException { - return MiniRaftClusterWithNetty.FACTORY.newCluster(peerNum, prop, true); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/test/java/org/apache/raft/netty/TestRaftSnapshotWithNetty.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/test/java/org/apache/raft/netty/TestRaftSnapshotWithNetty.java b/raft-netty/src/test/java/org/apache/raft/netty/TestRaftSnapshotWithNetty.java deleted file mode 100644 index 269ebd7..0000000 --- a/raft-netty/src/test/java/org/apache/raft/netty/TestRaftSnapshotWithNetty.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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.raft.netty; - -import org.apache.raft.MiniRaftCluster; -import org.apache.raft.conf.RaftProperties; -import org.apache.raft.statemachine.RaftSnapshotBaseTest; - -import java.io.IOException; - -public class TestRaftSnapshotWithNetty extends RaftSnapshotBaseTest { - @Override - public MiniRaftCluster initCluster(int numServer, RaftProperties prop) - throws IOException { - return MiniRaftClusterWithNetty.FACTORY.newCluster(numServer, prop, true); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/test/java/org/apache/raft/netty/TestRaftWithNetty.java ---------------------------------------------------------------------- diff --git a/raft-netty/src/test/java/org/apache/raft/netty/TestRaftWithNetty.java b/raft-netty/src/test/java/org/apache/raft/netty/TestRaftWithNetty.java deleted file mode 100644 index cba991d..0000000 --- a/raft-netty/src/test/java/org/apache/raft/netty/TestRaftWithNetty.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * 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.raft.netty; - -import org.apache.log4j.Level; -import org.apache.raft.RaftBasicTests; -import org.apache.raft.client.RaftClient; -import org.apache.raft.server.impl.BlockRequestHandlingInjection; -import org.apache.raft.server.impl.RaftServerImpl; -import org.apache.raft.util.RaftUtils; -import org.junit.Test; - -import java.io.IOException; - -public class TestRaftWithNetty extends RaftBasicTests { - static { - RaftUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG); - RaftUtils.setLogLevel(RaftClient.LOG, Level.DEBUG); - } - - private final MiniRaftClusterWithNetty cluster; - - public TestRaftWithNetty() throws IOException { - cluster = new MiniRaftClusterWithNetty(NUM_SERVERS, getProperties()); - } - - @Override - public MiniRaftClusterWithNetty getCluster() { - return cluster; - } - - @Override - @Test - public void testEnforceLeader() throws Exception { - super.testEnforceLeader(); - - MiniRaftClusterWithNetty.sendServerRequest.clear(); - BlockRequestHandlingInjection.getInstance().unblockAll(); - } - - @Override - @Test - public void testWithLoad() throws Exception { - super.testWithLoad(); - BlockRequestHandlingInjection.getInstance().unblockAll(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-netty/src/test/resources/log4j.properties ---------------------------------------------------------------------- diff --git a/raft-netty/src/test/resources/log4j.properties b/raft-netty/src/test/resources/log4j.properties deleted file mode 100644 index ced0687..0000000 --- a/raft-netty/src/test/resources/log4j.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Licensed 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. -# log4j configuration used during build and unit tests - -log4j.rootLogger=info,stdout -log4j.threshold=ALL -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7e71a2e0/raft-project-dist/pom.xml ---------------------------------------------------------------------- diff --git a/raft-project-dist/pom.xml b/raft-project-dist/pom.xml deleted file mode 100644 index d979285..0000000 --- a/raft-project-dist/pom.xml +++ /dev/null @@ -1,169 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed 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. See accompanying LICENSE file. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <artifactId>raft-project</artifactId> - <groupId>com.hortonworks.raft</groupId> - <version>1.0-SNAPSHOT</version> - <relativePath>../raft-project</relativePath> - </parent> - - <artifactId>raft-project-dist</artifactId> - <groupId>com.hortonworks.raft</groupId> - <name>Raft Project Dist POM</name> - <version>1.0-SNAPSHOT</version> - - <packaging>pom</packaging> - - <properties> - <raft.tmp.dir>${project.build.directory}/test</raft.tmp.dir> - <test.build.data>${project.build.directory}/test/data</test.build.data> - <raft.log.dir>${project.build.directory}/log</raft.log.dir> - <test.build.webapps>${project.build.directory}/test-classes/webapps</test.build.webapps> - <test.cache.data>${project.build.directory}/test-classes</test.cache.data> - <test.build.classes>${project.build.directory}/test-classes</test.build.classes> - </properties> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <id>default-jar</id> - <phase>never</phase> - </execution> - <execution> - <id>prepare-jar</id> - <phase>prepare-package</phase> - <goals> - <goal>jar</goal> - </goals> - </execution> - <execution> - <id>prepare-test-jar</id> - <phase>prepare-package</phase> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <includes> - <include>**/*.class</include> - <include>webapps/**</include> - </includes> - </configuration> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-source-plugin</artifactId> - <version>${maven-source-plugin.version}</version> - <executions> - <execution> - <phase>prepare-package</phase> - <goals> - <goal>jar</goal> - <goal>test-jar</goal> - </goals> - </execution> - </executions> - <configuration> - <attach>true</attach> - </configuration> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>findbugs-maven-plugin</artifactId> - <configuration> - <excludeFilterFile>${basedir}/dev-support/findbugsExcludeFile.xml</excludeFilterFile> - <fork>true</fork> - <maxHeap>2048</maxHeap> - </configuration> - </plugin> - </plugins> - </build> - - <profiles> - <profile> - <id>dist</id> - <activation> - <activeByDefault>false</activeByDefault> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-antrun-plugin</artifactId> - <executions> - <execution> - <id>tar</id> - <phase>package</phase> - <goals> - <goal>run</goal> - </goals> - <configuration> - <target if="tar"> - <!-- Using Unix script to preserve symlinks --> - <echo file="${project.build.directory}/dist-maketar.sh"> - cd "${project.build.directory}" - tar cf - ${project.artifactId}-${project.version} | gzip > ${project.artifactId}-${project.version}.tar.gz - </echo> - <exec executable="${shell-executable}" dir="${project.build.directory}" failonerror="true"> - <arg line="./dist-maketar.sh"/> - </exec> - </target> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-assembly-plugin</artifactId> - <dependencies> - <dependency> - <groupId>org.apache.hadoop</groupId> - <artifactId>hadoop-assemblies</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - <executions> - <execution> - <id>dist</id> - <phase>prepare-package</phase> - <goals> - <goal>single</goal> - </goals> - <configuration> - <appendAssemblyId>false</appendAssemblyId> - <attach>false</attach> - <finalName>${project.artifactId}-${project.version}</finalName> - <descriptorRefs> - <descriptorRef>hadoop-dist</descriptorRef> - </descriptorRefs> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> -</project>
