You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@kafka.apache.org by Ning Zhang <ni...@gmail.com> on 2020/12/06 22:15:51 UTC

Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect 

On 2020/11/26 06:47:11, <Am...@cognizant.com> wrote: 
> Hi All,
> 
> We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:
> 
> 
> 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.
> 
> 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.
> 
> 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.
> 
> 
> Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.
> 
> Thanks and regards,
> Amit
> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> 

Re: RE: RE: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Posted by Ning Zhang <ni...@gmail.com>.
Great - that sounds a smart way of bridging the Replicator and MM2.

Seems like even though the consumer group can be same between Replicator and MM2, the storage format of offsets are still little different, so we need an "adapter" anyway. Just need to monitor the  "adapter"  is constantly running and not lagging behind too much :)

happy to see if there may be more interesting stories along the migration

On 2020/12/21 05:21:39, <Am...@cognizant.com> wrote: 
> Hi Ning and all,
> 
> We got a crude way to solve this issue. Below are the high level steps:
> 
> Read the message from Replicator's internal topic for storing offsets. [connect-offsets]
> This topic stores the offsets for all topics which is getting replicated in key:value pair . For e.g.
> Key : ["replicator-group",{"topic":"TEST","partition":0}]
> Value: {"offset":24}
> 
> For each topic and partition, whenever a new message is replicated a new message with same key but increased offset is produced to the connect-offsets topic.
> Convert the key of this message to Mirror Maker 2 format and produce it in the internal topic of MirrorMaker2. [You can change the internal topics in the mirrormaker2-connect-distributed.properties file] The format for mirror maker internal topic is:
> Key: ["mirrormaker-group",{"cluster":"","partition":0,"topic":"TEST"}]
> Value: {"offset":24}
> 
> After posting the message, once the mirror maker is restarted, it will read the internal topic to get the latest offset of that topic for which the message has to be replicated and this way we can ensure no duplicate messages are replicated.
> 
> This has been tested and found to be working as expected.
> 
> Thanks and regards,
> Amit
> 
> -----Original Message-----
> From: Ning Zhang <ni...@gmail.com>
> Sent: Thursday, December 10, 2020 10:40 PM
> To: users@kafka.apache.org
> Subject: Re: RE: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
> 
> [External]
> 
> 
> regarding consumer group = null, https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Fkafka%2Fblob%2Ftrunk%2Fconnect%2Fmirror%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fkafka%2Fconnect%2Fmirror%2FMirrorSourceTask.java%23L89&data=04%7C01%7CAmit.SRIVASTAV%40cognizant.com%7Cb0848664644949d7bee308d89d2e63bf%7Cde08c40719b9427d9fe8edf254300ca7%7C0%7C0%7C637432169970427000%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=5D6J4NrLyYClJ3Pi7zNgU7FeQOCTp%2FmVB63iD0EzE6U%3D&reserved=0 is where the consumer is created in MirrorSourceTask and people could override any consumer-level config (including group.id) at https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Fkafka%2Fblob%2Fb44d32dffedb368b888e3431257d68abb1e62b9f%2Fconnect%2Fmirror%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fkafka%2Fconnect%2Fmirror%2FMirrorConnectorConfig.java%23L249&data=04%7C01%7CAmit.SRIVASTAV%40cognizant.co
 m%7Cb0848664644949d7bee308d89d2e63bf%7Cde08c40719b9427d9fe8edf254300ca7%7C0%7C0%7C637432169970436989%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=TnbS7CgaO%2BTr2KrfU8ACbomcVrao1j77flHMRufBir0%3D&reserved=0
