[
https://issues.apache.org/jira/browse/NIFI-2159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15364849#comment-15364849
]
ASF GitHub Bot commented on NIFI-2159:
--------------------------------------
GitHub user markap14 opened a pull request:
https://github.com/apache/nifi/pull/612
NIFI-2159: Fixed bug that caused relationship names not to get added to
fingerprint
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/markap14/nifi NIFI-2159
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/nifi/pull/612.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #612
----
commit 6063c7df62d4e9f5216a67d6e981a2fe710c2f19
Author: Mark Payne <[email protected]>
Date: 2016-07-06T18:35:51Z
NIFI-2159: Fixed bug that caused relationship names not to get added to
fingerprint
----
> Fingerprint not detecting flow.xml differences
> ----------------------------------------------
>
> Key: NIFI-2159
> URL: https://issues.apache.org/jira/browse/NIFI-2159
> Project: Apache NiFi
> Issue Type: Bug
> Affects Versions: 0.6.1
> Reporter: Brandon DeVries
> Priority: Blocker
> Fix For: 1.0.0, 0.7.0
>
>
> We have very occasionally observed situations where the flow.xml across a
> cluster was able to become inconsistent, resulting in unexpected behavior.
> While investigating, the following issue was found. While we are not 100%
> that this problem is the one we were looking for, it is definitely an issue...
> Within the FingerprintFactory, the text values from <relationship> tags were
> always being appended to the fingerprint as a default value of "NO_VALUE"
> regardless of whether or not they actually contained a value. This can
> manifest as two different flow.xml files being considered the same when they
> have the same number of relationship tags, even though those tags contain
> different values. Here is a suggested fix:
> Change the following in FingerprintFactory.java\[1\]:
> {code}
> final List<Element> sortedRelationshipElems = sortElements(relationshipElems,
> getConnectionRelationshipsComparator());
> for (final Element relationshipElem : sortedRelationshipElems) {
> addConnectionRelationshipFingerprint(builder, relationshipElem);
> }
> {code}
> To:
> {code}
> for (int i = 0;i<relationshipElems.getLength();i++) {
> builder.append(getValue(relationshipElems.item(i),"NO_VALUE"));
> }
> {code}
> The following unit test will show that the value of the relationship is now
> being used in the fingerprint:
> {code}
> @Test
> public void testResourceValueInFingerprint() throws IOException{
> final String fp1 =
> fingerprinter.createFingerprint(getResourceBytes("/nifi/fingerprint/flow1a.xml"),null);
> assertEquals(3,StringUtils.countMatches(fp1,"success"));
> }
> {code}
> Additionally, the <name> tag isn't being included in the fingerprint either.
> While the following solution has not been tested, it is possible that this
> could be fixed by adding the following line to the addConnectionFingerprint()
> method \[2\]:
> {code}
> appendFirstValue(builder, DomUtils.getChildNodesByTagName(connectionElem,
> "name"));
> {code}
> \[1\]
> https://github.com/apache/nifi/blob/270944ec692e12c221cdff202bdab56309dfcfd7/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/fingerprint/FingerprintFactory.java#L861-864
> \[2\]
> https://github.com/apache/nifi/blob/270944ec692e12c221cdff202bdab56309dfcfd7/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/fingerprint/FingerprintFactory.java#L857
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)