Open
Description
Before opening, please confirm:
- I have searched for duplicate or closed issues and discussions.
Language and Async Model
Java
Amplify Categories
DataStore
Gradle script dependencies
dependencies {
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
implementation 'com.google.firebase:firebase-crashlytics:19.4.3'
implementation 'androidx.navigation:navigation-fragment:2.8.9'
implementation 'androidx.navigation:navigation-ui:2.8.9'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
implementation "androidx.viewpager2:viewpager2:1.1.0"
testImplementation 'junit:junit:4.13.2'
//implementation "org.mozilla.geckoview:geckoview-beta-armeabi-v7a:96.0.20211228195952"
implementation "androidx.security:security-crypto:1.1.0-alpha07"
implementation('com.amazonaws:aws-android-sdk-mobile-client:2.79.0@aar') {
transitive = true
}
implementation 'com.amplifyframework:aws-auth-cognito:2.27.3'
implementation 'com.amplifyframework:core:2.27.3'
implementation 'com.amplifyframework:aws-api:2.27.3'
implementation 'com.amplifyframework:aws-datastore:2.27.3'
implementation 'com.clover.sdk:clover-android-sdk:323'
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.14'
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.14'
implementation 'me.pushy:sdk:1.0.121'
implementation platform('com.google.firebase:firebase-bom:33.13.0')
implementation 'com.google.firebase:firebase-analytics-ktx:22.4.0'
implementation('com.google.firebase:firebase-firestore:25.1.4')
implementation 'com.google.zxing:core:3.5.3'
// Support for Java 8 features
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}
Environment information
Android Gradle Plugin Version 8.9.2
Gradle Version 8.11.1 or 8.14
Please include any relevant guides or documentation you're referencing
No response
Describe the bug
Hello,
When I use DataStore on Android version com.amplifyframework:aws-datastore:2.25.0
it works fine, as soon as I update to com.amplifyframework:aws-datastore:2.27.0
(or 2.27.3) i get the attached crash log.
All other libraries are updated to latest.
Android Emulator version: 7.1.1 Nougat x86
Reproduction steps (if applicable)
No response
Code Snippet
private void configureAmplify(Context temporaryContext) {
if (GlobalState.isAwsMobileClientInitialized && !GlobalState.isAmplifyConfigured) {
try {
Amplify.addPlugin(new AWSCognitoAuthPlugin());
Amplify.addPlugin(new AWSDataStorePlugin());
Amplify.addPlugin(new AWSApiPlugin());
Amplify.configure(temporaryContext);
DataStoreCategory dataStorePlugin = Amplify.DataStore;
dataStorePlugin.start(()->{
Log.d("Amplify", "DataStore started");
}, error -> {
Log.e("Amplify", "Error starting DataStore: " + error.getMessage());
});
Log.d("Amplify", "Configured");
} catch (Exception e) {
Log.e("Amplify", "Message", e);
}
}
GlobalState.isAmplifyConfigured = true;
GlobalState.isLoading = false;
GlobalState.isAuthenticated = true;
notifyObservers();
}
Log output
Amplify D Configured
SQLiteLog E (1) no such table: pragma_table_info
art I Do full code cache collection, code=124KB, data=117KB
I Starting a blocking GC JitCodeCache
I After code cache collection, code=90KB, data=72KB
QueryConfig E Error querying configuration
java.lang.IllegalStateException: Failed to get plugin because initialization previously failed. See attached exception for details.
at com.amplifyframework.core.category.Category.getPluginIfConfiguredOrThrow(Category.java:272)
at com.amplifyframework.core.category.Category.getSelectedPlugin(Category.java:252)
at com.amplifyframework.datastore.DataStoreCategory.query(DataStoreCategory.java:128)
at com.atomicalsoftwares.integracionathmovil.fragments.ConfigurationFragment.lambda$querySavedConfiguration$29$com-atomicalsoftwares-integracionathmovil-fragments-ConfigurationFragment(ConfigurationFragment.java:346)
at com.atomicalsoftwares.integracionathmovil.fragments.ConfigurationFragment$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: AmplifyException{message=Failed to initialize the local storage adapter for the DataStore plugin., cause=java.lang.RuntimeException: DataStoreException{message=Error in initializing the SQLiteStorageAdapter, cause=android.database.sqlite.SQLiteException: no such table: pragma_table_info (code 1): , while compiling: SELECT COUNT(*) FROM pragma_table_info('LastSyncMetadata') WHERE name='syncExpression', recoverySuggestion=Sorry, we don’t have a recovery suggestion for this error.}, recoverySuggestion=Sorry, we don’t have a recovery suggestion for this error.}
at com.amplifyframework.datastore.AWSDataStorePlugin.initialize(AWSDataStorePlugin.java:313)
at com.amplifyframework.core.category.Category.initialize(Category.java:162)
at com.amplifyframework.core.Amplify.lambda$beginInitialization$0(Amplify.java:224)
at com.amplifyframework.core.Amplify$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.RuntimeException: DataStoreException{message=Error in initializing the SQLiteStorageAdapter, cause=android.database.sqlite.SQLiteException: no such table: pragma_table_info (code 1): , while compiling: SELECT COUNT(*) FROM pragma_table_info('LastSyncMetadata') WHERE name='syncExpression', recoverySuggestion=Sorry, we don’t have a recovery suggestion for this error.}
at io.reactivex.rxjava3.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:46)
at io.reactivex.rxjava3.internal.observers.BlockingMultiObserver.blockingAwait(BlockingMultiObserver.java:145)
at io.reactivex.rxjava3.core.Completable.blockingAwait(Completable.java:1490)
at com.amplifyframework.datastore.AWSDataStorePlugin.initialize(AWSDataStorePlugin.java:311)
at com.amplifyframework.core.category.Category.initialize(Category.java:162)
at com.amplifyframework.core.Amplify.lambda$beginInitialization$0(Amplify.java:224)
at com.amplifyframework.core.Amplify$$ExternalSyntheticLambda2.run(D8$$SyntheticClass:0)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: DataStoreException{message=Error in initializing the SQLiteStorageAdapter, cause=android.database.sqlite.SQLiteException: no such table: pragma_table_info (code 1): , while compiling: SELECT COUNT(*) FROM pragma_table_info('LastSyncMetadata') WHERE name='syncExpression', recoverySuggestion=Sorry, we don’t have a recovery suggestion for this error.}
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter.lambda$initialize$1(SQLiteStorageAdapter.java:308)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter$$ExternalSyntheticLambda8.accept(D8$$SyntheticClass:0)
at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.onError(CallbackCompletableObserver.java:64)
at io.reactivex.rxjava3.internal.operators.completable.CompletableFromSingle$CompletableFromSingleObserver.onError(CompletableFromSingle.java:41)
at io.reactivex.rxjava3.internal.operators.single.SingleFlatMap$SingleFlatMapCallback.onSuccess(SingleFlatMap.java:80)
at io.reactivex.rxjava3.internal.operators.single.SingleCreate$Emitter.onSuccess(SingleCreate.java:68)
E at com.amplifyframework.datastore.storage.sqlite.PersistentModelVersion$$ExternalSyntheticLambda4.accept(D8$$SyntheticClass:0)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter.lambda$query$6(SQLiteStorageAdapter.java:516)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter.$r8$lambda$tT7iwGvdjd78JB0nHqIUXEJjseg(SQLiteStorageAdapter.java)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter$$ExternalSyntheticLambda12.run(D8$$SyntheticClass:0)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 3 more
Caused by: android.database.sqlite.SQLiteException: no such table: pragma_table_info (code 1): , while compiling: SELECT COUNT(*) FROM pragma_table_info('LastSyncMetadata') WHERE name='syncExpression'
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1257)
at com.amplifyframework.datastore.storage.sqlite.migrations.AddSyncExpressionToLastSyncMetadata.needsMigration(AddSyncExpressionToLastSyncMetadata.java:74)
at com.amplifyframework.datastore.storage.sqlite.migrations.AddSyncExpressionToLastSyncMetadata.apply(AddSyncExpressionToLastSyncMetadata.java:44)
at com.amplifyframework.datastore.storage.sqlite.migrations.ModelMigrations.apply(ModelMigrations.java:49)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter.lambda$updateModels$13(SQLiteStorageAdapter.java:941)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter.$r8$lambda$i0pMwTy2cZsn6DITBpHZriTxIiY(SQLiteStorageAdapter.java)
at com.amplifyframework.datastore.storage.sqlite.SQLiteStorageAdapter$$ExternalSyntheticLambda2.apply(D8$$SyntheticClass:0)
at io.reactivex.rxjava3.internal.operators.single.SingleFlatMap$SingleFlatMapCallback.onSuccess(SingleFlatMap.java:77)
... 10 more
art I Do partial code cache collection, code=108KB, data=101KB
I After code cache collection, code=107KB, data=101KB
I Increasing code cache capacity to 512KB
Profi...ller D Installing profile for com.atomicalsoftwares.integracionathmovil
ampli...tore E DataStore initialization timed out.
java.util.concurrent.TimeoutException: The source did not signal an event for 5000 milliseconds and has been terminated.
at io.reactivex.rxjava3.internal.operators.completable.CompletableTimeout$DisposeTask.run(CompletableTimeout.java:109)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:41)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
System.err W io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.util.concurrent.TimeoutException: The source did not signal an event for 5000 milliseconds and has been terminated.
W at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.accept(CallbackCompletableObserver.java:47)
W at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.accept(CallbackCompletableObserver.java:26)
W at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.onError(CallbackCompletableObserver.java:64)
W at io.reactivex.rxjava3.internal.operators.completable.CompletablePeek$CompletableObserverImplementation.onError(CompletablePeek.java:95)
W at io.reactivex.rxjava3.internal.operators.completable.CompletablePeek$CompletableObserverImplementation.onError(CompletablePeek.java:95)
W at io.reactivex.rxjava3.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.onError(CompletableSubscribeOn.java:74)
W at io.reactivex.rxjava3.internal.operators.completable.CompletableTimeout$DisposeTask.run(CompletableTimeout.java:109)
W at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:41)
W at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:28)
W at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
W at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
W at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
W at java.lang.Thread.run(Thread.java:761)
W Caused by: java.util.concurrent.TimeoutException: The source did not signal an event for 5000 milliseconds and has been terminated.
W ... 8 more
ampli...tore E DataStore initialization timed out.
java.util.concurrent.TimeoutException: The source did not signal an event for 5000 milliseconds and has been terminated.
at io.reactivex.rxjava3.internal.operators.completable.CompletableTimeout$DisposeTask.run(CompletableTimeout.java:109)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:41)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Amplify E Error starting DataStore: Failed to start DataStore.
Andro...time E FATAL EXCEPTION: RxComputationThreadPool-2
Process: com.atomicalsoftwares.integracionathmovil, PID: 4544
io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.util.concurrent.TimeoutException: The source did not signal an event for 5000 milliseconds and has been terminated.
at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.accept(CallbackCompletableObserver.java:47)
at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.accept(CallbackCompletableObserver.java:26)
at io.reactivex.rxjava3.internal.observers.CallbackCompletableObserver.onError(CallbackCompletableObserver.java:64)
at io.reactivex.rxjava3.internal.operators.completable.CompletablePeek$CompletableObserverImplementation.onError(CompletablePeek.java:95)
at io.reactivex.rxjava3.internal.operators.completable.CompletablePeek$CompletableObserverImplementation.onError(CompletablePeek.java:95)
at io.reactivex.rxjava3.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.onError(CompletableSubscribeOn.java:74)
at io.reactivex.rxjava3.internal.operators.completable.CompletableTimeout$DisposeTask.run(CompletableTimeout.java:109)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:41)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.util.concurrent.TimeoutException: The source did not signal an event for 5000 milliseconds and has been terminated.
at io.reactivex.rxjava3.internal.operators.completable.CompletableTimeout$DisposeTask.run(CompletableTimeout.java:109)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:41)
at io.reactivex.rxjava3.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
amplifyconfiguration.json
No response
GraphQL Schema
Additional information and screenshots
No response