> 
> as you may have tried something like `source.consumer.group.id`, `<source_cluster.alias>.consumer.group.id`, or `<source_cluster.alias>.group.id`, if all of them do not work, then we should look into more source code and see if your setting is override by other places
> 
> On 2020/12/08 06:28:50, <Am...@cognizant.com> wrote:
> > Hi Ning,
> >
> >
> >
> > It did not worked. Here are the logs from the replicator and mirror maker 2 respectively:
> >
> > Replicator:
> >
> > [2020-12-08 05:11:06,611] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 83 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> >
> > [2020-12-08 05:11:07,113] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-1 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> >
> > [2020-12-08 05:11:07,615] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 53 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-2 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> >
> >
> >
> > Mirror Maker 2.0:
> >
> > [2020-12-08 06:10:51,385] INFO [Consumer clientId=consumer-4, groupId=null] Seeking to offset 80 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> >
> > [2020-12-08 06:10:51.385] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> >
> > [2020-12-08 06:10:51.386] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 52 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> >
> >
> >
> > You can see that groupId is still null in MM2 and the offsets are previous offset meaning it will replicate those messages as well which has been already replicated by Replicator.
> >
> >
> >
> > Thanks and regards,
> >
> > Amit
> >
> >
> >
> > -----Original Message-----
> > From: Ning Zhang <ni...@gmail.com>
> > Sent: Monday, December 7, 2020 10:29 PM
> > To: users@kafka.apache.org
> > Subject: Re: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
> >
> >
> >
> > [External]
> >
> >
> >
> >
> >
> > Hi Amit,
> >
> >
> >
> > After looking into a little bit, do you mind to override `connector.consumer.group`? The default consumer group may be called 'connect-MirrorSourceConnector' or similar
> >
> >
> >
> > On 2020/12/07 03:32:30, <Am...@cognizant.com>> wrote:
> >
> > > Hi Ning,
> >
> > >
> >
> > > Thank you for the response.
> >
> > >
> >
> > > I probably tried to change every possible consumer group id in all ways MM2 can run. But I went through the code and it seems consumer config is using assign method which does not requires group id to be assigned and also could not find anywhere that property being read and set.
> >
> > >
> >
> > > One crude way we found and is in testing is to manually change the offset of the topic in the internal topics which MM2 reads to get the latest offset of the message.
> >
> > >
> >
> > > Thanks,
> >
> > > Amit
> >
> > >
> >
> > > -----Original Message-----
> >
> > > From: Ning Zhang <ni...@gmail.com>>
> >
> > > Sent: Monday, December 7, 2020 3:46 AM
> >
> > > To: users@kafka.apache.org<ma...@kafka.apache.org>
> >
> > > Subject: Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
> >
> > >
> >
> > > [External]
> >
> > >
> >
> > >
> >
> > > Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect
> >
> > >
> >
> > > On 2020/11/26 06:47:11, <Am...@cognizant.com>> wrote:
> >
> > > > Hi All,
> >
> > > >
> >
> > > > We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:
> >
> > > >
> >
> > > >
> >
> > > > 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.
> >
> > > >
> >
> > > > 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.
> >
> > > >
> >
> > > > 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.
> >
> > > >
> >
> > > >
> >
> > > > Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.
> >
> > > >
> >
> > > > Thanks and regards,
> >
> > > > Amit
> >
> > > > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> >
> > > >
> >
> > > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> >
> > >
> >
> > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> >
> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> 

RE: RE: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Posted by Am...@cognizant.com.
Hi Ning and all,

We got a crude way to solve this issue. Below are the high level steps:

Read the message from Replicator's internal topic for storing offsets. [connect-offsets]
This topic stores the offsets for all topics which is getting replicated in key:value pair . For e.g.
Key : ["replicator-group",{"topic":"TEST","partition":0}]
Value: {"offset":24}

For each topic and partition, whenever a new message is replicated a new message with same key but increased offset is produced to the connect-offsets topic.
Convert the key of this message to Mirror Maker 2 format and produce it in the internal topic of MirrorMaker2. [You can change the internal topics in the mirrormaker2-connect-distributed.properties file] The format for mirror maker internal topic is:
Key: ["mirrormaker-group",{"cluster":"","partition":0,"topic":"TEST"}]
Value: {"offset":24}

After posting the message, once the mirror maker is restarted, it will read the internal topic to get the latest offset of that topic for which the message has to be replicated and this way we can ensure no duplicate messages are replicated.

This has been tested and found to be working as expected.

Thanks and regards,
Amit

-----Original Message-----
From: Ning Zhang <ni...@gmail.com>
Sent: Thursday, December 10, 2020 10:40 PM
To: users@kafka.apache.org
Subject: Re: RE: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

[External]


regarding consumer group = null, https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Fkafka%2Fblob%2Ftrunk%2Fconnect%2Fmirror%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fkafka%2Fconnect%2Fmirror%2FMirrorSourceTask.java%23L89&amp;data=04%7C01%7CAmit.SRIVASTAV%40cognizant.com%7Cb0848664644949d7bee308d89d2e63bf%7Cde08c40719b9427d9fe8edf254300ca7%7C0%7C0%7C637432169970427000%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=5D6J4NrLyYClJ3Pi7zNgU7FeQOCTp%2FmVB63iD0EzE6U%3D&amp;reserved=0 is where the consumer is created in MirrorSourceTask and people could override any consumer-level config (including group.id) at https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Fkafka%2Fblob%2Fb44d32dffedb368b888e3431257d68abb1e62b9f%2Fconnect%2Fmirror%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fkafka%2Fconnect%2Fmirror%2FMirrorConnectorConfig.java%23L249&amp;data=04%7C01%7CAmit.SRIVASTAV%40cognizant.com%7Cb0848664644949d7bee308d89d2e63bf%7Cde08c40719b9427d9fe8edf254300ca7%7C0%7C0%7C637432169970436989%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=TnbS7CgaO%2BTr2KrfU8ACbomcVrao1j77flHMRufBir0%3D&amp;reserved=0

