Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-9981

Running a dedicated mm2 cluster with more than one nodes,When the configuration is updated the task is not aware and will lose the update operation.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.4.0, 2.5.0, 2.4.1
    • 3.5.0
    • mirrormaker
    • None

    Description

      DistributedHerder.reconfigureConnector induction config update as follows:

      if (changed) {
          List<Map<String, String>> rawTaskProps = reverseTransform(connName, configState, taskProps);
          if (isLeader()) {
              configBackingStore.putTaskConfigs(connName, rawTaskProps);
              cb.onCompletion(null, null);
          } else {
              // We cannot forward the request on the same thread because this reconfiguration can happen as a result of connector
              // addition or removal. If we blocked waiting for the response from leader, we may be kicked out of the worker group.
              forwardRequestExecutor.submit(new Runnable() {
                  @Override
                  public void run() {
                      try {
                          String leaderUrl = leaderUrl();
                          if (leaderUrl == null || leaderUrl.trim().isEmpty()) {
                              cb.onCompletion(new ConnectException("Request to leader to " +
                                      "reconfigure connector tasks failed " +
                                      "because the URL of the leader's REST interface is empty!"), null);
                              return;
                          }
                          String reconfigUrl = RestServer.urlJoin(leaderUrl, "/connectors/" + connName + "/tasks");
                          log.trace("Forwarding task configurations for connector {} to leader", connName);
                          RestClient.httpRequest(reconfigUrl, "POST", null, rawTaskProps, null, config, sessionKey, requestSignatureAlgorithm);
                          cb.onCompletion(null, null);
                      } catch (ConnectException e) {
                          log.error("Request to leader to reconfigure connector tasks failed", e);
                          cb.onCompletion(e, null);
                      }
                  }
              });
          }
      }
      

      KafkaConfigBackingStore task checks for configuration updates,such as topic whitelist update.If KafkaConfigBackingStore task is not running on leader node,an HTTP request will be send to notify the leader of the configuration update.However,dedicated mm2 cluster does not have the HTTP server turned on,so the request will fail to be sent,causing the update operation to be lost.

      Attachments

        Issue Links

          Activity

            People

              ChrisEgerton Chris Egerton
              qq619618919 victor
              Votes:
              5 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: