amplify-flutter
amplify-flutter copied to clipboard
Multi Auth Initial GraphQL API sync fails (using default User Pool as private and AWS IAM as public auth)
Description
I tried to setup up project with multi auth role for my model, graphql.schema contains models with private auth (CognitoUserPool) and public read operation (AWS IAM). When first time startup without no user Datastore sync fails with exception but not when user logs in
type Todo @model @auth(rules: [{allow: private}, {allow: public, operations: [read], provider: iam}]) { id: ID! name: String! description: String isComplete: Boolean! }
- ampifly api
- Default auth: Cognito User Pool
- IAM
- amplify auth
- Allow unauthenticated logins? (Provides scoped down permissions that you can control via AWS IAM) Yes
Debug Log
√ Built build\app\outputs\flutter-apk\app-debug.apk.
Connecting to VM Service at ws://127.0.0.1:11462/VQJNi7cFW7k=/ws
I/amplify:flutter:api( 6684): Added API plugin
I/amplify:flutter:auth_cognito( 6684): Added Auth plugin
D/AWSMobileClient( 6684): Using the SignInProviderConfig from `awsconfiguration.json`.
D/AWSMobileClient( 6684): Inspecting user state details
I/amplify:aws-datastore( 6684): Creating table: Todo
I/amplify:aws-datastore( 6684): Creating table: PersistentRecord
I/amplify:aws-datastore( 6684): Creating table: PersistentModelVersion
I/amplify:aws-datastore( 6684): Creating table: LastSyncMetadata
I/amplify:aws-datastore( 6684): Creating table: ModelMetadata
I/amplify:aws-datastore( 6684): Creating index for table: PersistentRecord
I/flutter ( 6684): amplify configured
I/amplify:flutter:datastore( 6684): Unhandled DataStoreHubEvent: SUCCEEDED
I/amplify:flutter:datastore( 6684): com.amplifyframework.core.category.CategoryInitializationResult@f605415
I/amplify:aws-datastore( 6684): Orchestrator lock acquired.
I/amplify:aws-datastore( 6684): Orchestrator transitioning from STOPPED to SYNC_VIA_API
I/amplify:aws-datastore( 6684): Starting to observe local storage changes.
I/amplify:aws-datastore( 6684): Now observing local storage. Local changes will be enqueued to mutation outbox.
I/amplify:aws-datastore( 6684): Setting currentState to LOCAL_ONLY
I/amplify:aws-datastore( 6684): Setting currentState to SYNC_VIA_API
I/amplify:flutter:datastore( 6684): Established a new stream form flutter com.amplifyframework.datastore.storage.sqlite.-$$Lambda$coxN3FV0myAqN-gpZfZvj7bzSOI@c0e81df
I/amplify:aws-datastore( 6684): Starting API synchronization mode.
I/amplify:aws-datastore( 6684): Orchestrator lock released.
I/amplify:aws-datastore( 6684): Starting processing subscription events.
I/amplify:aws-datastore( 6684): Orchestrator lock acquired.
I/amplify:aws-datastore( 6684): Orchestrator lock released.
W/amplify:aws-api( 6684): A subscription error occurred.
W/amplify:aws-api( 6684): ApiAuthException{message=You must be signed-in with Cognito Userpools to be able to use getTokens, cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:98)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.getLatestAuthToken(DefaultCognitoUserPoolsAuthProvider.java:104)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.forCognitoUserPools(SubscriptionAuthorizer.java:147)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeaders(SubscriptionAuthorizer.java:96)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeadersForConnection(SubscriptionAuthorizer.java:71)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.buildConnectionRequestUrl(SubscriptionEndpoint.java:300)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:127)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-api( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-api( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
W/AWSMobileClient( 6684): signalTokensNotAvailable
W/InternalCallback( 6684): Library attempted to call user callback twice, expected only once
W/amplify:aws-api( 6684): A subscription error occurred.
W/amplify:aws-api( 6684): ApiAuthException{message=You must be signed-in with Cognito Userpools to be able to use getTokens, cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:98)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.getLatestAuthToken(DefaultCognitoUserPoolsAuthProvider.java:104)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.forCognitoUserPools(SubscriptionAuthorizer.java:147)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeaders(SubscriptionAuthorizer.java:96)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeadersForConnection(SubscriptionAuthorizer.java:71)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.buildConnectionRequestUrl(SubscriptionEndpoint.java:300)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:127)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-api( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-api( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
W/AWSMobileClient( 6684): signalTokensNotAvailable
W/InternalCallback( 6684): Library attempted to call user callback twice, expected only once
I/System.out( 6684): [socket]:check permission begin!
W/System ( 6684): ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out( 6684): [socket] e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaUtils
W/amplify:aws-api( 6684): Websocket listener received a CONNECTION_ERROR event. {"payload":{"errors":[{"errorType":"com.amazonaws.deepdish.graphql.auth#UnauthorizedException","message":"Valid authorization header not provided.","errorCode":400}]},"type":"connection_error"}
W/amplify:aws-api( 6684): A subscription error occurred.
W/amplify:aws-api( 6684): ApiException{message=Connection failed., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:145)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-api( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-api( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
W/amplify:aws-api( 6684): Websocket connection failed.
W/amplify:aws-api( 6684): java.io.EOFException
W/amplify:aws-api( 6684): at okio.RealBufferedSource.require(RealBufferedSource.kt:199)
W/amplify:aws-api( 6684): at okio.RealBufferedSource.readByte(RealBufferedSource.kt:209)
W/amplify:aws-api( 6684): at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
W/amplify:aws-api( 6684): at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
W/amplify:aws-api( 6684): at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
W/amplify:aws-api( 6684): at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
W/amplify:aws-api( 6684): at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
E/amplify:aws-datastore( 6684): Failure encountered while attempting to start API sync.
E/amplify:aws-datastore( 6684): DataStoreException{message=Error during subscription., cause=ApiException{message=Connection failed., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
E/amplify:aws-datastore( 6684): at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:331)
E/amplify:aws-datastore( 6684): at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$797ziDK0io-qXODzROLOA77stS8.accept(Unknown Source:4)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.emitErrorAndCancelSubscription(MutiAuthSubscriptionOperation.java:178)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$dispatchRequest$2$MutiAuthSubscriptionOperation(MutiAuthSubscriptionOperation.java:135)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$u8wP1W3-uXL3qPJDRDMWzN8avss.accept(Unknown Source:4)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:144)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
E/amplify:aws-datastore( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
E/amplify:aws-datastore( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/amplify:aws-datastore( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/amplify:aws-datastore( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/amplify:aws-datastore( 6684): at java.lang.Thread.run(Thread.java:923)
E/amplify:aws-datastore( 6684): Caused by: ApiException{message=Connection failed., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
E/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:145)
E/amplify:aws-datastore( 6684): ... 8 more
W/amplify:aws-datastore( 6684): API sync failed - transitioning to LOCAL_ONLY.
W/amplify:aws-datastore( 6684): DataStoreException{message=Error during subscription., cause=ApiException{message=Connection failed., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}, recoverySuggestion=Evaluate details.}
W/amplify:aws-datastore( 6684): at com.amplifyframework.datastore.appsync.AppSyncClient.lambda$subscription$3(AppSyncClient.java:331)
W/amplify:aws-datastore( 6684): at com.amplifyframework.datastore.appsync.-$$Lambda$AppSyncClient$797ziDK0io-qXODzROLOA77stS8.accept(Unknown Source:4)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.emitErrorAndCancelSubscription(MutiAuthSubscriptionOperation.java:178)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$dispatchRequest$2$MutiAuthSubscriptionOperation(MutiAuthSubscriptionOperation.java:135)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$u8wP1W3-uXL3qPJDRDMWzN8avss.accept(Unknown Source:4)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:144)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-datastore( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-datastore( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-datastore( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-datastore( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-datastore( 6684): at java.lang.Thread.run(Thread.java:923)
W/amplify:aws-datastore( 6684): Caused by: ApiException{message=Connection failed., cause=null, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-datastore( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:145)
W/amplify:aws-datastore( 6684): ... 8 more
I/amplify:aws-datastore( 6684): Orchestrator transitioning from SYNC_VIA_API to LOCAL_ONLY
I/amplify:aws-datastore( 6684): Setting currentState to LOCAL_ONLY
I/amplify:aws-datastore( 6684): Stopping subscription processor.
I/amplify:aws-datastore( 6684): Stopped subscription processor.
W/amplify:aws-api( 6684): A subscription error occurred.
W/amplify:aws-api( 6684): ApiException{message=Interrupted waiting for Cognito Userpools token., cause=java.lang.InterruptedException, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:90)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.getLatestAuthToken(DefaultCognitoUserPoolsAuthProvider.java:104)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.forCognitoUserPools(SubscriptionAuthorizer.java:147)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeaders(SubscriptionAuthorizer.java:96)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeadersForConnection(SubscriptionAuthorizer.java:71)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.buildConnectionRequestUrl(SubscriptionEndpoint.java:300)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:127)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-api( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-api( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
W/amplify:aws-api( 6684): Caused by: java.lang.InterruptedException
W/amplify:aws-api( 6684): at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1045)
W/amplify:aws-api( 6684): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1366)
W/amplify:aws-api( 6684): at java.util.concurrent.Semaphore.acquire(Semaphore.java:318)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:88)
W/amplify:aws-api( 6684): ... 14 more
W/amplify:aws-api( 6684): A subscription error occurred.
W/amplify:aws-api( 6684): ApiException{message=Interrupted waiting for Cognito Userpools token., cause=java.lang.InterruptedException, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:90)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.getLatestAuthToken(DefaultCognitoUserPoolsAuthProvider.java:104)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.forCognitoUserPools(SubscriptionAuthorizer.java:147)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeaders(SubscriptionAuthorizer.java:96)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeadersForConnection(SubscriptionAuthorizer.java:71)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.buildConnectionRequestUrl(SubscriptionEndpoint.java:300)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:127)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-api( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-api( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
W/amplify:aws-api( 6684): Caused by: java.lang.InterruptedException
W/amplify:aws-api( 6684): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1364)
W/amplify:aws-api( 6684): at java.util.concurrent.Semaphore.acquire(Semaphore.java:318)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:88)
W/amplify:aws-api( 6684): ... 14 more
W/amplify:aws-api( 6684): A subscription error occurred.
W/amplify:aws-api( 6684): ApiException{message=Interrupted waiting for Cognito Userpools token., cause=java.lang.InterruptedException, recoverySuggestion=Sorry, we don't have a suggested fix for this error yet.}
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:90)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.getLatestAuthToken(DefaultCognitoUserPoolsAuthProvider.java:104)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.forCognitoUserPools(SubscriptionAuthorizer.java:147)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeaders(SubscriptionAuthorizer.java:96)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionAuthorizer.createHeadersForConnection(SubscriptionAuthorizer.java:71)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.buildConnectionRequestUrl(SubscriptionEndpoint.java:300)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.SubscriptionEndpoint.requestSubscription(SubscriptionEndpoint.java:127)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.dispatchRequest(MutiAuthSubscriptionOperation.java:113)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.MutiAuthSubscriptionOperation.lambda$iziEcYpvlINdYbit2it7fDbbt8A(Unknown Source:0)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.-$$Lambda$MutiAuthSubscriptionOperation$iziEcYpvlINdYbit2it7fDbbt8A.run(Unknown Source:2)
W/amplify:aws-api( 6684): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/amplify:aws-api( 6684): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/amplify:aws-api( 6684): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/amplify:aws-api( 6684): at java.lang.Thread.run(Thread.java:923)
W/amplify:aws-api( 6684): Caused by: java.lang.InterruptedException
W/amplify:aws-api( 6684): at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1364)
W/amplify:aws-api( 6684): at java.util.concurrent.Semaphore.acquire(Semaphore.java:318)
W/amplify:aws-api( 6684): at com.amplifyframework.api.aws.sigv4.DefaultCognitoUserPoolsAuthProvider.fetchToken(DefaultCognitoUserPoolsAuthProvider.java:88)
W/amplify:aws-api( 6684): ... 14 more
Categories
- [ ] Analytics
- [ ] API (REST)
- [x] API (GraphQL)
- [ ] Auth
- [ ] Authenticator
- [x] DataStore
- [ ] Storage
Steps to Reproduce
- amplify api add (default Cognito User Pool and additional AWS IAM)
- amplify auth add (Allow unauthenticated logins? (Provides scoped down permissions that you can control via AWS IAM) Yes)
- add model to your schema with private (Cognito User Pool) and public read (AWS IAM) auth
- add AuthModeStrategy.multiAuth to AmplifyDatastore
- start the app
Screenshots
No response
Platforms
- [x] iOS
- [x] Android
Android Device/Emulator API Level
No response
Environment
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.10.4, on Microsoft Windows [Version 10.0.19044.1706], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[√] Chrome - develop for the web
[X] Visual Studio - develop for Windows
X Visual Studio not installed; this is necessary for Windows development.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2021.2)
[√] VS Code (version 1.67.2)
[√] Connected device (4 available)
[√] HTTP Host Availability
! Doctor found issues in 1 category.
Dependencies
Dart SDK 2.16.2
Flutter SDK 2.10.4
sister_help 1.0.0+1
dependencies:
- amplify_api 0.5.1 [amplify_api_plugin_interface amplify_core amplify_api_android amplify_api_ios collection flutter meta plugin_platform_interface]
- amplify_auth_cognito 0.5.1 [amplify_auth_cognito_android amplify_auth_cognito_ios amplify_auth_plugin_interface amplify_core collection flutter plugin_platform_interface]
- amplify_datastore 0.5.1 [flutter amplify_datastore_plugin_interface amplify_core plugin_platform_interface meta collection async]
- amplify_flutter 0.5.1 [amplify_analytics_plugin_interface amplify_api_plugin_interface amplify_auth_plugin_interface amplify_core amplify_datastore_plugin_interface amplify_flutter_android amplify_flutter_ios amplify_storage_plugin_interface collection flutter json_annotation meta plugin_platform_interface]
- connectivity_plus 1.1.0 [flutter meta connectivity_plus_platform_interface connectivity_plus_linux connectivity_plus_macos connectivity_plus_web connectivity_plus_windows]
- cupertino_icons 1.0.4
- cupertino_tabbar 2.0.0 [flutter]
- flutter 0.0.0 [characters collection material_color_utilities meta typed_data vector_math sky_engine]
- flutter_dialogs 2.1.1 [flutter]
- flutter_image_compress 1.1.0 [flutter]
- flutter_launcher_icons 0.9.2 [args image path yaml]
- flutter_localizations 0.0.0 [flutter intl characters clock collection material_color_utilities meta path typed_data vector_math]
- hive 2.2.1 [meta crypto]
- hive_flutter 1.1.0 [flutter hive path_provider path]
- image_picker 0.8.5+3 [flutter image_picker_android image_picker_for_web image_picker_ios image_picker_platform_interface]
- intl 0.17.0 [clock path]
- mqtt_client 9.6.8 [typed_data event_bus path crypto meta]
- package_info_plus 1.4.2 [flutter package_info_plus_platform_interface package_info_plus_linux package_info_plus_macos package_info_plus_windows package_info_plus_web]
- pdf 3.6.4 [archive barcode crypto image meta path_parsing vector_math xml]
- permission_handler 9.2.0 [flutter meta permission_handler_android permission_handler_apple permission_handler_windows permission_handler_platform_interface]
- pin_code_fields 7.4.0 [flutter]
- provider 5.0.0 [collection flutter nested]
- qr_code_scanner 0.6.1 [js flutter flutter_web_plugins]
- qr_flutter 4.0.0 [flutter qr]
- share_plus 4.0.4 [meta mime flutter share_plus_platform_interface share_plus_linux share_plus_macos share_plus_windows share_plus_web]
transitive dependencies:
- amplify_analytics_plugin_interface 0.5.1 [amplify_core flutter meta]
- amplify_api_android 0.5.1 [flutter]
- amplify_api_ios 0.5.1 [amplify_core flutter]
- amplify_api_plugin_interface 0.5.1 [amplify_core collection flutter json_annotation meta]
- amplify_auth_cognito_android 0.5.1 [flutter]
- amplify_auth_cognito_ios 0.5.1 [amplify_core flutter]
- amplify_auth_plugin_interface 0.5.1 [amplify_core flutter meta]
- amplify_core 0.5.1 [collection date_time_format flutter meta plugin_platform_interface uuid]
- amplify_datastore_plugin_interface 0.5.1 [flutter meta collection amplify_core]
- amplify_flutter_android 0.5.1 [flutter]
- amplify_flutter_ios 0.5.1 [amplify_core flutter]
- amplify_storage_plugin_interface 0.5.1 [flutter meta amplify_core]
- archive 3.3.0 [crypto path]
- args 2.3.1
- async 2.8.2 [collection meta]
- barcode 2.1.0 [meta qr]
- characters 1.2.0
- charcode 1.3.1
- clock 1.1.0
- collection 1.15.0
- connectivity_plus_linux 1.3.0 [flutter connectivity_plus_platform_interface meta nm]
- connectivity_plus_macos 1.2.2 [connectivity_plus_platform_interface flutter]
- connectivity_plus_platform_interface 1.2.0 [flutter meta plugin_platform_interface]
- connectivity_plus_web 1.2.0 [connectivity_plus_platform_interface flutter_web_plugins flutter]
- connectivity_plus_windows 1.2.0 [connectivity_plus_platform_interface flutter]
- cross_file 0.3.3+1 [js meta]
- crypto 3.0.2 [typed_data]
- date_time_format 2.0.1
- dbus 0.7.3 [args ffi meta xml]
- event_bus 2.0.0
- ffi 1.2.1
- file 6.1.2 [meta path]
- flutter_plugin_android_lifecycle 2.0.6 [flutter]
- flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta typed_data vector_math]
- http 0.13.4 [async http_parser meta path]
- http_parser 4.0.1 [collection source_span string_scanner typed_data]
- image 3.1.3 [archive meta xml]
- image_picker_android 0.8.4+13 [flutter flutter_plugin_android_lifecycle image_picker_platform_interface]
- image_picker_for_web 2.1.8 [flutter flutter_web_plugins image_picker_platform_interface]
- image_picker_ios 0.8.5+5 [flutter image_picker_platform_interface]
- image_picker_platform_interface 2.5.0 [cross_file flutter http plugin_platform_interface]
- js 0.6.3
- json_annotation 4.5.0 [meta]
- material_color_utilities 0.1.3
- meta 1.7.0
- mime 1.0.2
- nested 1.0.0 [flutter]
- nm 0.5.0 [dbus]
- package_info_plus_linux 1.0.5 [package_info_plus_platform_interface flutter path]
- package_info_plus_macos 1.3.0 [flutter]
- package_info_plus_platform_interface 1.0.2 [flutter meta plugin_platform_interface]
- package_info_plus_web 1.0.5 [flutter flutter_web_plugins http meta package_info_plus_platform_interface]
- package_info_plus_windows 1.0.5 [package_info_plus_platform_interface ffi flutter win32]
- path 1.8.0
- path_parsing 0.2.1 [vector_math meta]
- path_provider 2.0.10 [flutter path_provider_android path_provider_ios path_provider_linux path_provider_macos path_provider_platform_interface path_provider_windows]
- path_provider_android 2.0.14 [flutter path_provider_platform_interface]
- path_provider_ios 2.0.9 [flutter path_provider_platform_interface]
- path_provider_linux 2.1.7 [ffi flutter path path_provider_platform_interface xdg_directories]
- path_provider_macos 2.0.6 [flutter path_provider_platform_interface]
- path_provider_platform_interface 2.0.4 [flutter platform plugin_platform_interface]
- path_provider_windows 2.0.7 [ffi flutter path path_provider_platform_interface win32]
- permission_handler_android 9.0.2+1 [flutter permission_handler_platform_interface]
- permission_handler_apple 9.0.4 [flutter permission_handler_platform_interface]
- permission_handler_platform_interface 3.7.0 [flutter meta plugin_platform_interface]
- permission_handler_windows 0.1.0 [flutter permission_handler_platform_interface]
- petitparser 4.4.0 [meta]
- platform 3.1.0
- plugin_platform_interface 2.1.2 [meta]
- process 4.2.4 [file path platform]
- qr 2.1.0 [meta]
- share_plus_linux 3.0.0 [share_plus_platform_interface file flutter meta url_launcher]
- share_plus_macos 3.0.0 [share_plus_platform_interface flutter]
- share_plus_platform_interface 3.0.2 [flutter meta mime plugin_platform_interface]
- share_plus_web 3.0.0 [share_plus_platform_interface url_launcher flutter flutter_web_plugins meta]
- share_plus_windows 3.0.0 [share_plus_platform_interface flutter meta url_launcher]
- sky_engine 0.0.99
- source_span 1.8.1 [collection path term_glyph]
- string_scanner 1.1.0 [charcode source_span]
- term_glyph 1.2.0
- typed_data 1.3.0 [collection]
- url_launcher 6.1.2 [flutter url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows]
- url_launcher_android 6.0.17 [flutter url_launcher_platform_interface]
- url_launcher_ios 6.0.17 [flutter url_launcher_platform_interface]
- url_launcher_linux 3.0.1 [flutter url_launcher_platform_interface]
- url_launcher_macos 3.0.1 [flutter url_launcher_platform_interface]
- url_launcher_platform_interface 2.0.5 [flutter plugin_platform_interface]
- url_launcher_web 2.0.11 [flutter flutter_web_plugins url_launcher_platform_interface]
- url_launcher_windows 3.0.1 [flutter url_launcher_platform_interface]
- uuid 3.0.6 [crypto]
- vector_math 2.1.1
- win32 2.5.2 [ffi]
- xdg_directories 0.2.0+1 [meta path process]
- xml 5.3.1 [collection meta petitparser]
- yaml 3.1.1 [collection source_span string_scanner]
Device
Realme 6i, Iphone 13 pro
OS
IOS 15.4, ANDROID 11
CLI Version
8.0.1
Additional Context
- android
- distributionUrl=https://services.gradle.org/distributions/gradle-6.9-all.zip
- ext.kotlin_version = '1.6.10'
- classpath 'com.android.tools.build:gradle:4.2.0'
- compileSdkVersion 31
- minSdkVersion 21
- targetSdkVersion 30
- ios
- platform :ios, '13.0'
@AzharRaeisi In your generated Todo.dart
, what do you have for modelSchemaDefinition.authRules
?
@haverchuck thanks for reply, here is modelSchemaDefinition.authRules
modelSchemaDefinition.authRules = [
AuthRule(
authStrategy: AuthStrategy.PRIVATE,
operations: [
ModelOperation.CREATE,
ModelOperation.UPDATE,
ModelOperation.DELETE,
ModelOperation.READ
]),
AuthRule(
authStrategy: AuthStrategy.PUBLIC,
provider: AuthRuleProvider.IAM,
operations: [
ModelOperation.READ
])
];
Potenitally related issue: https://github.com/aws-amplify/amplify-android/issues/1392
@AzharRaeisi Could you please post your amplifyconfiguration.dart
(feel free to redact sensitive values).
@AzharRaeisi Could you please post your
amplifyconfiguration.dart
(feel free to redact sensitive values).
const amplifyconfig = ''' {
"UserAgent": "aws-amplify-cli/2.0",
"Version": "1.0",
"api": {
"plugins": {
"awsAPIPlugin": {
"xyz": {
"endpointType": "GraphQL",
"endpoint": "https://xyz.appsync-api.eu-west-1.amazonaws.com/graphql",
"region": "eu-west-1",
"authorizationType": "AMAZON_COGNITO_USER_POOLS"
}
}
}
},
"auth": {
"plugins": {
"awsCognitoAuthPlugin": {
"UserAgent": "aws-amplify-cli/0.1.0",
"Version": "0.1.0",
"IdentityManager": {
"Default": {}
},
"AppSync": {
"Default": {
"ApiUrl": "https://xyz.appsync-api.eu-west-1.amazonaws.com/graphql",
"Region": "eu-west-1",
"AuthMode": "AMAZON_COGNITO_USER_POOLS",
"ClientDatabasePrefix": "xyz_AMAZON_COGNITO_USER_POOLS"
},
"xyz_AWS_IAM": {
"ApiUrl": "https://xyz.appsync-api.eu-west-1.amazonaws.com/graphql",
"Region": "eu-west-1",
"AuthMode": "AWS_IAM",
"ClientDatabasePrefix": "xyz_AWS_IAM"
}
},
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "eu-west-1:xyz",
"Region": "eu-west-1"
}
}
},
"CognitoUserPool": {
"Default": {
"PoolId": "eu-west-1_xyz",
"AppClientId": "xyz",
"Region": "eu-west-1"
}
},
"Auth": {
"Default": {
"authenticationFlowType": "USER_SRP_AUTH",
"socialProviders": [],
"usernameAttributes": [
"PHONE_NUMBER"
],
"signupAttributes": [
"PHONE_NUMBER"
],
"passwordProtectionSettings": {
"passwordPolicyMinLength": 8,
"passwordPolicyCharacters": []
},
"mfaConfiguration": "OFF",
"mfaTypes": [
"SMS"
],
"verificationMechanisms": [
"EMAIL"
]
}
}
}
}
}
}''';
Potenitally related issue: aws-amplify/amplify-android#1392
I setup the project recently and even tried using API, but same result with API auth type
I even tried this way also
-
Default auth to Cognito-User-Pool and additional auth API KEY
-
Default auth to Cognito-User-Pool and additional auth AWS IAM
-
Default auth to API KEY and additional auth Cognito-User-Pool
-
Default auth to AWS IAM and additional auth Cognito-User-Pool
@AzharRaeisi Apologies for so much back-and-forth. I am using your schema and build specs (although I do not have access to realme physical device), and I cannot reproduce this issue.
Your logs are all for Android - I assume you are seeing the same behavior on iOS? If so, could you post those logs as well?
Do you see this same behavior when you run one of the Android emulators in Android Studio?
@AzharRaeisi Apologies for so much back-and-forth. I am using your schema and build specs (although I do not have access to realme physical device), and I cannot reproduce this issue.
Your logs are all for Android - I assume you are seeing the same behavior on iOS? If so, could you post those logs as well?
Do you see this same behavior when you run one of the Android emulators in Android Studio?
Apologies same here, if you can't reproduce the exception it mean your data is synchronizing with back-end?
yes, having problem on IOS as I mentioned while opening the issue, logs are clean but if I try to query datastore it emits the exception
yes, same behavior on Android emulators
Hey I'm trying to cognito default + api key for public, no luck for now
@AzharRaeisi and @haverchuck - this issue still exists for me too. I raised a similar issue recently, did not see this one at the time - feel free to merge them if you think they are identical which they may be - the one I raised is #1867
Hi all sorry for lacking activities on this issue. I've tested DataStore multi-auth based on a few similar issues in the repo, and found that both amplify-swift (v1) and amplify-android (v1+v2) have issues around multi-auth. This causes common issue that models with public permission cannot work correctly without signing in a user.
I'm going to close this issue as a duplicate, so we can track the progress in one place.