You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2016/12/14 20:46:45 UTC
nifi git commit: NIFI-3129: When adding controller services to a
snippet, ensure that we don't add the service multiple times,
even when it's referenced by child process groups. This closes #1284
Repository: nifi
Updated Branches:
refs/heads/support/nifi-1.0.x f477590e7 -> fc2941553
NIFI-3129: When adding controller services to a snippet, ensure that we don't add the service multiple times, even when it's referenced by child process groups. This closes #1284
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/fc294155
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/fc294155
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/fc294155
Branch: refs/heads/support/nifi-1.0.x
Commit: fc2941553ecea7a29d6e74ac0fa93c8533506121
Parents: f477590
Author: Mark Payne <ma...@hotmail.com>
Authored: Wed Nov 30 11:07:32 2016 -0500
Committer: Mark Payne <ma...@hotmail.com>
Committed: Wed Dec 14 15:40:38 2016 -0500
----------------------------------------------------------------------
.../apache/nifi/util/ComponentIdGenerator.java | 8 +++++++-
.../org/apache/nifi/web/util/SnippetUtils.java | 19 +++++++++++++------
2 files changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/fc294155/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/util/ComponentIdGenerator.java
----------------------------------------------------------------------
diff --git a/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/util/ComponentIdGenerator.java b/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/util/ComponentIdGenerator.java
index 49f00b8..51cf0c0 100644
--- a/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/util/ComponentIdGenerator.java
+++ b/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/util/ComponentIdGenerator.java
@@ -19,6 +19,9 @@ package org.apache.nifi.util;
import java.security.SecureRandom;
import java.util.UUID;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* IMPORTANT: This component is not part of public API!
* ====================================================
@@ -48,6 +51,7 @@ import java.util.UUID;
* </p>
*/
public class ComponentIdGenerator {
+ private static final Logger logger = LoggerFactory.getLogger(ComponentIdGenerator.class);
public static final Object lock = new Object();
@@ -97,6 +101,8 @@ public class ComponentIdGenerator {
long clockSequenceHi = clockSequence;
clockSequenceHi <<= 48;
lsb = clockSequenceHi | lsb;
- return new UUID(time, lsb);
+ final UUID uuid = new UUID(time, lsb);
+ logger.debug("Generating UUID {} for msb={}, lsb={}, ensureUnique={}", uuid, msb, lsb, ensureUnique);
+ return uuid;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/fc294155/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java
index 4f8afde..c5baa8c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/util/SnippetUtils.java
@@ -110,6 +110,7 @@ public final class SnippetUtils {
}
final Set<ControllerServiceDTO> controllerServices = new HashSet<>();
+ final Set<ControllerServiceDTO> allServicesReferenced = new HashSet<>();
// add any processors
final Set<ProcessorDTO> processors = new LinkedHashSet<>();
@@ -122,7 +123,10 @@ public final class SnippetUtils {
processors.add(dtoFactory.createProcessorDto(processor));
if (includeControllerServices) {
- controllerServices.addAll(getControllerServices(processor.getProperties()));
+ // Include all referenced services that are not already included in this snippet.
+ getControllerServices(processor.getProperties()).stream()
+ .filter(svc -> allServicesReferenced.add(svc))
+ .forEach(svc -> controllerServices.add(svc));
}
}
}
@@ -199,7 +203,7 @@ public final class SnippetUtils {
final ProcessGroupDTO childGroupDto = dtoFactory.createProcessGroupDto(childGroup, recurse);
processGroups.add(childGroupDto);
- addControllerServices(childGroup, childGroupDto);
+ addControllerServices(childGroup, childGroupDto, allServicesReferenced);
}
}
@@ -241,7 +245,7 @@ public final class SnippetUtils {
return snippetDto;
}
- private void addControllerServices(final ProcessGroup group, final ProcessGroupDTO dto) {
+ private void addControllerServices(final ProcessGroup group, final ProcessGroupDTO dto, final Set<ControllerServiceDTO> allServicesReferenced) {
final FlowSnippetDTO contents = dto.getContents();
if (contents == null) {
return;
@@ -250,8 +254,10 @@ public final class SnippetUtils {
final Set<ControllerServiceDTO> controllerServices = new HashSet<>();
for (final ProcessorNode procNode : group.getProcessors()) {
- final Set<ControllerServiceDTO> servicesForProcessor = getControllerServices(procNode.getProperties());
- controllerServices.addAll(servicesForProcessor);
+ // Include all referenced services that are not already included in this snippet.
+ getControllerServices(procNode.getProperties()).stream()
+ .filter(svc -> allServicesReferenced.add(svc))
+ .forEach(svc -> controllerServices.add(svc));
}
contents.setControllerServices(controllerServices);
@@ -266,7 +272,7 @@ public final class SnippetUtils {
continue;
}
- addControllerServices(childGroup, childDto);
+ addControllerServices(childGroup, childDto, allServicesReferenced);
}
}
@@ -826,6 +832,7 @@ public final class SnippetUtils {
uuid = new UUID(msb, seedId.getLeastSignificantBits());
}
}
+ logger.debug("Generating UUID {} from currentId={}, seed={}, isCopy={}", uuid, currentId, seed, isCopy);
return uuid.toString();
}