mirror of https://github.com/apache/nifi.git
NIFI-4763: Ignore differences in components' Bundle Version when comparing a local flow to a flow in the registry
This closes #2393. Signed-off-by: Bryan Bende <bbende@apache.org>
This commit is contained in:
parent
83701632fb
commit
d93d538177
|
@ -3252,6 +3252,11 @@ public final class StandardProcessGroup implements ProcessGroup {
|
||||||
|
|
||||||
final Set<String> updatedVersionedComponentIds = new HashSet<>();
|
final Set<String> updatedVersionedComponentIds = new HashSet<>();
|
||||||
for (final FlowDifference diff : flowComparison.getDifferences()) {
|
for (final FlowDifference diff : flowComparison.getDifferences()) {
|
||||||
|
// Ignore these as local differences for now because we can't do anything with it
|
||||||
|
if (diff.getDifferenceType() == DifferenceType.BUNDLE_CHANGED) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// If this update adds a new Controller Service, then we need to check if the service already exists at a higher level
|
// If this update adds a new Controller Service, then we need to check if the service already exists at a higher level
|
||||||
// and if so compare our VersionedControllerService to the existing service.
|
// and if so compare our VersionedControllerService to the existing service.
|
||||||
if (diff.getDifferenceType() == DifferenceType.COMPONENT_ADDED) {
|
if (diff.getDifferenceType() == DifferenceType.COMPONENT_ADDED) {
|
||||||
|
@ -4187,7 +4192,9 @@ public final class StandardProcessGroup implements ProcessGroup {
|
||||||
|
|
||||||
final FlowComparator flowComparator = new StandardFlowComparator(snapshotFlow, currentFlow, getAncestorGroupServiceIds(), new EvolvingDifferenceDescriptor());
|
final FlowComparator flowComparator = new StandardFlowComparator(snapshotFlow, currentFlow, getAncestorGroupServiceIds(), new EvolvingDifferenceDescriptor());
|
||||||
final FlowComparison comparison = flowComparator.compare();
|
final FlowComparison comparison = flowComparator.compare();
|
||||||
final Set<FlowDifference> differences = comparison.getDifferences();
|
final Set<FlowDifference> differences = comparison.getDifferences().stream()
|
||||||
|
.filter(difference -> difference.getDifferenceType() != DifferenceType.BUNDLE_CHANGED)
|
||||||
|
.collect(Collectors.toCollection(HashSet::new));
|
||||||
|
|
||||||
LOG.debug("There are {} differences between this Local Flow and the Versioned Flow: {}", differences.size(), differences);
|
LOG.debug("There are {} differences between this Local Flow and the Versioned Flow: {}", differences.size(), differences);
|
||||||
return differences;
|
return differences;
|
||||||
|
|
|
@ -3964,6 +3964,7 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
|
||||||
|
|
||||||
final Set<AffectedComponentEntity> affectedComponents = comparison.getDifferences().stream()
|
final Set<AffectedComponentEntity> affectedComponents = comparison.getDifferences().stream()
|
||||||
.filter(difference -> difference.getDifferenceType() != DifferenceType.COMPONENT_ADDED) // components that are added are not components that will be affected in the local flow.
|
.filter(difference -> difference.getDifferenceType() != DifferenceType.COMPONENT_ADDED) // components that are added are not components that will be affected in the local flow.
|
||||||
|
.filter(difference -> difference.getDifferenceType() != DifferenceType.BUNDLE_CHANGED)
|
||||||
.map(difference -> {
|
.map(difference -> {
|
||||||
final VersionedComponent localComponent = difference.getComponentA();
|
final VersionedComponent localComponent = difference.getComponentA();
|
||||||
|
|
||||||
|
@ -3995,6 +3996,11 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
|
||||||
.collect(Collectors.toCollection(HashSet::new));
|
.collect(Collectors.toCollection(HashSet::new));
|
||||||
|
|
||||||
for (final FlowDifference difference : comparison.getDifferences()) {
|
for (final FlowDifference difference : comparison.getDifferences()) {
|
||||||
|
// Ignore these as local differences for now because we can't do anything with it
|
||||||
|
if (difference.getDifferenceType() == DifferenceType.BUNDLE_CHANGED) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
final VersionedComponent localComponent = difference.getComponentA();
|
final VersionedComponent localComponent = difference.getComponentA();
|
||||||
if (localComponent == null) {
|
if (localComponent == null) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -118,6 +118,7 @@ import org.apache.nifi.registry.flow.VersionControlInformation;
|
||||||
import org.apache.nifi.registry.flow.VersionedComponent;
|
import org.apache.nifi.registry.flow.VersionedComponent;
|
||||||
import org.apache.nifi.registry.flow.VersionedFlowState;
|
import org.apache.nifi.registry.flow.VersionedFlowState;
|
||||||
import org.apache.nifi.registry.flow.VersionedFlowStatus;
|
import org.apache.nifi.registry.flow.VersionedFlowStatus;
|
||||||
|
import org.apache.nifi.registry.flow.diff.DifferenceType;
|
||||||
import org.apache.nifi.registry.flow.diff.FlowComparison;
|
import org.apache.nifi.registry.flow.diff.FlowComparison;
|
||||||
import org.apache.nifi.registry.flow.diff.FlowDifference;
|
import org.apache.nifi.registry.flow.diff.FlowDifference;
|
||||||
import org.apache.nifi.registry.flow.mapping.InstantiatedVersionedComponent;
|
import org.apache.nifi.registry.flow.mapping.InstantiatedVersionedComponent;
|
||||||
|
@ -2219,6 +2220,11 @@ public final class DtoFactory {
|
||||||
final Map<ComponentDifferenceDTO, List<DifferenceDTO>> differencesByComponent = new HashMap<>();
|
final Map<ComponentDifferenceDTO, List<DifferenceDTO>> differencesByComponent = new HashMap<>();
|
||||||
|
|
||||||
for (final FlowDifference difference : comparison.getDifferences()) {
|
for (final FlowDifference difference : comparison.getDifferences()) {
|
||||||
|
// Ignore these as local differences for now because we can't do anything with it
|
||||||
|
if (difference.getDifferenceType() == DifferenceType.BUNDLE_CHANGED) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
final ComponentDifferenceDTO componentDiff = createComponentDifference(difference);
|
final ComponentDifferenceDTO componentDiff = createComponentDifference(difference);
|
||||||
final List<DifferenceDTO> differences = differencesByComponent.computeIfAbsent(componentDiff, key -> new ArrayList<>());
|
final List<DifferenceDTO> differences = differencesByComponent.computeIfAbsent(componentDiff, key -> new ArrayList<>());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue