Amplify-android: DataStore crashes app when device loses network connection

Created on 28 May 2020  路  6Comments  路  Source: aws-amplify/amplify-android

While running an application that uses the DataStore (with cloud synchronization _enabled_), I see the DataStore initialize successfully, and begin to process subscription data:

I/amplify:aws-datastore: Starting processing subscription data buffer.

At this point, my device is connected to the Internet.

When I place the device into Airplane Mode, however, the application _crashes_, with the exception below.

Instead, I would expect the DataStore to operate in an "offline" mode, where-in mutations are queued into the PersistentMutationOutbox, to be dispatched later. When the device regains its connectivity, within a reasonable amount of time (a minute?) the Sync Engine should re-form the subscriptions, and start draining the mutation outbox.

Amplify Android Core, API, DataStore @ 1.0.0.

E/AndroidRuntime: FATAL EXCEPTION: OkHttp https://REDACTED.appsync-realtime-api.us-east-1.amazonaws.com/...
    Process: com.amplifyframework.datastore.sample, PID: 27020
    io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
        at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:73)
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:3)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)
        at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)
        at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)
        at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)聽
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:3)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)聽
        at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)聽
        at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)聽
        at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)聽
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)聽
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)聽
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)聽
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)聽
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)聽
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:764)聽
     Caused by: AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:2)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)聽
        at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)聽
        at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)聽
        at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)聽
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)聽
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)聽
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)聽
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)聽
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)聽
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:764)聽
Bug DataStore Flutter

Most helpful comment

Apologies for the delay on this. I am actively focused on a fix for this issue. Will provide an update ASAP.

All 6 comments

I save item using DataStore when my device is offline or turn off internet after save item, app crash. I follow https://docs.amplify.aws/lib/datastore/data-access/q/platform/android
TargetSdk : 29
Kotlin version: 1.3.72
Gradle version: 6.5
Android Gradle plugin version: 4.0.0
Amplify Android Core, API, DataStore @ 1.0.0.

amplify:aws-datastore: An error occurred on the remote Comment subscription for model ON_CREATE.
    AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription failed., cause=javax.net.ssl.SSLException: Read error: ssl=0x7abee5c988: I/O error during system call, Software caused connection abort, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:784)
     Caused by: AmplifyException {message=Subscription failed., cause=javax.net.ssl.SSLException: Read error: ssl=0x7abee5c988: I/O error during system call, Software caused connection abort, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)聽
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)聽
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)聽
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:784)聽
     Caused by: javax.net.ssl.SSLException: Read error: ssl=0x7abee5c988: 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.NativeSsl.read(NativeSsl.java:399)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:546)
        at okio.InputStreamSource.read(JvmOkio.kt:90)
        at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:129)
        at okio.RealBufferedSource.request(RealBufferedSource.kt:207)
        at okio.RealBufferedSource.require(RealBufferedSource.kt:201)
        at okio.RealBufferedSource.readByte(RealBufferedSource.kt:210)
        at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
        at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
        at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:784)聽
