firebase / firebase/firebase-admin-java
NullPointerException when using cloud messaging
- 主要語言
- Java
- 星號
- 620
- 分支
- 305
- 平均合併
- 3 小時 23 分鐘
- 30 天內合併 PR
- 1
描述
* Library version: 9.4.3
* Firebase Product: cloud messaging
When we are sending messages in bulk to devices using device specific tokens, we randomly get the error below:
```
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:595)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:574)
at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:91)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:67)
at businessLayer.Messaging.sendPush(Messaging.java:777)
...
```
We are using the method sendEachAsync:
`BatchResponse firebaseResponse = FirebaseMessaging.getInstance(firebaseApp).sendEachAsync(firebaseMessages, pushDryRun).get();`
Besides the error showing up randomly when we are sending the messages, it seems that in older version of the library (<= 9.3.0), that the error is:
```
java.util.concurrent.ExecutionException: com.google.firebase.messaging.FirebaseMessagingException: com.google.firebase.messaging.FirebaseMessaging
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:594)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:573)
at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:91)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:67)
at businessLayer.Messaging.sendPush(Messaging.java:777)
...
```
The problem for us is that it seems that this error started showing up randomly last month.
At least some messages seem to be sent, because we have info that users are seeing and clicking on the notifications.
So, it seems that we are correctly calling the procedure.
Any help would be welcomed.
貢獻指南
研究方向
從 Messaging.java:777 中的 sendEachAsync 呼叫和 businessLayer.Messaging.sendPush 開始,然後在函式庫版本 9.4.3 上重現向裝置專屬權杖進行批次傳送的情況。追蹤非同步結果為何變成 NullPointerException,而不是先前的 FirebaseMessagingException,並確認批次傳送會回報可採取行動的錯誤,同時成功的通知不受影響。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- firebase, java
- 領域
- backend, cloud
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 需要釐清
- 新手友好度
- 35/100