我正在使用Cloud Firebase Java管理API将数据写入我的Firestore实例。
将一些数据写入Firestore的所有方法都返回ApiFuture
的实例。现在,问题是除非我在返回的实例上调用get()
方法,否则数据不会进入Firestore。
单一和批量写入操作都存在此问题。
我试过完全无视未来并通过addListener(Runnable, Executor)
添加回调。执行回调,但不以任何方式写入数据。
如果我尝试在另一个线程(从调用写操作的线程)中执行get()
,则抛出io.grpc.StatusRuntimeException
:CANCELLED: io.grpc.Context was cancelled without error
。
另一个有趣的细节是,如果我用Thread.sleep()
阻塞线程足够的时间(在我的情况下约为3秒),数据写得正确。
有人知道可能导致此问题的原因吗?
我正在使用版本5.7.0的Firebase管理API。