as you may have tried something like `source.consumer.group.id`, `<source_cluster.alias>.consumer.group.id`, or `<source_cluster.alias>.group.id`, if all of them do not work, then we should look into more source code and see if your setting is override by other places

On 2020/12/08 06:28:50, <Am...@cognizant.com> wrote:
> Hi Ning,
>
>
>
> It did not worked. Here are the logs from the replicator and mirror maker 2 respectively:
>
> Replicator:
>
> [2020-12-08 05:11:06,611] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 83 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
>
> [2020-12-08 05:11:07,113] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-1 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
>
> [2020-12-08 05:11:07,615] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 53 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-2 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
>
>
>
> Mirror Maker 2.0:
>
> [2020-12-08 06:10:51,385] INFO [Consumer clientId=consumer-4, groupId=null] Seeking to offset 80 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
>
> [2020-12-08 06:10:51.385] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
>
> [2020-12-08 06:10:51.386] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 52 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
>
>
>
> You can see that groupId is still null in MM2 and the offsets are previous offset meaning it will replicate those messages as well which has been already replicated by Replicator.
>
>
>
> Thanks and regards,
>
> Amit
>
>
>
> -----Original Message-----
> From: Ning Zhang <ni...@gmail.com>
> Sent: Monday, December 7, 2020 10:29 PM
> To: users@kafka.apache.org
> Subject: Re: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
>
>
>
> [External]
>
>
>
>
>
> Hi Amit,
>
>
>
> After looking into a little bit, do you mind to override `connector.consumer.group`? The default consumer group may be called 'connect-MirrorSourceConnector' or similar
>
>
>
> On 2020/12/07 03:32:30, <Am...@cognizant.com>> wrote:
>
> > Hi Ning,
>
> >
>
> > Thank you for the response.
>
> >
>
> > I probably tried to change every possible consumer group id in all ways MM2 can run. But I went through the code and it seems consumer config is using assign method which does not requires group id to be assigned and also could not find anywhere that property being read and set.
>
> >
>
> > One crude way we found and is in testing is to manually change the offset of the topic in the internal topics which MM2 reads to get the latest offset of the message.
>
> >
>
> > Thanks,
>
> > Amit
>
> >
>
> > -----Original Message-----
>
> > From: Ning Zhang <ni...@gmail.com>>
>
> > Sent: Monday, December 7, 2020 3:46 AM
>
> > To: users@kafka.apache.org<ma...@kafka.apache.org>
>
> > Subject: Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
>
> >
>
> > [External]
>
> >
>
> >
>
> > Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect
>
> >
>
> > On 2020/11/26 06:47:11, <Am...@cognizant.com>> wrote:
>
> > > Hi All,
>
> > >
>
> > > We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:
>
> > >
>
> > >
>
> > > 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.
>
> > >
>
> > > 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.
>
> > >
>
> > > 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.
>
> > >
>
> > >
>
> > > Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.
>
> > >
>
> > > Thanks and regards,
>
> > > Amit
>
> > > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
>
> > >
>
> > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
>
> >
>
> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
>
This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.

Re: RE: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Posted by Ning Zhang <ni...@gmail.com>.
regarding consumer group = null, https://github.com/apache/kafka/blob/trunk/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorSourceTask.java#L89 is where the consumer is created in MirrorSourceTask and people could override any consumer-level config (including group.id) at https://github.com/apache/kafka/blob/b44d32dffedb368b888e3431257d68abb1e62b9f/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorConnectorConfig.java#L249

as you may have tried something like `source.consumer.group.id`, `<source_cluster.alias>.consumer.group.id`, or `<source_cluster.alias>.group.id`, if all of them do not work, then we should look into more source code and see if your setting is override by other places

