firebase - Firestore Stream 已关闭,状态为 UNAVAILABLE
问题描述
当我关闭互联网连接时,控制台中会显示警告。我想知道它是正常还是不正确以及如何避免此警告!
W/Firestore( 8864): (23.0.1) [WatchStream]: (c9d068c) Stream closed with status: Status{code=UNAVAILABLE, description=End of stream or IOException, cause=null}.
V/NativeCrypto( 8864): Write error: ssl=0xb40000726aa4a958: I/O error during system call, Broken pipe
V/NativeCrypto( 8864): SSL shutdown failed: ssl=0xb40000726aa4a958: I/O error during system call, Success
W/ManagedChannelImpl( 8864): [{0}] Failed to resolve name. status={1}
W/Firestore( 8864): (23.0.1) [WatchStream]: (c9d068c) Stream closed with status: Status{code=UNAVAILABLE, description=null, cause=java.net.ConnectException: failed to connect to firestore.googleapis.com/142.251.37.202 (port 443) from /:: (port 0): connect failed: ENETUNREACH (Network is unreachable)
W/Firestore( 8864): at libcore.io.IoBridge.connect(IoBridge.java:142)
W/Firestore( 8864): at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
W/Firestore( 8864): at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
W/Firestore( 8864): at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
W/Firestore( 8864): at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
W/Firestore( 8864): at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
W/Firestore( 8864): at java.net.Socket.connect(Socket.java:621)
W/Firestore( 8864): at java.net.Socket.connect(Socket.java:570)
W/Firestore( 8864): at java.net.Socket.<init>(Socket.java:450)
W/Firestore( 8864): at java.net.Socket.<init>(Socket.java:250)
W/Firestore( 8864): at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:285)
W/Firestore( 8864): at io.grpc.okhttp.OkHttpClientTransport$4.run(OkHttpClientTransport.java:555)
W/Firestore( 8864): at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
W/Firestore( 8864): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/Firestore( 8864): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/Firestore( 8864): at java.lang.Thread.run(Thread.java:923)
W/Firestore( 8864): Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)
W/Firestore( 8864): at libcore.io.Linux.connect(Native Method)
W/Firestore( 8864): at libcore.io.ForwardingOs.connect(ForwardingOs.java:94)
W/Firestore( 8864): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:138)
W/Firestore( 8864): at libcore.io.ForwardingOs.connect(ForwardingOs.java:94)
W/Firestore( 8864): at libcore.io.IoBridge.connectErrno(IoBridge.java:156)
W/Firestore( 8864): at libcore.io.IoBridge.connect(IoBridge.java:134)
W/Firestore( 8864): ... 15 more
W/Firestore( 8864): }.
解决方案
查看FirebaseFirestoreException.Code
文档,警告UNAVAILABLE
指的是:
该服务目前不可用。这很可能是暂时的情况,可以通过回退重试来纠正。
问题发生是因为没有互联网连接。对于在线数据库,设备大部分时间都应该在线。连接可以断开,但中断必须是暂时的;否则,您的应用程序将终止。