我正在使用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 .