Do not use Optional for leaderAddress 12/109512/6
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 31 Dec 2023 05:15:06 +0000 (06:15 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 1 Jan 2024 13:56:43 +0000 (13:56 +0000)
Optional is a largely-superfluous indirection. Use a nullable return
and adjust users.

Change-Id: Ic453039e174a94c55c3821c807202ba2cead0c9e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Follower.java
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AE.java
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntries.java
opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java
opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesTest.java

index a05fb5d7efcebd764d4c2a9e3bbe28b98e71b4cc..9dd630aade8a5e2e0a8265aa69564ceaace63cd4 100644 (file)
@@ -165,12 +165,11 @@ public class Follower extends AbstractRaftActorBehavior {
         leaderId = appendEntries.getLeaderId();
         leaderPayloadVersion = appendEntries.getPayloadVersion();
 
-        if (appendEntries.getLeaderAddress().isPresent()) {
-            final String address = appendEntries.getLeaderAddress().orElseThrow();
-            log.debug("New leader address: {}", address);
-
-            context.setPeerAddress(leaderId, address);
-            context.getConfigParams().getPeerAddressResolver().setResolved(leaderId, address);
+        final var leaderAddress = appendEntries.leaderAddress();
+        if (leaderAddress != null) {
+            log.debug("New leader address: {}", leaderAddress);
+            context.setPeerAddress(leaderId, leaderAddress);
+            context.getConfigParams().getPeerAddressResolver().setResolved(leaderId, leaderAddress);
         }
 
         // First check if the logs are in sync or not
index 030884b6bd1db45c6480c849b32677c23fc5253f..491ca3fb0acd8e547ea646eb6ba206e565a7800f 100644 (file)
@@ -56,7 +56,7 @@ final class AE implements Externalizable {
             out.writeObject(e.getData());
         }
 
-        out.writeObject(appendEntries.getLeaderAddress().orElse(null));
+        out.writeObject(appendEntries.leaderAddress());
     }
 
     @Override
index 7d7dc9d6fbf4903d34cbcc642297c7d9de19a210..892ea3356a58259b5a91b6ab3ea7bcfda8ef70b9 100644 (file)
@@ -16,7 +16,6 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.List;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.controller.cluster.raft.RaftVersions;
@@ -117,8 +116,8 @@ public final class AppendEntries extends AbstractRaftRPC {
         return payloadVersion;
     }
 
-    public Optional<String> getLeaderAddress() {
-        return Optional.ofNullable(leaderAddress);
+    public @Nullable String leaderAddress() {
+        return leaderAddress;
     }
 
     public short getLeaderRaftVersion() {
index bb8b4ca799a810da614cf7b120aab49bde04da34..4ca2abae0e13712b7e7a955571bd8c2914be7450 100644 (file)
@@ -2401,7 +2401,7 @@ public class LeaderTest extends AbstractLeaderTest<Leader> {
         // Initial heartbeat shouldn't have the leader address
 
         AppendEntries appendEntries = MessageCollectorActor.expectFirstMatching(followerActor, AppendEntries.class);
-        assertFalse(appendEntries.getLeaderAddress().isPresent());
+        assertNull(appendEntries.leaderAddress());
         MessageCollectorActor.clearMessages(followerActor);
 
         // Send AppendEntriesReply indicating the follower needs the leader address
@@ -2416,8 +2416,7 @@ public class LeaderTest extends AbstractLeaderTest<Leader> {
         leader.handleMessage(leaderActor, SendHeartBeat.INSTANCE);
 
         appendEntries = MessageCollectorActor.expectFirstMatching(followerActor, AppendEntries.class);
-        assertTrue(appendEntries.getLeaderAddress().isPresent());
-        assertEquals(leaderActor.path().toString(), appendEntries.getLeaderAddress().orElseThrow());
+        assertEquals(leaderActor.path().toString(), appendEntries.leaderAddress());
         MessageCollectorActor.clearMessages(followerActor);
 
         // Send AppendEntriesReply indicating the follower does not need the leader address
@@ -2431,7 +2430,7 @@ public class LeaderTest extends AbstractLeaderTest<Leader> {
         leader.handleMessage(leaderActor, SendHeartBeat.INSTANCE);
 
         appendEntries = MessageCollectorActor.expectFirstMatching(followerActor, AppendEntries.class);
-        assertFalse(appendEntries.getLeaderAddress().isPresent());
+        assertNull(appendEntries.leaderAddress());
     }
 
     @Override
index 3e3b6184b910f6ba208093b9501c709616f1afb3..38f1defb9f420fdf7769fd2a5270feb9476b3544 100644 (file)
@@ -71,7 +71,7 @@ public class AppendEntriesTest {
             verifyReplicatedLogEntry(iter.next(), e);
         }
 
-        assertEquals("getLeaderAddress", expected.getLeaderAddress(), actual.getLeaderAddress());
+        assertEquals("getLeaderAddress", expected.leaderAddress(), actual.leaderAddress());
         assertEquals("getLeaderRaftVersion", RaftVersions.CURRENT_VERSION, actual.getLeaderRaftVersion());
     }