mirror of https://github.com/apache/nifi.git
NIFI-2535: Do not include properties that are unset in flow fingerprint. This allows a new property to be added to a processor without affecting the fingerprint, if the value is never set
This closes #829. Signed-off-by: Bryan Bende <bbende@apache.org>
This commit is contained in:
parent
76a4a2c48b
commit
25a2fac453
|
@ -610,7 +610,7 @@ public final class FingerprintFactory {
|
||||||
// If we have a Processor to use, first determine if the value given is the default value for the specified property.
|
// If we have a Processor to use, first determine if the value given is the default value for the specified property.
|
||||||
// If so, we do not add the property to the fingerprint.
|
// If so, we do not add the property to the fingerprint.
|
||||||
// We do this because if a Processor is updated to add a new property, whenever we connect to the cluster, we have issues because
|
// We do this because if a Processor is updated to add a new property, whenever we connect to the cluster, we have issues because
|
||||||
// the NCM's flow comes from disk, where the flow.xml doesn't have the new property but our FlowController does have the new property.
|
// the Cluster Coordinator's flow comes from disk, where the flow.xml doesn't have the new property but our FlowController does have the new property.
|
||||||
// This causes the fingerprints not to match. As a result, we just ignore default values, and this resolves the issue.
|
// This causes the fingerprints not to match. As a result, we just ignore default values, and this resolves the issue.
|
||||||
if (processor != null) {
|
if (processor != null) {
|
||||||
final String propName = DomUtils.getChildElementsByTagName(propElem, "name").get(0).getTextContent();
|
final String propName = DomUtils.getChildElementsByTagName(propElem, "name").get(0).getTextContent();
|
||||||
|
@ -627,11 +627,16 @@ public final class FingerprintFactory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// name
|
// check if there is a value
|
||||||
|
String propValue = getFirstValue(DomUtils.getChildNodesByTagName(propElem, "value"), null);
|
||||||
|
if (propValue == null) {
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
// append name
|
||||||
appendFirstValue(builder, DomUtils.getChildNodesByTagName(propElem, "name"));
|
appendFirstValue(builder, DomUtils.getChildNodesByTagName(propElem, "name"));
|
||||||
|
|
||||||
// value
|
// append value
|
||||||
String propValue = getFirstValue(DomUtils.getChildNodesByTagName(propElem, "value"));
|
|
||||||
if (isEncrypted(propValue)) {
|
if (isEncrypted(propValue)) {
|
||||||
propValue = decrypt(propValue);
|
propValue = decrypt(propValue);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue