Github user ijokarumawak commented on the issue:
https://github.com/apache/nifi/pull/1332
This PR contains two commits for easier review process (I hope).
## 1st commit: Added RPG settings to fingerprint
The first commit adds RemoteProcessGroup's (RPG) timeout, yieldPeriod,
transportProtocol, proxyHost, proxyPort, proxyUser and proxyPassword to flow
fingerprint.
This commit changes NiFi cluster behavior in a scenario below:
- For example, there are 3 nodes (node1, 2 and 3) in a cluster, and a RPG
is used in a flow
- Node2 gets disconnected, after these steps:

- Case1: The cluster (node1 and node3) remove node2 from the cluster, and
update the RPG setting, such as Transport Protocol. Then node2 is **restarted**.
- Case2: Node2 starts running as a standalone mode since it is disconnected
from the cluster. It's able to modify the flow from node2 UI. Update the RPG
setting such as Transport Protocol. Then node2 is **reconnected** by the
cluster.
With above case 1 and 2, the results will be different with this fix.
- Case1:
- Before fix: Node2 can join the cluster because flow of Node2 and the
one in the cluster are determined as equal by fingerprint. Node2 will update
its flow with the one in the cluster. This is problematic when a cluster is
entirely restarted. An old flow can be elected and possibly overwrites the
latest flow.
- After fix: Node2 CANNOT join the cluster since it has different flow
than the cluster. This ensures each node has the latest flow.
- Case2:
- Before fix: Node2 can join the cluster. It keeps working with the old
flow! E.g. the latest flow uses HTTP as transport protocol on Node 1 and 3
while Node2 uses RAW protocol.
- After fix: Node2 CANNOT join the cluster. This ensures each node has
the latest flow when it gets reconnected.
For both cases, expected recover operation would be: DataFlowManager
removes the flow.xml.gz on Node2 then restart it to join the cluster.
Tested above scenarios before and after applying this fix. Confirmed it
works as written above.
## 2nd commit: Removed unused private methods from FingerprintFactory
FingerprintFactory has two types of fingerprinting method, from XML
elements and from DTO. However, the ones from DTO are not used by
anywhere. IDE didn't report those private methods unused because
addProcessGroupFingerprint and addSnippetFingerprint call each other,
but those are not used from outside actually.
This commit removes those private methods to keep the class clean to
avoid unnecessary code maintenance and tests.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---