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

mhubail pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 138d41d  [NO ISSUE][REP] Add node id to replica identifier
138d41d is described below

commit 138d41d1fb1409c67724c47f38aa6776dc02282f
Author: Murtadha Hubail <[email protected]>
AuthorDate: Thu Aug 5 22:29:31 2021 +0300

    [NO ISSUE][REP] Add node id to replica identifier
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    
    - Add node id to replica identifier.
    - Adapt test cases.
    
    Change-Id: I1cd37be58617f9b2c692f64659c5b9dcc5a8abda
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/12683
    Tested-by: Jenkins <[email protected]>
    Tested-by: Murtadha Hubail <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../apache/asterix/api/http/server/StorageApiServlet.java    |  8 +++++---
 .../main/java/org/apache/asterix/app/nc/ReplicaManager.java  | 11 ++---------
 .../java/org/apache/asterix/test/common/TestExecutor.java    |  5 +++--
 .../results/replication/add_replica/add_replica.2.adm        |  1 +
 .../runtimets/results/replication/bulkload/bulkload.3.adm    |  1 +
 .../runtimets/results/replication/bulkload/bulkload.4.adm    |  1 +
 .../replication/flushed_component/flushed_component.2.adm    |  1 +
 .../mem_component_recovery/mem_component_recovery.3.adm      |  1 +
 .../mem_component_recovery/mem_component_recovery.4.adm      |  1 +
 .../replication/metadata_failover/metadata_failover.2.adm    |  1 +
 .../replication/release_partition/release_partition.2.adm    |  1 +
 .../org/apache/asterix/common/storage/ReplicaIdentifier.java | 12 +++++++++---
 .../resync_failed_replica/resync_failed_replica.10.adm       |  1 +
 .../resync_failed_replica/resync_failed_replica.2.adm        |  1 +
 .../resync_failed_replica/resync_failed_replica.6.adm        |  1 +
 15 files changed, 30 insertions(+), 17 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
index d7d5994..26fee28 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
@@ -135,6 +135,7 @@ public class StorageApiServlet extends AbstractServlet {
                 final ObjectNode replicaJson = 
OBJECT_MAPPER.createObjectNode();
                 replicaJson.put("location", 
toHostPort(replica.getIdentifier().getLocation()));
                 replicaJson.put("status", replica.getStatus().toString());
+                replicaJson.put("nodeId", replica.getIdentifier().getNodeId());
                 replicasArray.add(replicaJson);
             }
             partitionJson.set("replicas", replicasArray);
