messere1 opened a new issue, #11435:
URL: https://github.com/apache/rocketmq/issues/11435

   ### Before Creating the Bug Report
   
   - [x] I found a bug, not just asking a question, which should be created in 
[GitHub Discussions](https://github.com/apache/rocketmq/discussions).
   
   - [x] I have searched the [GitHub 
Issues](https://github.com/apache/rocketmq/issues) and [GitHub 
Discussions](https://github.com/apache/rocketmq/discussions) of this repository 
and believe that this is not a duplicate.
   
   - [x] I have confirmed that this bug belongs to the current repository, not 
other repositories of RocketMQ.
   
   ### Runtime platform environment
   
   Any.
   
   ### RocketMQ version
   
   develop branch (dc70260b7)
   
   ### JDK Version
   
   Any.
   
   ### Describe the Bug
   
   `PopLiteMessageProcessor#preCheck` reserves a log slot for the consumer when 
the parent topic of a lite pop request does not exist, but never passes the 
argument:
   
   ```java
   TopicConfig topicConfig = 
brokerController.getTopicConfigManager().selectTopicConfig(requestHeader.getTopic());
   if (null == topicConfig) {
       LOGGER.error("The parentTopic {} not exist, consumer: {} ", 
requestHeader.getTopic());
       response.setCode(ResponseCode.TOPIC_NOT_EXIST);
       ...
   }
   ```
   
   The message template has two `{}` placeholders but only one argument. With 
SLF4J semantics the second placeholder is rendered literally, so the log line 
is:
   
   ```
   The parentTopic xxx not exist, consumer: {}
   ```
   
   The consumer group (available in 
`PopLiteMessageRequestHeader#getConsumerGroup()`) never appears. When a parent 
topic is deleted or a client is misconfigured, this ERROR is the only 
server-side trace of affected consumers — without the group, operators cannot 
tell who is impacted.
   
   ### Steps to Reproduce
   
   Unit-level, deterministic (`PopLiteMessageProcessorTest` harness):
   
   1. Build a `PopLiteMessageRequestHeader` with a topic that 
`TopicConfigManager#selectTopicConfig` returns `null` for and `consumerGroup = 
"groupA"`.
   2. Call `popLiteMessageProcessor.preCheck(ctx, requestHeader, response)`; it 
returns `TOPIC_NOT_EXIST`.
   3. Capture the formatted log event for logger `RocketmqPopLite`: the message 
is `The parentTopic xxx not exist, consumer: {}` — `groupA` is absent.
   
   ### What Did You Expect to See?
   
   `The parentTopic xxx not exist, consumer: groupA`
   
   ### What Did You See Instead?
   
   `The parentTopic xxx not exist, consumer: {}`
   
   ### Additional Context
   
   Only this line in the lite pop path has a placeholder/argument mismatch 
(verified by scanning all `LOGGER`/`POP_LOGGER` calls in 
`PopLiteMessageProcessor`, `LiteEventDispatcher`, 
`LiteSubscriptionRegistryImpl`, `PopLiteLongPollingService` and 
`NotificationProcessor` for the lite area). The sibling processor 
`NotificationProcessor` logs the remote address in the equivalent branch, so 
the pattern of identifying the caller is established — here the consumer group 
from the request header is the natural identifier.
   


-- 
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