open-coap / java-coap

CoAP Java library
Apache License 2.0
18 stars 5 forks source link

NPE in Deduplicator #46

Closed sbernard31 closed 1 year ago

sbernard31 commented 1 year ago

I face some NPE in Deduplicator like this :

java.util.concurrent.CompletionException: java.lang.NullPointerException
    at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
    at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
    at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:604)
    at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614)
    at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983)
    at com.mbed.coap.server.messaging.DuplicateDetector.apply(DuplicateDetector.java:58)
    at com.mbed.coap.server.messaging.DuplicateDetector.apply(DuplicateDetector.java:31)
    at com.mbed.coap.utils.Filter.lambda$andThen$1(Filter.java:34)
    at com.mbed.coap.utils.Filter.lambda$then$3(Filter.java:53)
    at com.mbed.coap.server.messaging.CoapDispatcher.handleObservation(CoapDispatcher.java:103)
    at com.mbed.coap.server.messaging.CoapDispatcher.handle(CoapDispatcher.java:66)
    at com.mbed.coap.server.CoapServer.handle(CoapServer.java:73)
    at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760)
    at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736)
    at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1595)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: null
    at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
    at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
    at com.mbed.coap.server.DefaultDuplicateDetectorCache.put(DefaultDuplicateDetectorCache.java:76)
    at com.mbed.coap.server.DefaultDuplicateDetectorCache.put(DefaultDuplicateDetectorCache.java:30)
    at com.mbed.coap.server.messaging.DuplicateDetector.putResponse(DuplicateDetector.java:72)
    at com.mbed.coap.server.messaging.DuplicateDetector.lambda$apply$0(DuplicateDetector.java:59)
    at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
    ... 16 common frames omitted

This happens at CoAP client side in my tests where a NON Confirmable Observe Notification is Received. Same tests using a CON doesn't raise an NPE.

If it helps I can provide tcpdump/wireshark capture. Let's me know.

szysas commented 1 year ago

Thanks for reporting this issue. I created a fix here: #47

szysas commented 1 year ago

There is release v6.12.0 that contains implementation for this ticket, can we close it?

sbernard31 commented 1 year ago

I just tested it and I can not see this NPE anymore with v6.12.0

Thx for fixing this :pray: