You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by ji...@apache.org on 2017/07/09 04:02:34 UTC

incubator-ratis git commit: RATIS-8. Avoid using Optional for data fields in TransactionContext. Contributed by Hugo Louro.

Repository: incubator-ratis
Updated Branches:
  refs/heads/master a5b84af2d -> 237be5d10


RATIS-8. Avoid using Optional for data fields in TransactionContext. Contributed by Hugo Louro.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/237be5d1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/237be5d1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/237be5d1

Branch: refs/heads/master
Commit: 237be5d10b389fd4f0b7829bb95e88ec94e8b72f
Parents: a5b84af
Author: Jing Zhao <ji...@apache.org>
Authored: Sat Jul 8 21:02:26 2017 -0700
Committer: Jing Zhao <ji...@apache.org>
Committed: Sat Jul 8 21:02:26 2017 -0700

----------------------------------------------------------------------
 .../arithmetic/ArithmeticStateMachine.java      |  2 +-
 .../ratis/server/impl/RaftServerImpl.java       |  5 +-
 .../apache/ratis/server/storage/RaftLog.java    |  2 +-
 .../ratis/statemachine/BaseStateMachine.java    |  2 +-
 .../ratis/statemachine/TransactionContext.java  | 52 ++++++++++----------
 .../SimpleStateMachine4Testing.java             |  2 +-
 .../ratis/statemachine/TestStateMachine.java    | 18 +++----
 7 files changed, 41 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