On 2020/12/08 06:28:50, <Am...@cognizant.com> wrote: 
> Hi Ning,
> 
> 
> 
> It did not worked. Here are the logs from the replicator and mirror maker 2 respectively:
> 
> Replicator:
> 
> [2020-12-08 05:11:06,611] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 83 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> 
> [2020-12-08 05:11:07,113] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-1 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> 
> [2020-12-08 05:11:07,615] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 53 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-2 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> 
> 
> 
> Mirror Maker 2.0:
> 
> [2020-12-08 06:10:51,385] INFO [Consumer clientId=consumer-4, groupId=null] Seeking to offset 80 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> 
> [2020-12-08 06:10:51.385] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> 
> [2020-12-08 06:10:51.386] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 52 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)
> 
> 
> 
> You can see that groupId is still null in MM2 and the offsets are previous offset meaning it will replicate those messages as well which has been already replicated by Replicator.
> 
> 
> 
> Thanks and regards,
> 
> Amit
> 
> 
> 
> -----Original Message-----
> From: Ning Zhang <ni...@gmail.com>
> Sent: Monday, December 7, 2020 10:29 PM
> To: users@kafka.apache.org
> Subject: Re: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
> 
> 
> 
> [External]
> 
> 
> 
> 
> 
> Hi Amit,
> 
> 
> 
> After looking into a little bit, do you mind to override `connector.consumer.group`? The default consumer group may be called 'connect-MirrorSourceConnector' or similar
> 
> 
> 
> On 2020/12/07 03:32:30, <Am...@cognizant.com>> wrote:
> 
> > Hi Ning,
> 
> >
> 
> > Thank you for the response.
> 
> >
> 
> > I probably tried to change every possible consumer group id in all ways MM2 can run. But I went through the code and it seems consumer config is using assign method which does not requires group id to be assigned and also could not find anywhere that property being read and set.
> 
> >
> 
> > One crude way we found and is in testing is to manually change the offset of the topic in the internal topics which MM2 reads to get the latest offset of the message.
> 
> >
> 
> > Thanks,
> 
> > Amit
> 
> >
> 
> > -----Original Message-----
> 
> > From: Ning Zhang <ni...@gmail.com>>
> 
> > Sent: Monday, December 7, 2020 3:46 AM
> 
> > To: users@kafka.apache.org<ma...@kafka.apache.org>
> 
> > Subject: Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
> 
> >
> 
> > [External]
> 
> >
> 
> >
> 
> > Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect
> 
> >
> 
> > On 2020/11/26 06:47:11, <Am...@cognizant.com>> wrote:
> 
> > > Hi All,
> 
> > >
> 
> > > We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:
> 
> > >
> 
> > >
> 
> > > 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.
> 
> > >
> 
> > > 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.
> 
> > >
> 
> > > 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.
> 
> > >
> 
> > >
> 
> > > Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.
> 
> > >
> 
> > > Thanks and regards,
> 
> > > Amit
> 
> > > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> 
> > >
> 
> > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> 
> >
> 
> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> 

RE: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Posted by Am...@cognizant.com.
Hi Ning,



It did not worked. Here are the logs from the replicator and mirror maker 2 respectively:

Replicator:

[2020-12-08 05:11:06,611] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 83 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)

[2020-12-08 05:11:07,113] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-1 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)

[2020-12-08 05:11:07,615] INFO [Consumer clientId=onprem-aws-replicator-0, groupId=onprem-aws-replicator] Seeking to offset 53 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-2 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)



Mirror Maker 2.0:

[2020-12-08 06:10:51,385] INFO [Consumer clientId=consumer-4, groupId=null] Seeking to offset 80 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)

[2020-12-08 06:10:51.385] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 49 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)

[2020-12-08 06:10:51.386] INFO [Consumer clientId= consumer-4, groupId=null] Seeking to offset 52 for partition ONPREM.AWS.REPLICA.TOPIC.P3R3-0 (org.apache.kafka.clients.consumer.KafkaConsumer:1545)



You can see that groupId is still null in MM2 and the offsets are previous offset meaning it will replicate those messages as well which has been already replicated by Replicator.



Thanks and regards,

Amit



-----Original Message-----
From: Ning Zhang <ni...@gmail.com>
Sent: Monday, December 7, 2020 10:29 PM
To: users@kafka.apache.org
Subject: Re: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0



[External]





Hi Amit,



After looking into a little bit, do you mind to override `connector.consumer.group`? The default consumer group may be called 'connect-MirrorSourceConnector' or similar



On 2020/12/07 03:32:30, <Am...@cognizant.com>> wrote:

> Hi Ning,

>

> Thank you for the response.

>