I/MyAmplifyApp: Saved a blog.
2020-06-05 10:55:31.626 31475-31536/jp.co.yakult.healthcareapp W/System.err: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
2020-06-05 10:55:31.626 31475-31536/jp.co.yakult.healthcareapp W/System.err: SLF4J: Defaulting to no-operation (NOP) logger implementation
2020-06-05 10:55:31.626 31475-31536/jp.co.yakult.healthcareapp W/System.err: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2020-06-05 10:55:31.644 31475-32698/jp.co.yakult.healthcareapp I/amplify:aws-datastore: Successfully enqueued PendingMutation{mutatedItem=Blog {id=a4909218-3a47-46f8-9b2e-94606d670e9ename=0 Test Blog}}, classOfMutatedItem=class com.amplifyframework.datastore.generated.model.Blog, mutationType=CREATE, mutationId=66d4840a-a6e0-11ea-ba14-010d0a606347, predicate=null}
2020-06-05 10:55:31.775 31475-32699/jp.co.yakult.healthcareapp D/AWSMobileClient: Inspecting user state details
2020-06-05 10:55:31.778 31475-32699/jp.co.yakult.healthcareapp D/AWSMobileClient: waitForSignIn: userState:GUEST
2020-06-05 10:55:32.721 31475-32699/jp.co.yakult.healthcareapp I/amplify:aws-datastore: Mutation outbox has pending mutation for a4909218-3a47-46f8-9b2e-94606d670e9e, refusing to merge.
2020-06-05 10:55:32.734 31475-32698/jp.co.yakult.healthcareapp I/amplify:aws-datastore: Successfully removed from mutations outboxPendingMutation{mutatedItem=Blog {id=a4909218-3a47-46f8-9b2e-94606d670e9ename=0 Test Blog}}, classOfMutatedItem=class com.amplifyframework.datastore.generated.model.Blog, mutationType=CREATE, mutationId=66d4840a-a6e0-11ea-ba14-010d0a606347, predicate=null}
2020-06-05 10:55:37.394 31475-31475/jp.co.yakult.healthcareapp V/InputMethodManager: Reporting focus gain, without startInput
2020-06-05 10:56:44.636 31475-31475/jp.co.yakult.healthcareapp V/InputMethodManager: Reporting focus gain, without startInput
2020-06-05 10:56:44.797 31475-31567/jp.co.yakult.healthcareapp W/amplify:aws-datastore: An error occurred on the remote Comment subscription for model ON_CREATE.
    AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription failed., cause=javax.net.ssl.SSLException: Read error: ssl=0x7abee5c988: I/O error during system call, Software caused connection abort, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:784)
     Caused by: AmplifyException {message=Subscription failed., cause=javax.net.ssl.SSLException: Read error: ssl=0x7abee5c988: I/O error during system call, Software caused connection abort, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)聽
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)聽
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)聽
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:784)聽
     Caused by: javax.net.ssl.SSLException: Read error: ssl=0x7abee5c988: 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.NativeSsl.read(NativeSsl.java:399)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:546)
        at okio.InputStreamSource.read(JvmOkio.kt:90)
        at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:129)
        at okio.RealBufferedSource.request(RealBufferedSource.kt:207)
        at okio.RealBufferedSource.require(RealBufferedSource.kt:201)
        at okio.RealBufferedSource.readByte(RealBufferedSource.kt:210)
        at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
        at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
        at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:784)聽
