In my app I started logging all handleFault
events from Backendless SDK and noticed an unexpectedly high (12K events in a week for an app with ~4K monthly users) number of connection problems to Backendless. (The app checks for internet connectivity before attempting network requests so the problem is not lack of internet altogether)
There are several types of errors logged:
1.
BackendlessFault{ code: ‘Internal client exception’, message: ‘Unable to resolve host “api.backendless.com”: No address associated with hostname’, detail: 'java.net.UnknownHostException: Unable to resolve host “api.backendless.com”: No address associated with hostname at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103) at java.net.InetAddress.getAllByName(InetAddress.java:1152) at com.android.okhttp.Dns$1.lookup(Dns.java:41) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:178) at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:144) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:86) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:176) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:219) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:30) at weborb.client.ioEngine.HttpIOEngine.send(HttpIOEngine.java:195) at weborb.client.ioEngine.HttpIOEngine.invoke(HttpIOEngine.java:140) at weborb.client.WeborbClient.invoke(WeborbClient.java:138) at com.backendless.Invoker.invokeSync(Invoker.java:95) at com.backendless.Inv<truncated: 732 chars>
BackendlessFault{ code: ‘Internal client exception’, message: ‘Read error: ssl=0x73359f1900: I/O error during system call, Software caused connection abort’, detail: 'javax.net.ssl.SSLException: Read error: ssl=0x73359f1900: I/O error during system call, Software caused connection abort at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method) at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:741) at com.android.okhttp.okio.Okio$2.read(Okio.java:136) at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211) at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306) at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:300) at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196) at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:186) at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:127) at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737) at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:609) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:471) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaders(HttpURLConnectionImpl.java:163) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaderFields(HttpURLConnectionImpl.java:223) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getHeaderFields(DelegatingHttpsURLConnection.java:178) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getHeaderFields(Unknown Source:0) at weborb.client.ioEngine.HttpIOEngine.storeCookies(HttpIOEngine.java:93) at weborb.client.ioEngine.HttpIOEngine.send(HttpIOEngine.java:199) at weborb.client.ioEngine.HttpIOEngine.invoke(HttpIOEngine.java:140) at weborb.client.WeborbC<truncated: 376 chars>
BackendlessFault{ code: ‘Internal client exception’, message: ‘timeout’, detail: 'java.net.SocketTimeoutException: timeout at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:225) at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:263) at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:217) at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:317) at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:311) at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:207) at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:395) at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:146) at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:900) at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:772) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:493) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:429) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaders(HttpURLConnectionImpl.java:171) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaderFields(HttpURLConnectionImpl.java:231) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getHeaderFields(DelegatingHttpsURLConnection.java:179) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getHeaderFields(HttpsURLConnectionImpl.java:30) at weborb.client.ioEngine.HttpIOEngine.storeCookies(HttpIOEngine.java:93) at weborb.client.ioEngine.HttpIOEngine.send(HttpIOEngine.java:199) at weborb.client.ioEngine.HttpIOEngine.invoke(HttpIOEngine.java:140) at weborb.client.WeborbClient.invoke(WeborbClient.java:138) at com.backendless.Invoker.invokeSync(Invoker.java:95) at com.backendless.Invoker$1.run(Invoker.java:71) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at<truncated: 459 chars>
BackendlessFault{ code: ‘Internal client exception’, message: ‘SSL handshake timed out’, detail: 'java.net.SocketTimeoutException: SSL handshake timed out at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:387) at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:226) at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:196) at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:153) at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:219) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:30) at weborb.client.ioEngine.HttpIOEngine.send(HttpIOEngine.java:195) at weborb.client.ioEngine.HttpIOEngine.invoke(HttpIOEngine.java:140) at weborb.client.WeborbClient.invoke(WeborbClient.java:138) at com.backendless.Invoker.invokeSync(Invoker.java:95) at com.backendless.Invoker$1.run(Invoker.java:71) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at jav<truncated: 142 chars>
BackendlessFault{ code: ‘Internal client exception’, message: ‘Failed to connect to api.backendless.com/216.87.89.89:443’, detail: 'java.net.ConnectException: Failed to connect to api.backendless.com/216.87.89.89:443 at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:143) at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(Unknown Source:0) at weborb.client.ioEngine.HttpIOEngine.send(HttpIOEngine.java:195) at weborb.client.ioEngine.HttpIOEngine.invoke(HttpIOEngine.java:140) at weborb.client.WeborbClient.invoke(WeborbClient.java:138) at com.backendless.Invoker.invokeSync(Invoker.java:95) at com.backendless.Invoker$1.run(Invoker.java:71) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:784) ', extendedData: ‘{}’ }
I guess it’s normal to have a small number of such errors but as I said it looks like all users are experiencing intermittent connection to Backendless. Are you aware of such problems? Are they temporary or consistent?