Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-7255

nifi.properties configuration change can result in duplicate nodes listed in Cluster UI

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.7.0, 1.8.0, 1.9.0, 1.10.0
    • None
    • Core Framework
    • None

    Description

      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

      Attachments

        Issue Links

          Activity

            People

              simonbence Simon Bence
              msclarke Matthew Clarke
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h