diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java index a79f09b93299..7d568f3a9e8b 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java @@ -71,7 +71,6 @@ import org.apache.ratis.protocol.RaftPeerId; import org.apache.ratis.protocol.exceptions.StateMachineException; import org.apache.ratis.server.RaftServer; -import org.apache.ratis.server.impl.RaftServerProxy; import org.apache.ratis.server.protocol.TermIndex; import org.apache.ratis.server.raftlog.RaftLog; import org.apache.ratis.server.storage.RaftStorage; @@ -220,8 +219,7 @@ public void initialize( private long loadSnapshot(SingleFileSnapshotInfo snapshot) throws IOException { if (snapshot == null) { - TermIndex empty = - TermIndex.newTermIndex(0, RaftLog.INVALID_LOG_INDEX); + TermIndex empty = TermIndex.valueOf(0, RaftLog.INVALID_LOG_INDEX); LOG.info("{}: The snapshot info is null. Setting the last applied index" + "to:{}", gid, empty); setLastAppliedTermIndex(empty); @@ -420,10 +418,9 @@ private CompletableFuture handleWriteChunk( ContainerCommandRequestProto requestProto, long entryIndex, long term, long startTime) { final WriteChunkRequestProto write = requestProto.getWriteChunk(); - RaftServer server = ratisServer.getServer(); - Preconditions.checkState(server instanceof RaftServerProxy); try { - if (((RaftServerProxy) server).getImpl(gid).isLeader()) { + RaftServer.Division division = ratisServer.getServerDivision(); + if (division.getInfo().isLeader()) { stateMachineDataCache.put(entryIndex, write.getData()); } } catch (InterruptedException ioe) { diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java index 9bc2eb23b2a4..66c211e836be 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java @@ -100,7 +100,6 @@ import org.apache.ratis.rpc.SupportedRpcType; import org.apache.ratis.server.RaftServer; import org.apache.ratis.server.RaftServerConfigKeys; -import org.apache.ratis.server.impl.RaftServerProxy; import org.apache.ratis.server.protocol.TermIndex; import org.apache.ratis.util.SizeInBytes; import org.apache.ratis.util.TimeDuration; @@ -460,9 +459,9 @@ public void start() throws IOException { } server.start(); - int realPort = - ((RaftServerProxy) server).getServerRpc().getInetSocketAddress() - .getPort(); + int realPort = server.getServerRpc() + .getInetSocketAddress() + .getPort(); if (port == 0) { LOG.info("{} {} is started using port {}", getClass().getSimpleName(), @@ -516,6 +515,15 @@ public RaftServer getServer() { return server; } + public RaftServer.Division getServerDivision() throws IOException { + return getServerDivision(server.getGroupIds().iterator().next()); + } + + public RaftServer.Division getServerDivision(RaftGroupId id) + throws IOException { + return server.getDivision(id); + } + private void processReply(RaftClientReply reply) throws IOException { // NotLeader exception is thrown only when the raft server to which the // request is submitted is not the leader. The request will be rejected diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java index 5b25dba6e957..40cfbbac96c4 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java @@ -44,15 +44,12 @@ import org.apache.hadoop.ozone.common.OzoneChecksumException; import org.apache.hadoop.ozone.container.common.helpers.BlockData; import org.apache.hadoop.ozone.container.common.helpers.ChunkInfo; -import org.apache.hadoop.ozone.container.common.transport.server.XceiverServerSpi; import org.apache.hadoop.ozone.container.common.transport.server.ratis.XceiverServerRatis; import org.apache.hadoop.security.token.Token; import com.google.common.base.Preconditions; import com.google.common.base.Strings; -import org.apache.ratis.protocol.RaftGroupId; -import org.apache.ratis.server.impl.RaftServerImpl; -import org.apache.ratis.server.impl.RaftServerProxy; +import org.apache.ratis.server.RaftServer; import org.apache.ratis.statemachine.StateMachine; import org.junit.Assert; import org.slf4j.Logger; @@ -583,35 +580,33 @@ public static String getFixedLengthString(String string, int length) { return String.format("%1$" + length + "s", string); } - private static RaftServerImpl getRaftServerImpl(HddsDatanodeService dn, - Pipeline pipeline) throws Exception { + private static RaftServer.Division getRaftServerDivision( + HddsDatanodeService dn, Pipeline pipeline) throws Exception { if (!pipeline.getNodes().contains(dn.getDatanodeDetails())) { throw new IllegalArgumentException("Pipeline:" + pipeline.getId() + " not exist in datanode:" + dn.getDatanodeDetails().getUuid()); } - XceiverServerSpi server = dn.getDatanodeStateMachine(). - getContainer().getWriteChannel(); - RaftServerProxy proxy = - (RaftServerProxy) (((XceiverServerRatis) server).getServer()); - RaftGroupId groupId = - pipeline == null ? proxy.getGroupIds().iterator().next() : - RatisHelper.newRaftGroup(pipeline).getGroupId(); - return proxy.getImpl(groupId); + XceiverServerRatis server = + (XceiverServerRatis) (dn.getDatanodeStateMachine(). + getContainer().getWriteChannel()); + return pipeline == null ? server.getServerDivision() : + server.getServerDivision( + RatisHelper.newRaftGroup(pipeline).getGroupId()); } public static StateMachine getStateMachine(HddsDatanodeService dn, Pipeline pipeline) throws Exception { - return getRaftServerImpl(dn, pipeline).getStateMachine(); + return getRaftServerDivision(dn, pipeline).getStateMachine(); } public static boolean isRatisLeader(HddsDatanodeService dn, Pipeline pipeline) throws Exception { - return getRaftServerImpl(dn, pipeline).isLeader(); + return getRaftServerDivision(dn, pipeline).getInfo().isLeader(); } public static boolean isRatisFollower(HddsDatanodeService dn, Pipeline pipeline) throws Exception { - return getRaftServerImpl(dn, pipeline).isFollower(); + return getRaftServerDivision(dn, pipeline).getInfo().isFollower(); } } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestHelper.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestHelper.java index 8f851e434712..31acf4f33fff 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestHelper.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestHelper.java @@ -49,9 +49,7 @@ import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfo; import org.apache.hadoop.test.GenericTestUtils; -import org.apache.ratis.protocol.RaftGroupId; -import org.apache.ratis.server.impl.RaftServerImpl; -import org.apache.ratis.server.impl.RaftServerProxy; +import org.apache.ratis.server.RaftServer; import org.apache.ratis.statemachine.StateMachine; import org.junit.Assert; import org.slf4j.Logger; @@ -324,21 +322,19 @@ public static StateMachine getStateMachine(MiniOzoneCluster cluster) return getStateMachine(cluster.getHddsDatanodes().get(0), null); } - private static RaftServerImpl getRaftServerImpl(HddsDatanodeService dn, - Pipeline pipeline) throws Exception { - XceiverServerSpi server = dn.getDatanodeStateMachine(). - getContainer().getWriteChannel(); - RaftServerProxy proxy = - (RaftServerProxy) (((XceiverServerRatis) server).getServer()); - RaftGroupId groupId = - pipeline == null ? proxy.getGroupIds().iterator().next() : - RatisHelper.newRaftGroup(pipeline).getGroupId(); - return proxy.getImpl(groupId); + private static RaftServer.Division getRaftServerDivision( + HddsDatanodeService dn, Pipeline pipeline) throws Exception { + XceiverServerRatis server = + (XceiverServerRatis) (dn.getDatanodeStateMachine(). + getContainer().getWriteChannel()); + return pipeline == null ? server.getServerDivision() : + server.getServerDivision( + RatisHelper.newRaftGroup(pipeline).getGroupId()); } public static StateMachine getStateMachine(HddsDatanodeService dn, Pipeline pipeline) throws Exception { - return getRaftServerImpl(dn, pipeline).getStateMachine(); + return getRaftServerDivision(dn, pipeline).getStateMachine(); } public static HddsDatanodeService getDatanodeService(OmKeyLocationInfo info, diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopDirTreeGenerator.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopDirTreeGenerator.java index 6f5b11396d70..6ad5b8d2cfb9 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopDirTreeGenerator.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopDirTreeGenerator.java @@ -26,7 +26,7 @@ import org.apache.hadoop.ozone.client.OzoneClientFactory; import org.apache.hadoop.ozone.client.OzoneVolume; import org.apache.hadoop.test.GenericTestUtils; -import org.apache.ratis.server.impl.RaftServerImpl; +import org.apache.ratis.server.RaftServer; import org.apache.ratis.server.raftlog.RaftLog; import org.junit.Assert; import org.junit.Before; @@ -53,7 +53,7 @@ public void setup() { path = GenericTestUtils .getTempPath(TestOzoneClientKeyGenerator.class.getSimpleName()); GenericTestUtils.setLogLevel(RaftLog.LOG, Level.DEBUG); - GenericTestUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG); + GenericTestUtils.setLogLevel(RaftServer.LOG, Level.DEBUG); File baseDir = new File(path); baseDir.mkdirs(); } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopNestedDirGenerator.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopNestedDirGenerator.java index 69731ea666b9..42f6fd8c81e6 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopNestedDirGenerator.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestHadoopNestedDirGenerator.java @@ -26,7 +26,7 @@ import org.apache.hadoop.ozone.client.OzoneClientFactory; import org.apache.hadoop.ozone.client.OzoneVolume; import org.apache.hadoop.test.GenericTestUtils; -import org.apache.ratis.server.impl.RaftServerImpl; +import org.apache.ratis.server.RaftServer; import org.apache.ratis.server.raftlog.RaftLog; import java.util.LinkedList; import org.junit.Assert; @@ -57,7 +57,7 @@ public void setup() { path = GenericTestUtils .getTempPath(TestOzoneClientKeyGenerator.class.getSimpleName()); GenericTestUtils.setLogLevel(RaftLog.LOG, Level.DEBUG); - GenericTestUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG); + GenericTestUtils.setLogLevel(RaftServer.LOG, Level.DEBUG); File baseDir = new File(path); baseDir.mkdirs(); } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOzoneClientKeyGenerator.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOzoneClientKeyGenerator.java index 055f11413958..c3af704b7fda 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOzoneClientKeyGenerator.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/freon/TestOzoneClientKeyGenerator.java @@ -25,7 +25,7 @@ import org.apache.hadoop.test.GenericTestUtils; import org.apache.commons.io.FileUtils; -import org.apache.ratis.server.impl.RaftServerImpl; +import org.apache.ratis.server.RaftServer; import org.apache.ratis.server.raftlog.RaftLog; import org.junit.Before; import org.junit.Test; @@ -48,7 +48,7 @@ public void setup() { path = GenericTestUtils .getTempPath(TestOzoneClientKeyGenerator.class.getSimpleName()); GenericTestUtils.setLogLevel(RaftLog.LOG, Level.DEBUG); - GenericTestUtils.setLogLevel(RaftServerImpl.LOG, Level.DEBUG); + GenericTestUtils.setLogLevel(RaftServer.LOG, Level.DEBUG); File baseDir = new File(path); baseDir.mkdirs(); } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMRatisSnapshots.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMRatisSnapshots.java index 1465d95ce665..ac0beb66ba10 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMRatisSnapshots.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMRatisSnapshots.java @@ -155,7 +155,7 @@ public void testInstallSnapshot() throws Exception { OMTransactionInfo omTransactionInfo = OMTransactionInfo.readTransactionInfo(leaderOM.getMetadataManager()); TermIndex leaderOMTermIndex = - TermIndex.newTermIndex(omTransactionInfo.getTerm(), + TermIndex.valueOf(omTransactionInfo.getTerm(), omTransactionInfo.getTransactionIndex()); long leaderOMSnaphsotIndex = leaderOMTermIndex.getIndex(); long leaderOMSnapshotTermIndex = leaderOMTermIndex.getTerm(); diff --git a/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/ratis/OMTransactionInfo.java b/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/ratis/OMTransactionInfo.java index 1628883fca33..6c4b1b650a7e 100644 --- a/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/ratis/OMTransactionInfo.java +++ b/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/ratis/OMTransactionInfo.java @@ -74,7 +74,7 @@ public long getTransactionIndex() { } public TermIndex getTermIndex() { - return TermIndex.newTermIndex(term, transactionIndex); + return TermIndex.valueOf(term, transactionIndex); } /** diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 1fca05153f32..c3b1f0c2c760 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -3338,7 +3338,7 @@ TermIndex installCheckpoint(String leaderId, Path checkpointLocation, // TODO: We should only return the snpashotIndex to the leader. // Should be fixed after RATIS-586 - TermIndex newTermIndex = TermIndex.newTermIndex(term, lastAppliedIndex); + TermIndex newTermIndex = TermIndex.valueOf(term, lastAppliedIndex); return newTermIndex; } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OMRatisSnapshotInfo.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OMRatisSnapshotInfo.java index b8934146d19a..91c388eabd8b 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OMRatisSnapshotInfo.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OMRatisSnapshotInfo.java @@ -52,7 +52,7 @@ public void updateTermIndex(long newTerm, long newIndex) { @Override public TermIndex getTermIndex() { - return TermIndex.newTermIndex(term, snapshotIndex); + return TermIndex.valueOf(term, snapshotIndex); } @Override diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java index dc833307aa4d..5ca65a4d3113 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java @@ -70,8 +70,6 @@ import org.apache.ratis.rpc.SupportedRpcType; import org.apache.ratis.server.RaftServer; import org.apache.ratis.server.RaftServerConfigKeys; -import org.apache.ratis.server.impl.RaftServerImpl; -import org.apache.ratis.server.impl.RaftServerProxy; import org.apache.ratis.server.protocol.TermIndex; import org.apache.ratis.util.LifeCycle; import org.apache.ratis.util.SizeInBytes; @@ -574,14 +572,12 @@ public enum RaftServerStatus { * @return RaftServerStatus. */ public RaftServerStatus checkLeaderStatus() { - Preconditions.checkState(server instanceof RaftServerProxy); - RaftServerImpl serverImpl; try { - serverImpl = ((RaftServerProxy) server).getImpl(raftGroupId); - if (serverImpl != null) { - if (!serverImpl.isLeader()) { + RaftServer.Division division = server.getDivision(raftGroupId); + if (division != null) { + if (!division.getInfo().isLeader()) { return RaftServerStatus.NOT_LEADER; - } else if (serverImpl.isLeaderReady()) { + } else if (division.getInfo().isLeaderReady()) { return RaftServerStatus.LEADER_AND_READY; } else { return RaftServerStatus.LEADER_AND_NOT_READY; diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerStateMachine.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerStateMachine.java index 183fe461cbcd..a81d5d478f62 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerStateMachine.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerStateMachine.java @@ -317,7 +317,7 @@ public void unpause(long newLastAppliedSnaphsotIndex, getLifeCycle().startAndTransition(() -> { this.ozoneManagerDoubleBuffer = buildDoubleBufferForRatis(); handler.updateDoubleBuffer(ozoneManagerDoubleBuffer); - this.setLastAppliedTermIndex(TermIndex.newTermIndex( + this.setLastAppliedTermIndex(TermIndex.valueOf( newLastAppliedSnapShotTermIndex, newLastAppliedSnaphsotIndex)); }); } @@ -509,7 +509,7 @@ public void loadSnapshotInfoFromDB() throws IOException { OMTransactionInfo.readTransactionInfo( ozoneManager.getMetadataManager()); if (omTransactionInfo != null) { - setLastAppliedTermIndex(TermIndex.newTermIndex( + setLastAppliedTermIndex(TermIndex.valueOf( omTransactionInfo.getTerm(), omTransactionInfo.getTransactionIndex())); snapshotInfo.updateTermIndex(omTransactionInfo.getTerm(), diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisServer.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisServer.java index f22f3dbe1b04..535bbcea5514 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisServer.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisServer.java @@ -103,7 +103,7 @@ public void init() throws Exception { folder.newFolder().getAbsolutePath()); omMetadataManager = new OmMetadataManagerImpl(ozoneConfiguration); when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager); - initialTermIndex = TermIndex.newTermIndex(0, 0); + initialTermIndex = TermIndex.valueOf(0, 0); OMRatisSnapshotInfo omRatisSnapshotInfo = new OMRatisSnapshotInfo(); when(ozoneManager.getSnapshotInfo()).thenReturn(omRatisSnapshotInfo); omRatisServer = OzoneManagerRatisServer.newOMRatisServer(conf, ozoneManager, @@ -136,7 +136,7 @@ public void testLoadSnapshotInfoOnStart() throws Exception { SnapshotInfo snapshotInfo = omRatisServer.getOmStateMachine().getLatestSnapshot(); - TermIndex newSnapshotIndex = TermIndex.newTermIndex( + TermIndex newSnapshotIndex = TermIndex.valueOf( snapshotInfo.getTerm(), snapshotInfo.getIndex() + 100); omMetadataManager.getTransactionInfoTable().put(TRANSACTION_INFO_KEY, diff --git a/pom.xml b/pom.xml index f9f94fe9adea..1f216254e8e6 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs ${ozone.version} - 1.1.0-913f5a4-SNAPSHOT + 1.1.0-c5eafb9-SNAPSHOT 0.6.0-SNAPSHOT