You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2018/09/27 14:11:45 UTC
nifi git commit: NIFI-5634: When merging RPG entities,
ensure that we only send back the ports that are common to all nodes
- even if that means sending back no ports
Repository: nifi
Updated Branches:
refs/heads/master ca70dbbb3 -> ad4c886fb
NIFI-5634: When merging RPG entities, ensure that we only send back the ports that are common to all nodes - even if that means sending back no ports
This closes #3030
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/ad4c886f
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/ad4c886f
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/ad4c886f
Branch: refs/heads/master
Commit: ad4c886fbf2af2bc98ebe12200c4b119df67b90f
Parents: ca70dbb
Author: Mark Payne <ma...@hotmail.com>
Authored: Tue Sep 25 09:05:06 2018 -0400
Committer: Matt Gilman <ma...@gmail.com>
Committed: Thu Sep 27 10:11:15 2018 -0400
----------------------------------------------------------------------
.../manager/RemoteProcessGroupEntityMerger.java | 14 +++-
.../RemoteProcessGroupEntityMergerTest.java | 79 ++++++++++++++++++++
2 files changed, 91 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/ad4c886f/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMerger.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMerger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMerger.java
index 5207524..d210873 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMerger.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMerger.java
@@ -23,6 +23,7 @@ import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO;
import org.apache.nifi.web.api.dto.status.RemoteProcessGroupStatusDTO;
import org.apache.nifi.web.api.entity.RemoteProcessGroupEntity;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -124,11 +125,20 @@ public class RemoteProcessGroupEntityMerger implements ComponentEntityMerger<Rem
}
if (remoteProcessGroupContents != null) {
- if (mergedInputPorts != null && !mergedInputPorts.isEmpty()) {
+ if (mergedInputPorts == null) {
+ remoteProcessGroupContents.setInputPorts(Collections.emptySet());
+ clientDto.setInputPortCount(0);
+ } else {
remoteProcessGroupContents.setInputPorts(mergedInputPorts);
+ clientDto.setInputPortCount(mergedInputPorts.size());
}
- if (mergedOutputPorts != null && !mergedOutputPorts.isEmpty()) {
+
+ if (mergedOutputPorts == null) {
+ remoteProcessGroupContents.setOutputPorts(Collections.emptySet());
+ clientDto.setOutputPortCount(0);
+ } else {
remoteProcessGroupContents.setOutputPorts(mergedOutputPorts);
+ clientDto.setOutputPortCount(mergedOutputPorts.size());
}
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/ad4c886f/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/test/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMergerTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/test/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMergerTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/test/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMergerTest.java
index ac73df7..e519a4b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/test/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMergerTest.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/test/java/org/apache/nifi/cluster/manager/RemoteProcessGroupEntityMergerTest.java
@@ -122,4 +122,83 @@ public class RemoteProcessGroupEntityMergerTest {
assertEquals(1, entity1.getComponent().getContents().getOutputPorts().size());
assertEquals("out1", entity1.getComponent().getContents().getOutputPorts().iterator().next().getName());
}
+
+ @Test
+ public void testNoPortsAvailableOnOneNode() throws Exception {
+ final NodeIdentifier node1 = new NodeIdentifier("node-1", "host-1", 8080, "host-1", 19998, null, null, null, false);
+ final NodeIdentifier node2 = new NodeIdentifier("node-2", "host-2", 8081, "host-2", 19999, null, null, null, false);
+
+ final PermissionsDTO permissions = new PermissionsDTO();
+ permissions.setCanRead(true);
+ permissions.setCanWrite(true);
+
+ final PermissionsDTO opsPermissions = new PermissionsDTO();
+ opsPermissions.setCanRead(false);
+ opsPermissions.setCanWrite(false);
+
+ final RemoteProcessGroupStatusDTO status = new RemoteProcessGroupStatusDTO();
+ status.setAggregateSnapshot(new RemoteProcessGroupStatusSnapshotDTO());
+
+ final RemoteProcessGroupPortDTO in1_1 = new RemoteProcessGroupPortDTO();
+ in1_1.setName("in1");
+
+ final RemoteProcessGroupPortDTO in1_2 = new RemoteProcessGroupPortDTO();
+ in1_2.setName("in2");
+
+ final Set<RemoteProcessGroupPortDTO> inputs1 = new HashSet<>();
+ inputs1.add(in1_1);
+ inputs1.add(in1_2);
+
+ final RemoteProcessGroupPortDTO out1_1 = new RemoteProcessGroupPortDTO();
+ out1_1.setName("out1");
+
+ final Set<RemoteProcessGroupPortDTO> outputs1 = new HashSet<>();
+ outputs1.add(out1_1);
+
+ final RemoteProcessGroupContentsDTO contents1 = new RemoteProcessGroupContentsDTO();
+ contents1.setInputPorts(inputs1);
+ contents1.setOutputPorts(outputs1);
+
+ final RemoteProcessGroupDTO rpg1 = new RemoteProcessGroupDTO();
+ rpg1.setContents(contents1);
+ rpg1.setInputPortCount(2);
+ rpg1.setOutputPortCount(1);
+
+ final RemoteProcessGroupEntity entity1 = new RemoteProcessGroupEntity();
+ entity1.setPermissions(permissions);
+ entity1.setOperatePermissions(opsPermissions);
+ entity1.setStatus(status);
+ entity1.setComponent(rpg1);
+
+ final Set<RemoteProcessGroupPortDTO> inputs2 = new HashSet<>();
+ final Set<RemoteProcessGroupPortDTO> outputs2 = new HashSet<>();
+
+ final RemoteProcessGroupContentsDTO contents2 = new RemoteProcessGroupContentsDTO();
+ contents2.setInputPorts(inputs2);
+ contents2.setOutputPorts(outputs2);
+
+ final RemoteProcessGroupDTO rpg2 = new RemoteProcessGroupDTO();
+ rpg2.setContents(contents2);
+ rpg2.setInputPortCount(0);
+ rpg2.setOutputPortCount(0);
+
+ final RemoteProcessGroupEntity entity2 = new RemoteProcessGroupEntity();
+ entity2.setPermissions(permissions);
+ entity2.setOperatePermissions(opsPermissions);
+ entity2.setStatus(status);
+ entity2.setComponent(rpg2);
+
+ final Map<NodeIdentifier, RemoteProcessGroupEntity> nodeMap = new HashMap<>();
+ nodeMap.put(node1, entity1);
+ nodeMap.put(node2, entity2);
+
+ final RemoteProcessGroupEntityMerger merger = new RemoteProcessGroupEntityMerger();
+ merger.merge(entity1, nodeMap);
+
+ // should only include ports in common to all rpg's
+ assertEquals(0, entity1.getComponent().getContents().getInputPorts().size());
+ assertEquals(0, entity1.getComponent().getContents().getOutputPorts().size());
+ assertEquals(0, entity1.getComponent().getInputPortCount().intValue());
+ assertEquals(0, entity1.getComponent().getOutputPortCount().intValue());
+ }
}