Java 除非线程被阻止,否则Cloud Firestore写操作不会工作
我正在使用CloudFirebase Java管理API将数据写入Firestore实例 所有将某些数据写入Firestore的方法都会返回一个Java 除非线程被阻止,否则Cloud Firestore写操作不会工作,java,firebase,google-cloud-firestore,firebase-admin,Java,Firebase,Google Cloud Firestore,Firebase Admin,我正在使用CloudFirebase Java管理API将数据写入Firestore实例 所有将某些数据写入Firestore的方法都会返回一个ApiFuture的实例。现在的问题是,除非我对返回的实例调用get()方法,否则数据不会进入Firestore 对于单数写操作和批处理写操作都存在此问题 我尝试过完全忽略未来,并通过addListener(Runnable,Executor)添加回调。执行回调,但数据不会以任何方式写入 如果我尝试在另一个线程(从调用写入操作的线程)中执行get(),则
ApiFuture
的实例。现在的问题是,除非我对返回的实例调用get()
方法,否则数据不会进入Firestore
对于单数写操作和批处理写操作都存在此问题
我尝试过完全忽略未来,并通过addListener(Runnable,Executor)
添加回调。执行回调,但数据不会以任何方式写入
如果我尝试在另一个线程(从调用写入操作的线程)中执行get()
,则会抛出io.grpc.StatusRuntimeException
:CANCELLED:io.grpc.Context被取消,但没有错误
另一个有趣的细节是,如果我用thread.sleep()
阻塞线程足够长的时间(在我的例子中大约3秒),数据就会被正确写入
有人知道是什么导致了这个问题吗
我正在使用5.7.0版的Firebase管理API 您能否编辑您的问题以显示您在每种情况下尝试的实际代码?这将更加清楚。很可能在数据写入后端之前,JVM进程已经退出。在你的代码中是这样的吗?