Small fixes to RaftServer and StateMachine related interfaces after recent refactorings
Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/bdd51643 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/bdd51643 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/bdd51643 Branch: refs/heads/master Commit: bdd516434a39714632dc4e563ed055348ef84c4f Parents: f58b5ef Author: Enis Soztutar <[email protected]> Authored: Fri Jan 6 14:15:14 2017 -0800 Committer: Enis Soztutar <[email protected]> Committed: Fri Jan 6 14:15:23 2017 -0800 ---------------------------------------------------------------------- raft-server/pom.xml | 1 - .../src/main/java/org/apache/raft/server/RaftServer.java | 7 +++++++ .../main/java/org/apache/raft/server/impl/RaftServerImpl.java | 3 ++- .../main/java/org/apache/raft/statemachine/StateMachine.java | 5 +++++ .../java/org/apache/raft/statemachine/TransactionContext.java | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/bdd51643/raft-server/pom.xml ---------------------------------------------------------------------- diff --git a/raft-server/pom.xml b/raft-server/pom.xml index 584dc9a..d992306 100644 --- a/raft-server/pom.xml +++ b/raft-server/pom.xml @@ -30,7 +30,6 @@ <dependency> <artifactId>raft-proto-shaded</artifactId> <groupId>com.hortonworks.raft</groupId> - <scope>provided</scope> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/bdd51643/raft-server/src/main/java/org/apache/raft/server/RaftServer.java ---------------------------------------------------------------------- diff --git a/raft-server/src/main/java/org/apache/raft/server/RaftServer.java b/raft-server/src/main/java/org/apache/raft/server/RaftServer.java index aa4dfbf..bb49c5a 100644 --- a/raft-server/src/main/java/org/apache/raft/server/RaftServer.java +++ b/raft-server/src/main/java/org/apache/raft/server/RaftServer.java @@ -20,6 +20,7 @@ package org.apache.raft.server; import org.apache.raft.protocol.RaftClientAsynchronousProtocol; import org.apache.raft.protocol.RaftClientProtocol; import org.apache.raft.server.protocol.RaftServerProtocol; +import org.apache.raft.statemachine.StateMachine; import java.io.Closeable; @@ -34,4 +35,10 @@ public interface RaftServer extends Closeable, RaftServerProtocol, /** Start this server. */ void start(); + + /** + * Returns the StateMachine instance. + * @return the StateMachine instance. + */ + StateMachine getStateMachine(); } http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/bdd51643/raft-server/src/main/java/org/apache/raft/server/impl/RaftServerImpl.java ---------------------------------------------------------------------- diff --git a/raft-server/src/main/java/org/apache/raft/server/impl/RaftServerImpl.java b/raft-server/src/main/java/org/apache/raft/server/impl/RaftServerImpl.java index c8a2e28..4b8c442 100644 --- a/raft-server/src/main/java/org/apache/raft/server/impl/RaftServerImpl.java +++ b/raft-server/src/main/java/org/apache/raft/server/impl/RaftServerImpl.java @@ -114,7 +114,8 @@ public class RaftServerImpl implements RaftServer { return RaftUtils.getRandomBetween(minTimeoutMs, maxTimeoutMs); } - StateMachine getStateMachine() { + @Override + public StateMachine getStateMachine() { return this.stateMachine; } http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/bdd51643/raft-server/src/main/java/org/apache/raft/statemachine/StateMachine.java ---------------------------------------------------------------------- diff --git a/raft-server/src/main/java/org/apache/raft/statemachine/StateMachine.java b/raft-server/src/main/java/org/apache/raft/statemachine/StateMachine.java index 935a83a..3dedf88 100644 --- a/raft-server/src/main/java/org/apache/raft/statemachine/StateMachine.java +++ b/raft-server/src/main/java/org/apache/raft/statemachine/StateMachine.java @@ -31,6 +31,11 @@ import java.io.IOException; import java.util.Collection; import java.util.concurrent.CompletableFuture; +/** + * StateMachine is the entry point for the custom implementation of replicated state as defined in + * the "State Machine Approach" in the literature + * (see https://en.wikipedia.org/wiki/State_machine_replication). + */ public interface StateMachine extends Closeable { /** * Initializes the State Machine with the given properties and storage. The state machine is http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/bdd51643/raft-server/src/main/java/org/apache/raft/statemachine/TransactionContext.java ---------------------------------------------------------------------- diff --git a/raft-server/src/main/java/org/apache/raft/statemachine/TransactionContext.java b/raft-server/src/main/java/org/apache/raft/statemachine/TransactionContext.java index 19b8250..675ada9 100644 --- a/raft-server/src/main/java/org/apache/raft/statemachine/TransactionContext.java +++ b/raft-server/src/main/java/org/apache/raft/statemachine/TransactionContext.java @@ -97,7 +97,7 @@ public class TransactionContext { SMLogEntryProto smLogEntryProto, Object stateMachineContext) { this(stateMachine); this.clientRequest = Optional.of(clientRequest); - this.smLogEntryProto = Optional.of(smLogEntryProto); + this.smLogEntryProto = Optional.ofNullable(smLogEntryProto); this.stateMachineContext = Optional.ofNullable(stateMachineContext); }
