Skip to content

Commit 7d1e8b5

Browse files
committed
[Infra] Improve datastore support
Bump the dependency to version 1.1.7 to include the fix in https://developer.android.com/jetpack/androidx/releases/datastore#1.1.5 to mitigate `CorruptionExceptions` Additionally, a corruption handler has been added to the `JavaDataStorage` class.
1 parent be8f480 commit 7d1e8b5

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

firebase-common/src/main/java/com/google/firebase/datastorage/JavaDataStorage.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@
1717
package com.google.firebase.datastorage
1818

1919
import android.content.Context
20+
import android.os.Process
21+
import android.util.Log
2022
import androidx.datastore.core.DataStore
23+
import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
2124
import androidx.datastore.preferences.SharedPreferencesMigration
2225
import androidx.datastore.preferences.core.MutablePreferences
2326
import androidx.datastore.preferences.core.Preferences
2427
import androidx.datastore.preferences.core.edit
28+
import androidx.datastore.preferences.core.emptyPreferences
2529
import androidx.datastore.preferences.preferencesDataStore
2630
import com.google.firebase.annotations.concurrent.Background
2731
import kotlinx.coroutines.flow.firstOrNull
@@ -60,7 +64,15 @@ class JavaDataStorage(val context: Context, val name: String) {
6064
private val Context.dataStore: DataStore<Preferences> by
6165
preferencesDataStore(
6266
name = name,
63-
produceMigrations = { listOf(SharedPreferencesMigration(it, name)) }
67+
produceMigrations = { listOf(SharedPreferencesMigration(it, name)) },
68+
corruptionHandler =
69+
ReplaceFileCorruptionHandler { ex ->
70+
Log.w(
71+
JavaDataStorage::class.simpleName,
72+
"CorruptionException in ${name} DataStore running in process ${Process.myPid()}"
73+
)
74+
emptyPreferences()
75+
}
6476
)
6577

6678
private val dataStore = context.dataStore

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ constraintlayout = "2.1.4"
1919
coreKtx = "1.12.0"
2020
coroutines = "1.9.0"
2121
dagger = "2.51" # Don't bump above 2.51 as it causes a bug in AppDistro FeedbackSender JPEG code
22-
datastore = "1.1.3"
22+
datastore = "1.1.7"
2323
dexmaker = "2.28.1"
2424
dexmakerVersion = "1.2"
2525
espressoCore = "3.6.1"
@@ -238,4 +238,4 @@ spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
238238
protobuf = { id = "com.google.protobuf", version.ref = "protobufGradlePlugin" }
239239
errorprone = { id = "net.ltgt.errorprone", version.ref = "gradleErrorpronePlugin" }
240240
google-services = { id = "com.google.gms.google-services", version.ref = "googleServices" }
241-
crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlyticsGradle" }
241+
crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlyticsGradle" }

0 commit comments

Comments
 (0)