This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/GEODE-3643
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-3643 by this 
push:
     new 026c326  GEODE-3643: Add function execution on specific member
026c326 is described below

commit 026c32604e932659c348a5f1078a972c98ef8ef9
Author: Bruce Schuchardt <bschucha...@pivotal.io>
AuthorDate: Thu Feb 8 13:52:43 2018 -0800

    GEODE-3643: Add function execution on specific member
    
    fixups from review comments
---
 .../internal/ClusterDistributionManager.java         |  5 +++--
 .../internal/LonerDistributionManager.java           | 20 ++++++++++----------
 ...ecuteFunctionOnMemberRequestOperationHandler.java |  6 +++---
 ...ecuteFunctionOnRegionRequestOperationHandler.java |  7 +------
 ...a => ExecuteFunctionOnMemberIntegrationTest.java} |  2 +-
 ...a => ExecuteFunctionOnRegionIntegrationTest.java} |  2 +-
 ...tionOnMemberRequestOperationHandlerJUnitTest.java | 14 +++++++++++---
 7 files changed, 30 insertions(+), 26 deletions(-)

diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
index 9c8995b..ba87f52 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
@@ -27,6 +27,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentHashMap;
@@ -1454,11 +1455,11 @@ public class ClusterDistributionManager implements 
DistributionManager {
   @Override
   public DistributedMember getMemberWithName(String name) {
     for (DistributedMember id : members.values()) {
-      if (id.getName() != null && id.getName().equals(name)) {
+      if (Objects.equals(id.getName(), name)) {
         return id;
       }
     }
-    if (localAddress.getName() != null && localAddress.getName().equals(name)) 
{
+    if (Objects.equals(localAddress, name)) {
       return localAddress;
     }
     return null;
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
index 2f8c4fc..9d94001 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
@@ -62,8 +62,8 @@ public class LonerDistributionManager implements 
DistributionManager {
   public LonerDistributionManager(InternalDistributedSystem system, 
InternalLogWriter logger) {
     this.system = system;
     this.logger = logger;
-    this.id = generateMemberId();
-    this.allIds = Collections.singleton(id);
+    this.localAddress = generateMemberId();
+    this.allIds = Collections.singleton(localAddress);
     this.viewMembers = new ArrayList<InternalDistributedMember>(allIds);
     DistributionStats.enableClockStats = 
this.system.getConfig().getEnableTimeStatistics();
   }
@@ -83,7 +83,7 @@ public class LonerDistributionManager implements 
DistributionManager {
     }
   }
 
-  private final InternalDistributedMember id;
+  private final InternalDistributedMember localAddress;
 
   /*
    * static { // Make the id a little unique String host; try { host =
@@ -112,7 +112,7 @@ public class LonerDistributionManager implements 
DistributionManager {
   }
 
   public InternalDistributedMember getDistributionManagerId() {
-    return id;
+    return localAddress;
   }
 
   public Set getDistributionManagerIds() {
@@ -139,12 +139,12 @@ public class LonerDistributionManager implements 
DistributionManager {
   @Override
   public DistributedMember getMemberWithName(String name) {
     for (DistributedMember id : canonicalIds.values()) {
-      if (id.getName() != null && id.getName().equals(name)) {
+      if (Objects.equals(id.getName(), name)) {
         return id;
       }
     }
-    if (id.getName() != null && id.getName().equals(name)) {
-      return id;
+    if (Objects.equals(localAddress.getName(), localAddress)) {
+      return localAddress;
     }
     return null;
   }
@@ -1167,17 +1167,17 @@ public class LonerDistributionManager implements 
DistributionManager {
 
   /** Returns count of members filling the specified role */
   public int getRoleCount(Role role) {
-    return id.getRoles().contains(role) ? 1 : 0;
+    return localAddress.getRoles().contains(role) ? 1 : 0;
   }
 
   /** Returns true if at least one member is filling the specified role */
   public boolean isRolePresent(Role role) {
-    return id.getRoles().contains(role);
+    return localAddress.getRoles().contains(role);
   }
 
   /** Returns a set of all roles currently in the distributed system. */
   public Set getAllRoles() {
-    return id.getRoles();
+    return localAddress.getRoles();
   }
 
   private int lonerPort = 0;
diff --git 
a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
 
b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
index 8ec6e00..4519f5a 100644
--- 
a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
+++ 
b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandler.java
@@ -49,11 +49,9 @@ public class ExecuteFunctionOnMemberRequestOperationHandler 
implements
   public Result<FunctionAPI.ExecuteFunctionOnMemberResponse, 
ClientProtocol.ErrorResponse> process(
       ProtobufSerializationService serializationService,
       FunctionAPI.ExecuteFunctionOnMemberRequest request,
-      MessageExecutionContext messageExecutionContext)
-      throws InvalidExecutionContextException, ConnectionStateException {
+      MessageExecutionContext messageExecutionContext) throws 
InvalidExecutionContextException {
 
     final String functionID = request.getFunctionID();
-    ProtocolStringList memberNameList = request.getMemberNameList();
 
     final Function<?> function = FunctionService.getFunction(functionID);
     if (function == null) {
@@ -79,6 +77,8 @@ public class ExecuteFunctionOnMemberRequestOperationHandler 
implements
           .build());
     }
 
+    ProtocolStringList memberNameList = request.getMemberNameList();
+
     Set<DistributedMember> memberIds = new HashSet<>(memberNameList.size());
     DistributionManager distributionManager =
         messageExecutionContext.getCache().getDistributionManager();
diff --git 
a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
 
b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
index 951ac59..17e9f09 100644
--- 
a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
+++ 
b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnRegionRequestOperationHandler.java
@@ -18,8 +18,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.logging.log4j.Logger;
-
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.execute.Execution;
 import org.apache.geode.cache.execute.Function;
@@ -28,7 +26,6 @@ import org.apache.geode.cache.execute.FunctionService;
 import org.apache.geode.cache.execute.ResultCollector;
 import org.apache.geode.internal.exception.InvalidExecutionContextException;
 import org.apache.geode.internal.i18n.LocalizedStrings;
-import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.protocol.operations.ProtobufOperationHandler;
 import org.apache.geode.internal.protocol.protobuf.v1.BasicTypes;
 import org.apache.geode.internal.protocol.protobuf.v1.ClientProtocol;
@@ -39,7 +36,6 @@ import 
org.apache.geode.internal.protocol.protobuf.v1.ProtobufSerializationServi
 import org.apache.geode.internal.protocol.protobuf.v1.Result;
 import org.apache.geode.internal.protocol.protobuf.v1.Success;
 import 
org.apache.geode.internal.protocol.protobuf.v1.serialization.exception.EncodingException;
-import 
org.apache.geode.internal.protocol.protobuf.v1.state.exception.ConnectionStateException;
 import org.apache.geode.internal.security.SecurityService;
 import org.apache.geode.security.NotAuthorizedException;
 
@@ -49,8 +45,7 @@ public class ExecuteFunctionOnRegionRequestOperationHandler 
implements
   public Result<FunctionAPI.ExecuteFunctionOnRegionResponse, 
ClientProtocol.ErrorResponse> process(
       ProtobufSerializationService serializationService,
       FunctionAPI.ExecuteFunctionOnRegionRequest request,
-      MessageExecutionContext messageExecutionContext)
-      throws InvalidExecutionContextException, ConnectionStateException {
+      MessageExecutionContext messageExecutionContext) throws 
InvalidExecutionContextException {
 
     final String functionID = request.getFunctionID();
     final String regionName = request.getRegion();
diff --git 
a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecutFunctionOnMemberIntegrationTest.java
 
b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecuteFunctionOnMemberIntegrationTest.java
similarity index 99%
rename from 
geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecutFunctionOnMemberIntegrationTest.java
rename to 
geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecuteFunctionOnMemberIntegrationTest.java
index 3a21735..cfd2107 100644
--- 
a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecutFunctionOnMemberIntegrationTest.java
+++ 
b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecuteFunctionOnMemberIntegrationTest.java
@@ -62,7 +62,7 @@ import org.apache.geode.security.SecurityManager;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
 @Category(IntegrationTest.class)
-public class ExecutFunctionOnMemberIntegrationTest {
+public class ExecuteFunctionOnMemberIntegrationTest {
   private static final String TEST_REGION = "testRegion";
   private static final String TEST_FUNCTION_ID = "testFunction";
   private static final String SECURITY_PRINCIPAL = "principle";
diff --git 
a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecutFunctionOnRegionIntegrationTest.java
 
b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecuteFunctionOnRegionIntegrationTest.java
similarity index 99%
rename from 
geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecutFunctionOnRegionIntegrationTest.java
rename to 
geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecuteFunctionOnRegionIntegrationTest.java
index 5a6b691..bb87f1a 100644
--- 
a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecutFunctionOnRegionIntegrationTest.java
+++ 
b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/ExecuteFunctionOnRegionIntegrationTest.java
@@ -61,7 +61,7 @@ import org.apache.geode.security.SecurityManager;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 
 @Category(IntegrationTest.class)
-public class ExecutFunctionOnRegionIntegrationTest {
+public class ExecuteFunctionOnRegionIntegrationTest {
   private static final String TEST_REGION = "testRegion";
   private static final String TEST_FUNCTION_ID = "testFunction";
   public static final String SECURITY_PRINCIPAL = "principle";
diff --git 
a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandlerJUnitTest.java
 
b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandlerJUnitTest.java
index 55e7c3e..59016df 100644
--- 
a/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandlerJUnitTest.java
+++ 
b/geode-protobuf/src/test/java/org/apache/geode/internal/protocol/protobuf/v1/operations/ExecuteFunctionOnMemberRequestOperationHandlerJUnitTest.java
@@ -104,15 +104,23 @@ public class 
ExecuteFunctionOnMemberRequestOperationHandlerJUnitTest {
   }
 
   @Test
-  public void noopTest() {
+  public void failsOnUnknownMember() throws Exception {
+    final FunctionAPI.ExecuteFunctionOnMemberRequest request =
+        
FunctionAPI.ExecuteFunctionOnMemberRequest.newBuilder().setFunctionID(TEST_FUNCTION_ID)
+            .addMemberName(NOT_A_MEMBER).build();
 
+    final Result<FunctionAPI.ExecuteFunctionOnMemberResponse, 
ClientProtocol.ErrorResponse> result =
+        operationHandler.process(serializationService, request, 
mockedMessageExecutionContext());
+
+    assertTrue(result instanceof Failure);
+    assertEquals(NO_AVAILABLE_SERVER, 
result.getErrorMessage().getError().getErrorCode());
   }
 
   @Test
-  public void failsOnUnknownMember() throws Exception {
+  public void failsIfNoMemberSpecified() throws Exception {
     final FunctionAPI.ExecuteFunctionOnMemberRequest request =
         
FunctionAPI.ExecuteFunctionOnMemberRequest.newBuilder().setFunctionID(TEST_FUNCTION_ID)
-            .addMemberName(NOT_A_MEMBER).build();
+            .build();
 
     final Result<FunctionAPI.ExecuteFunctionOnMemberResponse, 
ClientProtocol.ErrorResponse> result =
         operationHandler.process(serializationService, request, 
mockedMessageExecutionContext());

-- 
To stop receiving notification emails like this one, please contact
bschucha...@apache.org.

Reply via email to