> I probably tried to change every possible consumer group id in all ways MM2 can run. But I went through the code and it seems consumer config is using assign method which does not requires group id to be assigned and also could not find anywhere that property being read and set.

>

> One crude way we found and is in testing is to manually change the offset of the topic in the internal topics which MM2 reads to get the latest offset of the message.

>

> Thanks,

> Amit

>

> -----Original Message-----

> From: Ning Zhang <ni...@gmail.com>>

> Sent: Monday, December 7, 2020 3:46 AM

> To: users@kafka.apache.org<ma...@kafka.apache.org>

> Subject: Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

>

> [External]

>

>

> Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect

>

> On 2020/11/26 06:47:11, <Am...@cognizant.com>> wrote:

> > Hi All,

> >

> > We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:

> >

> >

> > 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.

> >

> > 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.

> >

> > 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.

> >

> >

> > Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.

> >

> > Thanks and regards,

> > Amit

> > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.

> >

> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.

>

This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.

Re: RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Posted by Ning Zhang <ni...@gmail.com>.
Hi Amit,

After looking into a little bit, do you mind to override `connector.consumer.group`? The default consumer group may be called 'connect-MirrorSourceConnector' or similar

On 2020/12/07 03:32:30, <Am...@cognizant.com> wrote: 
> Hi Ning,
> 
> Thank you for the response.
> 
> I probably tried to change every possible consumer group id in all ways MM2 can run. But I went through the code and it seems consumer config is using assign method which does not requires group id to be assigned and also could not find anywhere that property being read and set.
> 
> One crude way we found and is in testing is to manually change the offset of the topic in the internal topics which MM2 reads to get the latest offset of the message.
> 
> Thanks,
> Amit
> 
> -----Original Message-----
> From: Ning Zhang <ni...@gmail.com>
> Sent: Monday, December 7, 2020 3:46 AM
> To: users@kafka.apache.org
> Subject: Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0
> 
> [External]
> 
> 
> Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect
> 
> On 2020/11/26 06:47:11, <Am...@cognizant.com> wrote:
> > Hi All,
> >
> > We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:
> >
> >
> > 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.
> >
> > 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.
> >
> > 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.
> >
> >
> > Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.
> >
> > Thanks and regards,
> > Amit
> > This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> >
> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
> 

RE: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

Posted by Am...@cognizant.com.
Hi Ning,

Thank you for the response.

I probably tried to change every possible consumer group id in all ways MM2 can run. But I went through the code and it seems consumer config is using assign method which does not requires group id to be assigned and also could not find anywhere that property being read and set.

One crude way we found and is in testing is to manually change the offset of the topic in the internal topics which MM2 reads to get the latest offset of the message.

Thanks,
Amit

-----Original Message-----
From: Ning Zhang <ni...@gmail.com>
Sent: Monday, December 7, 2020 3:46 AM
To: users@kafka.apache.org
Subject: Re: Maintaining same offset while migrating from Confluent Replicator to Apache Mirror Maker 2.0

[External]


Hi Amit, I guess you may need to override the actual consumer group config (probably not consumer.group.id) that is used in Kafka Connect

On 2020/11/26 06:47:11, <Am...@cognizant.com> wrote:
> Hi All,
>
> We are currently trying to migrate Confluent replicator to Apache Open Source Mirror Maker v2.0. We are facing an issue where the messages which are already replicated by replicator is getting replicated again when the mirror maker is started on the same topic. This should not happen as messages are getting duplicated at the target cluster. Here are more details:
>
>
> 1.       RCA: replicator assign a consumer group for replicating messages. This consumer group maintains the offset of the source topic. But we are not able to assign same consumer group to the Consumer config in mirror maker 2.
>
> 2.       Mirror Maker 1.0 : working as same consumer group can be assigned in consumer.properties file and the messages are picked right after where replicator was stopped.
>
> 3.       Tried running and configuring source.cluster.consumer.group.id in mirror maker 2.0 in all available options (in cluster mode, in connect-standalone and connect-distributed mode) but mirror maker 2.0 is assigning consumer group id as null while replicating messages.
>
>
> Any pointers if anyone has done same and tried to maintain the same offset with mirror maker 2.0.
>
> Thanks and regards,
> Amit
> This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.
>
This e-mail and any files transmitted with it are for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient(s), please reply to the sender and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email, and/or any action taken in reliance on the contents of this e-mail is strictly prohibited and may be unlawful. Where permitted by applicable law, this e-mail and other e-mail communications sent to and from Cognizant e-mail addresses may be monitored.