index 53e8ab7..a4199b6 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
@@ -156,7 +156,7 @@ public class ArithmeticStateMachine extends BaseStateMachine {
 
   @Override
   public CompletableFuture<Message> applyTransaction(TransactionContext trx) {
-    final LogEntryProto entry = trx.getLogEntry().get();
+    final LogEntryProto entry = trx.getLogEntry();
     final AssignmentMessage assignment = new AssignmentMessage(
         () -> entry.getSmLogEntry().getData());
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
index 88cf240..0f8e692 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
@@ -435,10 +435,9 @@ public class RaftServerImpl implements RaftServerProtocol,
     // later which means that any failure in between will leave partial state in
     // the state machine. We should call cancelTransaction() for failed requests
     TransactionContext context = stateMachine.startTransaction(request);
-    if (context.getException().isPresent()) {
+    if (context.getException() != null) {
       RaftClientReply exceptionReply = new RaftClientReply(request,
-          new StateMachineException(getId().toString(),
-              context.getException().get()));
+          new StateMachineException(getId().toString(), context.getException()));
       cacheEntry.failWithReply(exceptionReply);
       return CompletableFuture.completedFuture(exceptionReply);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-server/src/main/java/org/apache/ratis/server/storage/RaftLog.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/storage/RaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/storage/RaftLog.java
index 8b60f2d..ee765c1 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/storage/RaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/storage/RaftLog.java
@@ -141,7 +141,7 @@ public abstract class RaftLog implements Closeable {
 
       // build the log entry after calling the StateMachine
       final LogEntryProto e = ProtoUtils.toLogEntryProto(
-          operation.getSMLogEntry().get(), term, nextIndex, clientId, callId);
+          operation.getSMLogEntry(), term, nextIndex, clientId, callId);
 
       appendEntry(e);
       operation.setLogEntry(e);

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-server/src/main/java/org/apache/ratis/statemachine/BaseStateMachine.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/BaseStateMachine.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/BaseStateMachine.java
index 9a0e999..d35dc88 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/BaseStateMachine.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/BaseStateMachine.java
@@ -93,7 +93,7 @@ public class BaseStateMachine implements StateMachine {
   @Override
   public CompletableFuture<Message> applyTransaction(TransactionContext trx) {
     // return the same message contained in the entry
-    Message msg = () -> trx.getLogEntry().get().getSmLogEntry().getData();
+    Message msg = () -> trx.getLogEntry().getSmLogEntry().getData();
     return CompletableFuture.completedFuture(msg);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
index 81bea45..3a6adfc 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/TransactionContext.java
@@ -49,13 +49,13 @@ public class TransactionContext {
   private final StateMachine stateMachine;
 
   /** Original request from the client */
-  private Optional<RaftClientRequest> clientRequest = Optional.empty();
+  private RaftClientRequest clientRequest;
 
   /** Exception from the {@link StateMachine} or from the log */
-  private Optional<Exception> exception = Optional.empty();
+  private Exception exception;
 
   /** Data from the {@link StateMachine} */
-  private Optional<SMLogEntryProto> smLogEntryProto = Optional.empty();
+  private SMLogEntryProto smLogEntryProto;
 
   /**
    * Context specific to the state machine.
@@ -63,7 +63,7 @@ public class TransactionContext {
    * {@link StateMachine#startTransaction(RaftClientRequest)} and
    * {@link StateMachine#applyTransaction(TransactionContext)}.
    */
-  private Optional<Object> stateMachineContext = Optional.empty();
+  private Object stateMachineContext;
 
   /**
    * Whether to commit the transaction to the RAFT Log.
@@ -73,7 +73,7 @@ public class TransactionContext {
   private boolean shouldCommit = true;
 
   /** Committed LogEntry. */
-  private Optional<LogEntryProto> logEntry = Optional.empty();
+  private LogEntryProto logEntry;
 
   private TransactionContext(StateMachine stateMachine) {
     this.stateMachine = stateMachine;
@@ -96,9 +96,9 @@ public class TransactionContext {
       StateMachine stateMachine, RaftClientRequest clientRequest,
       SMLogEntryProto smLogEntryProto, Object stateMachineContext) {
     this(stateMachine);
-    this.clientRequest = Optional.of(clientRequest);
-    this.smLogEntryProto = Optional.ofNullable(smLogEntryProto);
-    this.stateMachineContext = Optional.ofNullable(stateMachineContext);
+    this.clientRequest = clientRequest;
+    this.smLogEntryProto = smLogEntryProto;
+    this.stateMachineContext = stateMachineContext;
   }
 
   /** The same as this(stateMachine, clientRequest, exception, null). */
@@ -117,9 +117,9 @@ public class TransactionContext {
       StateMachine stateMachine, RaftClientRequest clientRequest,
       Exception exception, Object stateMachineContext) {
     this(stateMachine);
-    this.clientRequest = Optional.of(clientRequest);
-    this.exception = Optional.of(exception);
-    this.stateMachineContext = Optional.ofNullable(stateMachineContext);
+    this.clientRequest = clientRequest;
+    this.exception = exception;
+    this.stateMachineContext = stateMachineContext;
   }
 
   /**
@@ -129,48 +129,48 @@ public class TransactionContext {
    */
   public TransactionContext(StateMachine stateMachine, LogEntryProto logEntry) {
     this(stateMachine);
-    this.smLogEntryProto = Optional.of(logEntry.getSmLogEntry());
-    this.logEntry = Optional.of(logEntry);
+    this.smLogEntryProto = logEntry.getSmLogEntry();
+    this.logEntry = logEntry;
   }
 
-  public Optional<RaftClientRequest> getClientRequest() {
-    return this.clientRequest;
+  public RaftClientRequest getClientRequest() {
+    return clientRequest;
   }
 
-  public Optional<SMLogEntryProto> getSMLogEntry() {
-    return this.smLogEntryProto;
+  public SMLogEntryProto getSMLogEntry() {
+    return smLogEntryProto;
   }
 
-  public Optional<Exception> getException() {
-    return this.exception;
+  public Exception getException() {
+    return exception;
   }
 
   public TransactionContext setStateMachineContext(Object stateMachineContext) {
-    this.stateMachineContext = Optional.ofNullable(stateMachineContext);
+    this.stateMachineContext = stateMachineContext;
     return this;
   }
 
-  public Optional<Object> getStateMachineContext() {
+  public Object getStateMachineContext() {
     return stateMachineContext;
   }
 
   public TransactionContext setLogEntry(LogEntryProto logEntry) {
-    this.logEntry = Optional.of(logEntry);
+    this.logEntry = logEntry;
     return this;
   }
 
   public TransactionContext setSmLogEntryProto(SMLogEntryProto smLogEntryProto) {
-    this.smLogEntryProto = Optional.of(smLogEntryProto);
+    this.smLogEntryProto = smLogEntryProto;
     return this;
   }
 
-  public Optional<LogEntryProto> getLogEntry() {
+  public LogEntryProto getLogEntry() {
     return logEntry;
   }
 
   private TransactionContext setException(IOException ioe) {
-    assert !this.exception.isPresent();
-    this.exception = Optional.of(ioe);
+    assert exception != null;
+    this.exception = ioe;
     return this;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java b/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
index 4ecc282..a0c4f45 100644
--- a/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
+++ b/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
@@ -123,7 +123,7 @@ public class SimpleStateMachine4Testing extends BaseStateMachine {
 
   @Override
   public CompletableFuture<Message> applyTransaction(TransactionContext trx) {
-    LogEntryProto entry = Objects.requireNonNull(trx.getLogEntry().get());
+    LogEntryProto entry = Objects.requireNonNull(trx.getLogEntry());
     list.add(entry);
     termIndexTracker.update(ServerProtoUtils.toTermIndex(entry));
     return CompletableFuture.completedFuture(

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/237be5d1/ratis-server/src/test/java/org/apache/ratis/statemachine/TestStateMachine.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/test/java/org/apache/ratis/statemachine/TestStateMachine.java b/ratis-server/src/test/java/org/apache/ratis/statemachine/TestStateMachine.java
index cf4880c..a5f2c07 100644
--- a/ratis-server/src/test/java/org/apache/ratis/statemachine/TestStateMachine.java
+++ b/ratis-server/src/test/java/org/apache/ratis/statemachine/TestStateMachine.java
@@ -121,19 +121,19 @@ public class TestStateMachine {
     @Override
     public CompletableFuture<Message> applyTransaction(TransactionContext trx) {
       try {
-        assertTrue(trx.getLogEntry().isPresent());
-        assertTrue(trx.getSMLogEntry().isPresent());
-        Optional<Object> context = trx.getStateMachineContext();
+        assertNotNull(trx.getLogEntry());
+        assertNotNull(trx.getSMLogEntry());
+        Object context = trx.getStateMachineContext();
         if (isLeader.get()) {
-          assertTrue(trx.getClientRequest().isPresent());
-          assertTrue(context.isPresent());
-          assertTrue(context.get() instanceof Long);
-          Long val = (Long)context.get();
+          assertNotNull(trx.getClientRequest());
+          assertNotNull(context);
+          assertTrue(context instanceof Long);
+          Long val = (Long)context;
           assertTrue(val <= transactions.get());
           applied.add(val);
         } else {
-          assertFalse(trx.getClientRequest().isPresent());
-          assertFalse(context.isPresent());
+          assertNull(trx.getClientRequest());
+          assertNull(context);
         }
         numApplied.incrementAndGet();
       } catch (Throwable t) {