You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Simon Bence (Jira)" <ji...@apache.org> on 2020/07/09 08:44:00 UTC

[jira] [Updated] (NIFI-7255) nifi.properties configuration change can result in duplicate nodes listed in Cluster UI

     [ https://issues.apache.org/jira/browse/NIFI-7255?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Simon Bence updated NIFI-7255:
------------------------------
    Status: Patch Available  (was: In Progress)

https://github.com/apache/nifi/pull/4398

> 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
>            Assignee: Simon Bence
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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)