@@ -1578,13 +1578,23 @@ private void buildProducerAndAddTopic(Topic topic, long producerId, String produ
1578
1578
if (ex .getCause () instanceof BrokerServiceException .TopicMigratedException ) {
1579
1579
Optional <ClusterUrl > clusterURL = getMigratedClusterUrl (service .getPulsar ());
1580
1580
if (clusterURL .isPresent ()) {
1581
- log .info ("[{}] redirect migrated producer to topic {}: producerId={}, {}" , remoteAddress , topicName ,
1582
- producerId , ex .getCause ().getMessage ());
1583
- commandSender .sendTopicMigrated (ResourceType .Producer , producerId ,
1584
- clusterURL .get ().getBrokerServiceUrl (), clusterURL .get ().getBrokerServiceUrlTls ());
1585
- closeProducer (producer );
1586
- return null ;
1587
-
1581
+ if (topic .isReplicationBacklogExist ()) {
1582
+ log .info ("Topic {} is migrated but replication backlog exist: "
1583
+ + "producerId = {}, producerName = {}, {}" , topicName ,
1584
+ producerId , producerName , ex .getCause ().getMessage ());
1585
+ } else {
1586
+ log .info ("[{}] redirect migrated producer to topic {}: "
1587
+ + "producerId={}, producerName = {}, {}" , remoteAddress ,
1588
+ topicName , producerId , producerName , ex .getCause ().getMessage ());
1589
+ boolean msgSent = commandSender .sendTopicMigrated (ResourceType .Producer , producerId ,
1590
+ clusterURL .get ().getBrokerServiceUrl (), clusterURL .get ().getBrokerServiceUrlTls ());
1591
+ if (!msgSent ) {
1592
+ log .info ("client doesn't support topic migration handling {}-{}-{}" , topic ,
1593
+ remoteAddress , producerId );
1594
+ }
1595
+ closeProducer (producer );
1596
+ return null ;
1597
+ }
1588
1598
} else {
1589
1599
log .warn ("[{}] failed producer because migration url not configured topic {}: producerId={}, {}" ,
1590
1600
remoteAddress , topicName , producerId , ex .getCause ().getMessage ());
0 commit comments