[ https://issues.apache.org/jira/browse/KAFKA-13253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Urban resolved KAFKA-13253. ---------------------------------- Resolution: Duplicate Same issue as KAFKA-9747 - that one already has a fix under review > Kafka Connect losing task (re)configuration when connector name has special > characters > -------------------------------------------------------------------------------------- > > Key: KAFKA-13253 > URL: https://issues.apache.org/jira/browse/KAFKA-13253 > Project: Kafka > Issue Type: Bug > Components: KafkaConnect > Affects Versions: 2.7.1 > Reporter: David Dufour > Priority: Major > > When not leader, DistributedHerder.reconfigureConnector() forwards the task > configuration to the leader as follow: > {quote}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); > {quote} > The problem is that if the connector name contains some special characters, > such as '<', '>'... they need to be 'URLEncoded' appropriately, otherwise an > uncatched exception is raised in RestClient and the forward is lost. > Here is the kind of exception we can catch by adding the necessary code in > RestClient: > {quote}java.lang.IllegalArgumentException: Illegal character in path at index > 51: > [http://10.224.0.15:8083/connectors/mirror1-cluster-]>mirror2-cluster.MirrorHeartbeatConnector/tasks > {quote} > An additional catch() should be added in RestClient.httpRequest(), here: > {quote}{{catch (IOException | InterruptedException | TimeoutException | > ExecutionException e) {}} > log.error("IO error forwarding REST request: ", e); > {{throw new ConnectRestException(Response.Status.INTERNAL_SERVER_ERROR, > "IO Error trying to forward REST request: " + e.getMessage(), e);}} > {{} finally {}} > {quote} > to catch all other exceptions because without, this kind of problem is > completly silent. > To reproduce: > * start 2 kafka clusters > * start a kafka connect (distributed) with at least 2 nodes > * start an HeartbeatConnector with name "cluster1->cluster2" > If the node which generated the task is not the leader (not systematic), it > will forward the creation to the leader and it will be lost. As a result, the > connector will stay in RUNNING state but without any task. > Problem not easy to reproduce, it is important to start with empty connect > topics to reproduce more easily -- This message was sent by Atlassian Jira (v8.3.4#803005)