[ 
https://issues.apache.org/jira/browse/KAFKA-9981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17108701#comment-17108701
 ] 

Ryanne Dolan commented on KAFKA-9981:
-------------------------------------

Configuration updates only come from the REST API, afaik, which doesn't exist 
when running with connect-mirror-maker.sh. So I'm not sure what would be 
triggering the logic in the PR. In order to configuration changes to be picked 
up at all, the leader must be restarted. Generally you can't know which nodes 
are leaders of which flows, so generally it makes sense to just restart 
everything with a new config.

This would change if we added back the REST API to connect-mirror-maker.sh (it 
is purposefully turned off at present). If we had a REST API, _then_ 
configuration could change and workers would need to notify their leaders. But 
that is not the case now.

> 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.
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-9981
>                 URL: https://issues.apache.org/jira/browse/KAFKA-9981
>             Project: Kafka
>          Issue Type: Bug
>          Components: mirrormaker
>    Affects Versions: 2.4.0, 2.5.0, 2.4.1
>            Reporter: victor
>            Priority: Major
>
> DistributedHerder.reconfigureConnector induction config update as follows:
> {code:java}
> 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);
>                 }
>             }
>         });
>     }
> }
> {code}
> 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.



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

Reply via email to