2020-06-05 10:56:45.215 31475-31475/jp.co.yakult.healthcareapp V/AudioManager: playSoundEffect   effectType: 0
2020-06-05 10:56:45.216 31475-31475/jp.co.yakult.healthcareapp V/AudioManager: querySoundEffectsEnabled...
2020-06-05 10:56:45.226 31475-421/jp.co.yakult.healthcareapp I/MyAmplifyApp: Saved a blog.
2020-06-05 10:56:45.240 31475-421/jp.co.yakult.healthcareapp I/amplify:aws-datastore: Successfully enqueued PendingMutation{mutatedItem=Blog {id=2ca5243c-3376-4cf2-b53b-9c026aa96f47name=1 Test Blog}}, classOfMutatedItem=class com.amplifyframework.datastore.generated.model.Blog, mutationType=CREATE, mutationId=92b238bb-a6e0-11ea-ba14-3de77bb5227e, predicate=null}
2020-06-05 10:56:45.362 31475-429/jp.co.yakult.healthcareapp D/AWSMobileClient: Inspecting user state details
2020-06-05 10:56:45.366 31475-429/jp.co.yakult.healthcareapp D/AWSMobileClient: waitForSignIn: userState:GUEST
2020-06-05 10:56:45.516 31475-429/jp.co.yakult.healthcareapp W/amplify:aws-datastore: Failed to publish a local change = PendingMutation{mutatedItem=Blog {id=2ca5243c-3376-4cf2-b53b-9c026aa96f47name=1 Test Blog}}, classOfMutatedItem=class com.amplifyframework.datastore.generated.model.Blog, mutationType=CREATE, mutationId=92b238bb-a6e0-11ea-ba14-3de77bb5227e, predicate=null}
2020-06-05 10:56:45.518 31475-31536/jp.co.yakult.healthcareapp W/amplify:aws-datastore: Error ended observation of mutation outbox: 
2020-06-05 10:56:54.803 31475-31567/jp.co.yakult.healthcareapp W/System.err: io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:73)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:3)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)
2020-06-05 10:56:54.804 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)
2020-06-05 10:56:54.805 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
2020-06-05 10:56:54.806 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
2020-06-05 10:56:54.807 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2020-06-05 10:56:54.807 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at java.lang.Thread.run(Thread.java:784)
2020-06-05 10:56:54.808 31475-31567/jp.co.yakult.healthcareapp W/System.err: Caused by: AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
2020-06-05 10:56:54.808 31475-31567/jp.co.yakult.healthcareapp W/System.err:    ... 24 more
2020-06-05 10:56:54.809 31475-31567/jp.co.yakult.healthcareapp W/System.err: Caused by: AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
2020-06-05 10:56:54.809 31475-31567/jp.co.yakult.healthcareapp W/System.err:     at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:2)
2020-06-05 10:56:54.809 31475-31567/jp.co.yakult.healthcareapp W/System.err:    ... 21 more
2020-06-05 10:56:54.815 31475-31567/jp.co.yakult.healthcareapp E/AndroidRuntime: FATAL EXCEPTION: OkHttp https://fkgqfxh6tjh5tegzkz7w6w2k7m.appsync-realtime-api.ap-northeast-1.amazonaws.com/...
    Process: jp.co.yakult.healthcareapp, PID: 31475
    io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
        at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:73)
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:3)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)
        at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)
        at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)
        at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:784)
     Caused by: AmplifyException {message=Error during subscription., cause=AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)聽
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:3)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)聽
        at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)聽
        at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)聽
        at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)聽
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)聽
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)聽
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)聽
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)聽
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)聽
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:784)聽
     Caused by: AmplifyException {message=Subscription completion not acknowledged., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.awaitSubscriptionCompleted(SubscriptionEndpoint.java:2)
        at com.amplifyframework.api.aws.SubscriptionEndpoint.releaseSubscription(SubscriptionEndpoint.java:26)聽
        at com.amplifyframework.api.aws.SubscriptionOperation.cancel(SubscriptionOperation.java:3)聽
        at com.amplifyframework.datastore.AmplifyDisposables$1.dispose(AmplifyDisposables.java:3)聽
        at io.reactivex.internal.disposables.DisposableHelper.dispose(DisposableHelper.java:124)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.dispose(ObservableCreate.java:121)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.tryOnError(ObservableCreate.java:86)聽
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:72)聽
        at com.amplifyframework.datastore.syncengine.-$$Lambda$e4FRR6iHUV0ToSpRUkOM1VPObso.accept(Unknown Source:4)聽
        at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:1)聽
        at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$8gXTT9bgLZGP51blif6hkh7EwIc.accept(Unknown Source:4)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$Subscription.dispatchError(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.notifyError(SubscriptionEndpoint.java:2)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint.access$200(SubscriptionEndpoint.java:1)聽
        at com.amplifyframework.api.aws.SubscriptionEndpoint$1.onFailure(SubscriptionEndpoint.java:1)聽
        at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.kt:592)聽
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:197)聽
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:504)聽
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)聽
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)聽
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)聽
        at java.lang.Thread.run(Thread.java:784)聽
2020-06-05 10:56:54.847 31475-31475/jp.co.yakult.healthcareapp D/ZrHung.AppEyeUiProbe: stop checker.
2020-06-05 10:56:54.926 31475-31567/jp.co.yakult.healthcareapp I/Process: Sending signal. PID: 31475 SIG: 9

Any progress on this issue?

Apologies for the delay on this. I am actively focused on a fix for this issue. Will provide an update ASAP.

A new version (1.1.0) has just been released which contains fixes for this issue. If you encounter this error, feel free to re-open this issue.

Hi @rjuliano, as @jamesonwilliams has mentioned in his opening post, I'm facing the same issue in version 1.6.0.

@Amplifiyer is also running into this issue in #1022 (closed as duplicate of current #541):

When a flutter datastore app loses network connection, it crashes with the errors in the attached logs
network.on.-.off.txt

At the time the network was turned off, the mutation queue was empty.

Starting the app in a no network state causes these errors and bringing network back doesn't > start the subscriptions.
network.off.txt

Was this page helpful?
0 / 5 - 0 ratings