Matthew Clarke created NIFI-7255:
------------------------------------

             Summary: nifi.properties configuration change can result in 
duplicate nodes listed in Cluster UI
                 Key: NIFI-7255
                 URL: https://issues.apache.org/jira/browse/NIFI-7255
             Project: Apache NiFi
          Issue Type: Bug
          Components: Core Framework
    Affects Versions: 1.10.0, 1.9.0, 1.8.0, 1.7.0
            Reporter: Matthew Clarke


The elements that go in to coming up with the "Node identifier" which is then 
store in local state on a NiFi node include:

/**

the unique identifier for the node
*/
private final String id; /**
the IP or hostname to use for sending requests to the node's external
interface
*/
private final String apiAddress; /**
the port to use use for sending requests to the node's external interface,
this can be HTTP API port or HTTPS API port depending on whether //TODO: .
*/
private final int apiPort; /**
the IP or hostname to use for sending requests to the node's internal
interface
*/
private final String socketAddress; /**
the port to use for sending requests to the node's internal interface
*/
private final int socketPort; /**
The IP or hostname to use for sending FlowFiles when load balancing a connection
*/
private final String loadBalanceAddress; /**
the port to use for sending FlowFiles when load balancing a connection
*/
private final int loadBalancePort; /**
the IP or hostname that external clients should use to communicate with this 
node via Site-to-Site
*/
private final String siteToSiteAddress; /**
the port that external clients should use to communicate with this node via 
Site-to-Site RAW Socket protocol
*/
private final Integer siteToSitePort; /**
the port that external clients should use to communicate with this node via 
Site-to-Site HTTP protocol,
this can be HTTP API port or HTTPS API port depending on whether 
siteToSiteSecure or not.
*/
private final Integer siteToSiteHttpApiPort; /**
whether or not site-to-site communications with this node are secure
*/
private final Boolean siteToSiteSecure; private final Set<String> 
nodeIdentities;
With the following fields being used to determine quality:
apiAddress
apiPort
socketAddress
socketPort
If for example the apiPort is changed by switching from 8080 for (http) to 8443 
(for https),  the node will show up twice in the in the cluster UI ( 
hostname:8443 --> connected and hostname:8080 --> disconnected).   Having these 
disconnected nodes will prevent changes to the UI.  Worse yet is that ZK may 
report <hostname> as the elected Cluster coordinator and end up having both the 
8080 and 8443 node both being marked as the cluster coordinator.  Then you may 
not even be able to access the cluster because requests fails to replicate to 
the Cluster coordinator because it is not connected.

Resolving this issue requires users to shutdown NiFi, delete the local state 
directory contents, and restart NiFi.   

Downside to this resolution is any local state retained for NiFi components 
(for example processors) is lost as well.

Suggested solution here is for NiFi to retain current node identifier field 
configuration values.  If on restart loaded configurations show any change to 
those values, NiFi should clear out the previous retained node ids and create 
all new node Ids.

Might also make sense to move the stored out of local state to make manual 
removal of this information possible without affecting state stored by 
components found in the flow.xml.

 

The following Jira only addressed what specific configuration change that can 
result in this issue:

https://jira.apache.org/jira/browse/NIFI-5672



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to