This is an automated email from the ASF dual-hosted git repository.

penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit cd835c59df13bf89d75b1c047a2647791a11cba5
Author: JiangHaiting <jianghait...@apache.org>
AuthorDate: Sat Apr 2 11:16:02 2022 +0800

    [fix][client] ConsumerBuilderImpl can not set null to deadLetterPolicy 
(#14980)
    
    `ConsumerBuilderImpl` can not set null to deadLetterPolicy if it's already 
assigned a non-null value.
    
    Calls `conf.setDeadLetterPolicy` if `deadLetterPolicy` is null.
    
    (cherry picked from commit 2f530717851d5e852b4489ff70184d14634ef2b9)
---
 .../pulsar/client/impl/ConsumerBuilderImpl.java    |  3 +--
 .../client/impl/ConsumerBuilderImplTest.java       | 29 +++++++++++++---------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBuilderImpl.java
 
b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBuilderImpl.java
index dea946b46c0..a3291db7095 100644
--- 
a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBuilderImpl.java
+++ 
b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBuilderImpl.java
@@ -428,10 +428,9 @@ public class ConsumerBuilderImpl<T> implements 
ConsumerBuilder<T> {
             if (conf.getAckTimeoutMillis() == 0) {
                 
conf.setAckTimeoutMillis(DEFAULT_ACK_TIMEOUT_MILLIS_FOR_DEAD_LETTER);
             }
-
             checkArgument(deadLetterPolicy.getMaxRedeliverCount() > 0, 
"MaxRedeliverCount must be > 0.");
-            conf.setDeadLetterPolicy(deadLetterPolicy);
         }
+        conf.setDeadLetterPolicy(deadLetterPolicy);
         return this;
     }
 
diff --git 
a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ConsumerBuilderImplTest.java
 
b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ConsumerBuilderImplTest.java
index 36ea53f31ef..d648ee75af7 100644
--- 
a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ConsumerBuilderImplTest.java
+++ 
b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ConsumerBuilderImplTest.java
@@ -18,6 +18,17 @@
  */
 package org.apache.pulsar.client.impl;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertNotNull;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Pattern;
 import org.apache.pulsar.client.api.BatchReceivePolicy;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.DeadLetterPolicy;
@@ -29,18 +40,6 @@ import 
org.apache.pulsar.client.impl.conf.ConsumerConfigurationData;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import static org.testng.Assert.assertNotNull;
-
 /**
  * Unit tests of {@link ConsumerBuilderImpl}.
  */
@@ -298,6 +297,12 @@ public class ConsumerBuilderImplTest {
                 .build());
     }
 
+    @Test
+    public void testNullDeadLetterPolicy() {
+        consumerBuilderImpl.deadLetterPolicy(null);
+        verify(consumerBuilderImpl.getConf()).setDeadLetterPolicy(null);
+    }
+
     @Test
     public void testConsumerBuilderImplWhenNumericPropertiesAreValid() {
         consumerBuilderImpl.negativeAckRedeliveryDelay(1, 
TimeUnit.MILLISECONDS);

Reply via email to