Skip to content

Commit 8bc24bd

Browse files
Merge pull request #605 from rabbitmq/rabbitmq-java-client-528-log-warning-in-basic-cancel
Log warning when calling Channel#basicCancel with unknown tag
2 parents dca7226 + af0943f commit 8bc24bd

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

src/main/java/com/rabbitmq/client/Channel.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,14 @@
1515

1616
package com.rabbitmq.client;
1717

18+
import com.rabbitmq.client.AMQP.BasicProperties;
19+
import com.rabbitmq.client.AMQP.*;
20+
1821
import java.io.IOException;
1922
import java.util.Map;
2023
import java.util.concurrent.CompletableFuture;
2124
import java.util.concurrent.TimeoutException;
2225

23-
import com.rabbitmq.client.AMQP.BasicProperties;
24-
import com.rabbitmq.client.AMQP.Exchange;
25-
import com.rabbitmq.client.AMQP.Queue;
26-
import com.rabbitmq.client.AMQP.Tx;
27-
import com.rabbitmq.client.AMQP.Basic;
28-
import com.rabbitmq.client.AMQP.Confirm;
29-
3026
/**
3127
* Interface to a channel. All non-deprecated methods of
3228
* this interface are part of the public API.
@@ -1220,8 +1216,11 @@ void basicNack(long deliveryTag, boolean multiple, boolean requeue)
12201216
/**
12211217
* Cancel a consumer. Calls the consumer's {@link Consumer#handleCancelOk}
12221218
* method.
1219+
* <p>
1220+
* A consumer tag that does not match any consumer is ignored.
1221+
*
12231222
* @param consumerTag a client- or server-generated consumer tag to establish context
1224-
* @throws IOException if an error is encountered, or if the consumerTag is unknown
1223+
* @throws IOException if an error is encountered
12251224
* @see com.rabbitmq.client.AMQP.Basic.Cancel
12261225
* @see com.rabbitmq.client.AMQP.Basic.CancelOk
12271226
*/

src/main/java/com/rabbitmq/client/impl/ChannelN.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,8 +1472,10 @@ public void basicCancel(final String consumerTag)
14721472
throws IOException
14731473
{
14741474
final Consumer originalConsumer = _consumers.get(consumerTag);
1475-
if (originalConsumer == null)
1476-
throw new IOException("Unknown consumerTag");
1475+
if (originalConsumer == null) {
1476+
LOGGER.warn("Tried to cancel consumer with unknown tag {}", consumerTag);
1477+
return;
1478+
}
14771479

14781480
final Method m = new Basic.Cancel(consumerTag, false);
14791481
BlockingRpcContinuation<Consumer> k = new BlockingRpcContinuation<Consumer>(m) {

src/test/java/com/rabbitmq/client/test/ChannelNTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.junit.Test;
2323
import org.mockito.Mockito;
2424

25-
import java.io.IOException;
2625
import java.util.concurrent.ExecutorService;
2726
import java.util.concurrent.Executors;
2827

@@ -51,8 +50,8 @@ public void serverBasicCancelForUnknownConsumerDoesNotThrowException() throws Ex
5150
channel.processAsync(new AMQCommand(method));
5251
}
5352

54-
@Test(expected = IOException.class)
55-
public void callingBasicCancelForUnknownConsumerThrowsException() throws Exception {
53+
@Test
54+
public void callingBasicCancelForUnknownConsumerDoesNotThrowException() throws Exception {
5655
AMQConnection connection = Mockito.mock(AMQConnection.class);
5756
ChannelN channel = new ChannelN(connection, 1, consumerWorkService);
5857
channel.basicCancel("does-not-exist");

0 commit comments

Comments
 (0)