hozumi opened a new issue #12291:
URL: https://github.com/apache/pulsar/issues/12291
**Describe the bug**
Pulsar and java client version: 2.8.1
When a reader that listens multiple topics is configured
`.startMessageId(MessageId.earliest)` , it seems that initial position is
actually `latest` .
Also `reader.hasMessageAvailable()` causes NPE.
```
Exception in thread "main" java.lang.NullPointerException
at
org.apache.pulsar.client.impl.ConsumerImpl.hasMessageAvailableAsync(ConsumerImpl.java:1880)
at
org.apache.pulsar.client.impl.MultiTopicsConsumerImpl.hasMessageAvailableAsync(MultiTopicsConsumerImpl.java:751)
at
org.apache.pulsar.client.impl.MultiTopicsConsumerImpl.hasMessageAvailable(MultiTopicsConsumerImpl.java:741)
at
org.apache.pulsar.client.impl.MultiTopicsReaderImpl.hasMessageAvailable(MultiTopicsReaderImpl.java:144)
at example.foo.Main.main(Main.java:20)
```
It seems that the java client support MultiTopicsReaderImpl since 2.8.0.
https://github.com/apache/pulsar/pull/9995
**To Reproduce**
Steps to reproduce the behavior:
1. Setup standalone pulsar
```
docker run -it -p 6650:6650 -p 8080:8080 --name pulsar_broker
apachepulsar/pulsar:2.8.1 bin/pulsar standalone
```
2. Configure a namespace
```
docker exec -it pulsar_broker bin/pulsar-admin namespaces create sample/mytes
docker exec -it pulsar_broker bin/pulsar-admin namespaces set-retention
sample/mytest --size 10M --time -1
```
3. Store some messages into two topics.
```
docker exec -it pulsar_broker bin/pulsar-client produce
"persistent://sample/mytest/mytopic1" --messages "hello1"
docker exec -it pulsar_broker bin/pulsar-client produce
"persistent://sample/mytest/mytopic1" --messages "hello2"
docker exec -it pulsar_broker bin/pulsar-client produce
"persistent://sample/mytest/mytopic2" --messages "world1"
docker exec -it pulsar_broker bin/pulsar-client produce
"persistent://sample/mytest/mytopic2" --messages "world2"
```
4. Run multi-topic reader
```java
package example.foo;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.Reader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws PulsarClientException {
PulsarClient pClient =
PulsarClient.builder().serviceUrl("pulsar://localhost:6650").build();
Reader<byte[]> reader = pClient.newReader()
.readerName("myreader1")
.topics(Arrays.asList("persistent://sample/mytest/mytopic1",
"persistent://sample/mytest/mytopic2"))
.startMessageId(MessageId.earliest)
.create();
// reader.hasMessageAvailable(); // causes NPE
while(true) {
Message<byte[]> m = reader.readNext();
System.out.println(m.getTopicName() + " value:" + new
String(m.getData(), java.nio.charset.StandardCharsets.UTF_8));
}
}
}
```
**Expected behavior**
Multi-topic reader should follow`startMessageId` configuration.
**Additional context**
I am not sure how this issue is related
https://github.com/apache/pulsar/issues/9301 .
--
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]