com.ning.http.client.AsyncHandler <T>Может ли T быть этапом завершения чего-либо? - PullRequest
0 голосов
/ 23 февраля 2020

Service A использует реализацию com.ning.http.client.AsyncHandler для загрузки медиафайлов.

class DownloadHandler implements AsyncHandler<CompletionStage<Metadata>>

При успешной загрузке медиа-файла вызывается метод CompletionStage<Metadata> onCompleted(), в котором Service A асинхронно обращается к Service B для обновления записей в БД.

Я получил NPE

java.lang.RuntimeException: java.lang.NullPointerException
        at java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:884)
        at java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:866)
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
        at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990)
        at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
        at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
        at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990)
        at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
        at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
        at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
        at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1975)
        at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1347)
        at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:398)
        at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1027)
        at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:868)
        at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:691)
        at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:48)

Может ли AsyncHandler вернуть CompletionStage? Что может быть не так?

...