@@ -167,11 +168,12 @@ public class StorageApiServlet extends AbstractServlet {
         final String partition = request.getParameter("partition");
         final String host = request.getParameter("host");
         final String port = request.getParameter("port");
-        if (partition == null || host == null || port == null) {
+        final String nodeId = request.getParameter("nodeId");
+        if (partition == null || host == null || port == null || nodeId == 
null) {
             return null;
         }
-        final InetSocketAddress replicaAddress = new InetSocketAddress(host, 
Integer.valueOf(port));
-        return ReplicaIdentifier.of(Integer.valueOf(partition), 
replicaAddress);
+        final InetSocketAddress replicaAddress = new InetSocketAddress(host, 
Integer.parseInt(port));
+        return ReplicaIdentifier.of(Integer.parseInt(partition), nodeId, 
replicaAddress);
     }
 
     private void processPromote(IServletRequest request, IServletResponse 
response) throws HyracksDataException {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
index ad70cf4..36e2d56 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
@@ -18,7 +18,6 @@
  */
 package org.apache.asterix.app.nc;
 
-import java.net.InetSocketAddress;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -37,9 +36,7 @@ import 
org.apache.asterix.common.transactions.IRecoveryManager;
 import org.apache.asterix.replication.api.PartitionReplica;
 import 
org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository;
 import org.apache.hyracks.api.client.NodeStatus;
-import org.apache.hyracks.api.config.IApplicationConfig;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.control.common.controllers.NCConfig;
 import org.apache.hyracks.control.nc.NodeControllerService;
 import org.apache.hyracks.storage.common.LocalResource;
 import org.apache.hyracks.util.annotations.ThreadSafe;
@@ -152,11 +149,7 @@ public class ReplicaManager implements IReplicaManager {
     }
 
     private boolean isSelf(ReplicaIdentifier id) {
-        IApplicationConfig appConfig = 
appCtx.getServiceContext().getAppConfig();
-        String host = 
appConfig.getString(NCConfig.Option.REPLICATION_LISTEN_ADDRESS);
-        int port = appConfig.getInt(NCConfig.Option.REPLICATION_LISTEN_PORT);
-
-        final InetSocketAddress replicaAddress = new InetSocketAddress(host, 
port);
-        return id.equals(ReplicaIdentifier.of(id.getPartition(), 
replicaAddress));
+        String nodeId = appCtx.getServiceContext().getNodeId();
+        return id.getNodeId().equals(nodeId);
     }
 }
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index f1bf63d..9945570 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -2655,8 +2655,8 @@ public class TestExecutor {
         String partition = command[2];
         String destNode = command[3];
         final InetSocketAddress destAddress = 
getNcReplicationAddress(destNode);
-        List<Parameter> parameters = new ArrayList<>(3);
-        Stream.of("partition", "host", "port").forEach(arg -> {
+        List<Parameter> parameters = new ArrayList<>(4);
+        Stream.of("partition", "host", "port", "nodeId").forEach(arg -> {
             Parameter p = new Parameter();
             p.setName(arg);
             p.setType(ParameterTypeEnum.STRING);
@@ -2665,6 +2665,7 @@ public class TestExecutor {
         parameters.get(0).setValue(partition);
         parameters.get(1).setValue(destAddress.getHostName());
         parameters.get(2).setValue(String.valueOf(destAddress.getPort()));
+        parameters.get(3).setValue(destNode);
         final HttpUriRequest httpUriRequest = constructPostMethod(endpoint, 
parameters);
         final HttpResponse httpResponse = executeHttpRequest(httpUriRequest);
         Assert.assertEquals(HttpStatus.SC_OK, 
httpResponse.getStatusLine().getStatusCode());
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/add_replica/add_replica.2.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/add_replica/add_replica.2.adm
index e48cbcf..5f87a0c 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/add_replica/add_replica.2.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/add_replica/add_replica.2.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "IN_SYNC"
   } ]
 } ]
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.3.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.3.adm
index a6afbb4..677a9f0 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.3.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.3.adm
@@ -2,6 +2,7 @@
   "partition" : 2,
   "replicas" : [ {
     "location" : "127.0.0.1:2001",
+    "nodeId" : "asterix_nc1",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.4.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.4.adm
index 53648a2..6c227fc 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.4.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/bulkload/bulkload.4.adm
@@ -2,6 +2,7 @@
   "partition" : 3,
   "replicas" : [ {
     "location" : "127.0.0.1:2001",
+    "nodeId" : "asterix_nc1",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/flushed_component/flushed_component.2.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/flushed_component/flushed_component.2.adm
index 7e92c87..a34a57a 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/flushed_component/flushed_component.2.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/flushed_component/flushed_component.2.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.3.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.3.adm
index a6afbb4..677a9f0 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.3.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.3.adm
@@ -2,6 +2,7 @@
   "partition" : 2,
   "replicas" : [ {
     "location" : "127.0.0.1:2001",
+    "nodeId" : "asterix_nc1",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.4.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.4.adm
index 53648a2..6c227fc 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.4.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/mem_component_recovery/mem_component_recovery.4.adm
@@ -2,6 +2,7 @@
   "partition" : 3,
   "replicas" : [ {
     "location" : "127.0.0.1:2001",
+    "nodeId" : "asterix_nc1",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/metadata_failover/metadata_failover.2.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/metadata_failover/metadata_failover.2.adm
index 7e92c87..a34a57a 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/metadata_failover/metadata_failover.2.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/metadata_failover/metadata_failover.2.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/release_partition/release_partition.2.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/release_partition/release_partition.2.adm
index e48cbcf..5f87a0c 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/release_partition/release_partition.2.adm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/replication/release_partition/release_partition.2.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "IN_SYNC"
   } ]
 } ]
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ReplicaIdentifier.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ReplicaIdentifier.java
index c4bb74c..e14d005 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ReplicaIdentifier.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ReplicaIdentifier.java
@@ -26,16 +26,18 @@ public class ReplicaIdentifier {
 
     private final int partition;
     private final String id;
+    private final String nodeId;
     private volatile InetSocketAddress location;
 
-    private ReplicaIdentifier(int partition, InetSocketAddress location) {
+    private ReplicaIdentifier(int partition, String nodeId, InetSocketAddress 
location) {
         this.partition = partition;
+        this.nodeId = nodeId;
         this.location = location;
         id = partition + "@" + location.getHostString() + ":" + 
location.getPort();
     }
 
-    public static ReplicaIdentifier of(int partition, InetSocketAddress 
location) {
-        return new ReplicaIdentifier(partition, location);
+    public static ReplicaIdentifier of(int partition, String nodeId, 
InetSocketAddress location) {
+        return new ReplicaIdentifier(partition, nodeId, location);
     }
 
     public int getPartition() {
@@ -52,6 +54,10 @@ public class ReplicaIdentifier {
         return location;
     }
 
+    public String getNodeId() {
+        return nodeId;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) {
diff --git 
a/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.10.adm
 
b/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.10.adm
index 7e92c87..a34a57a 100644
--- 
a/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.10.adm
+++ 
b/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.10.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.2.adm
 
b/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.2.adm
index 7e92c87..a34a57a 100644
--- 
a/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.2.adm
+++ 
b/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.2.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "IN_SYNC"
   } ]
 } ]
\ No newline at end of file
diff --git 
a/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.6.adm
 
b/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.6.adm
index 4da3d42..348beca 100644
--- 
a/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.6.adm
+++ 
b/asterixdb/asterix-server/src/test/resources/integrationts/replication/results/failover/resync_failed_replica/resync_failed_replica.6.adm
@@ -2,6 +2,7 @@
   "partition" : 0,
   "replicas" : [ {
     "location" : "127.0.0.1:2002",
+    "nodeId" : "asterix_nc2",
     "status" : "DISCONNECTED"
   } ]
 } ]
\ No newline at end of file

Reply via email to