首页 > 解决方案 > 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): }.

标签: firebasefluttergoogle-cloud-firestore

解决方案


查看FirebaseFirestoreException.Code 文档,警告UNAVAILABLE指的是:

该服务目前不可用。这很可能是暂时的情况,可以通过回退重试来纠正。

问题发生是因为没有互联网连接。对于在线数据库,设备大部分时间都应该在线。连接可以断开,但中断必须是暂时的;否则,您的应用程序将终止。


推荐阅读