Copilot commented on code in PR #24975:
URL: https://github.com/apache/pulsar/pull/24975#discussion_r2518215702


##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java:
##########
@@ -1517,8 +1517,23 @@ private CompletableFuture<Void> delete(boolean 
failIfHasSubscriptions,
                                 "Topic has " + producers.size() + " connected 
producers"));
                     }
                 } else if (currentUsageCount() > 0) {
-                    return FutureUtil.failedFuture(new TopicBusyException(
-                            "Topic has " + currentUsageCount() + " connected 
producers/consumers"));
+                    StringBuilder errorMsg = new StringBuilder("Topic has");
+                    errorMsg.append(" ").append(currentUsageCount()).append(" 
clients connected.");
+                    int consumerCount = 
subscriptions.values().stream().map(sub -> sub.getConsumers().size())
+                            .reduce(0, Integer::sum);
+                    int replicatorCount = 0;
+                    int producerCount = 0;
+                    if (!producers.isEmpty()) {
+                        replicatorCount = producers.values().stream().filter(p 
-> p.isRemote()).map(p -> 1)
+                                .reduce(0, Integer::sum);
+                        if (producers.size() > replicatorCount) {
+                            producerCount = producers.size() - replicatorCount;
+                        }
+                    }
+                    errorMsg.append(" 
Including").append(consumerCount).append(" consumers,")
+                        .append(" ").append(producerCount).append(" 
producers,").append(" and")
+                        .append(" ").append(replicatorCount).append(" 
replicators.");

Review Comment:
   The error message has formatting issues with missing spaces. The code 
produces:
   `"Topic has 1 clients connected. Including0 consumers, 0 producers, and 1 
replicators."`
   
   There's no space between "Including" and the number. Should be:
   ```java
   errorMsg.append(" Including ").append(consumerCount).append(" consumers,")
       .append(" ").append(producerCount).append(" producers,")
       .append(" and ").append(replicatorCount).append(" replicators.");
   ```
   
   This would produce:
   `"Topic has 1 clients connected. Including 0 consumers, 0 producers, and 1 
replicators."`
   ```suggestion
                       errorMsg.append(" Including 
").append(consumerCount).append(" consumers,")
                           .append(" ").append(producerCount).append(" 
producers,").append(" and ")
                           .append(replicatorCount).append(" replicators.");
   ```



##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java:
##########
@@ -1517,8 +1517,23 @@ private CompletableFuture<Void> delete(boolean 
failIfHasSubscriptions,
                                 "Topic has " + producers.size() + " connected 
producers"));
                     }
                 } else if (currentUsageCount() > 0) {
-                    return FutureUtil.failedFuture(new TopicBusyException(
-                            "Topic has " + currentUsageCount() + " connected 
producers/consumers"));
+                    StringBuilder errorMsg = new StringBuilder("Topic has");
+                    errorMsg.append(" ").append(currentUsageCount()).append(" 
clients connected.");

Review Comment:
   Grammar issue: "clients" should be singular "client" when 
`currentUsageCount()` equals 1. Consider using:
   ```java
   errorMsg.append(" ").append(currentUsageCount())
       .append(currentUsageCount() == 1 ? " client" : " clients")
       .append(" connected,");
   ```
   This would properly handle both singular and plural cases.
   ```suggestion
                       errorMsg.append(" ").append(currentUsageCount())
                           .append(currentUsageCount() == 1 ? " client" : " 
clients")
                           .append(" connected.");
   ```



##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java:
##########
@@ -1517,8 +1517,23 @@ private CompletableFuture<Void> delete(boolean 
failIfHasSubscriptions,
                                 "Topic has " + producers.size() + " connected 
producers"));
                     }
                 } else if (currentUsageCount() > 0) {
-                    return FutureUtil.failedFuture(new TopicBusyException(
-                            "Topic has " + currentUsageCount() + " connected 
producers/consumers"));
+                    StringBuilder errorMsg = new StringBuilder("Topic has");
+                    errorMsg.append(" ").append(currentUsageCount()).append(" 
clients connected.");
+                    int consumerCount = 
subscriptions.values().stream().map(sub -> sub.getConsumers().size())
+                            .reduce(0, Integer::sum);
+                    int replicatorCount = 0;
+                    int producerCount = 0;
+                    if (!producers.isEmpty()) {
+                        replicatorCount = producers.values().stream().filter(p 
-> p.isRemote()).map(p -> 1)
+                                .reduce(0, Integer::sum);

Review Comment:
   Inefficient stream operation: `.map(p -> 1).reduce(0, Integer::sum)` is 
equivalent to simply counting. Consider using:
   ```java
   replicatorCount = (int) 
producers.values().stream().filter(Producer::isRemote).count();
   ```
   This is clearer and more efficient.
   ```suggestion
                           replicatorCount = (int) 
producers.values().stream().filter(p -> p.isRemote()).count();
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to