Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 44a65800642b9307f866471860d40fd7ce0d6be6
Author: rohitsat13 <rohitsat@google.com>
Date: Mon Apr 05 08:41:07 2021
Fix context leak in datastore delegates by only passing application context reference to the produce file callbacks.
Relnote: Bug fix - datastore delegates could result in leaking contexts
Bug: 184415662
Test: N/A
Change-Id: Ie96fc0933d653d1292d44f7ba7005a0319585881
M datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
M datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreDelegate.kt
M datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreDelegate.kt
M datastore/datastore/src/main/java/androidx/datastore/DataStoreDelegate.kt
https://android-review.googlesource.com/1663853
Branch: androidx-main
commit 44a65800642b9307f866471860d40fd7ce0d6be6
Author: rohitsat13 <rohitsat@google.com>
Date: Mon Apr 05 08:41:07 2021
Fix context leak in datastore delegates by only passing application context reference to the produce file callbacks.
Relnote: Bug fix - datastore delegates could result in leaking contexts
Bug: 184415662
Test: N/A
Change-Id: Ie96fc0933d653d1292d44f7ba7005a0319585881
M datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreDelegate.kt
M datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/PreferenceDataStoreDelegate.kt
M datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxDataStoreDelegate.kt
M datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreDelegate.kt
M datastore/datastore/src/main/java/androidx/datastore/DataStoreDelegate.kt
ro...@google.com <ro...@google.com> #3
ru...@gmail.com <ru...@gmail.com> #4
Should DataStoreDelegate
also have updated the produceFile
lambda to do applicationContext.dataStoreFile(fileName)
instead of thisRef.dataStoreFile(fileName)
? Looks inconsistent between DataStoreDelegate
and PreferenceDataStoreDelegate
but I haven't actually run any code to check it.
ro...@google.com <ro...@google.com> #5
Agh thank you for catching that. Will send a follow up change.
ap...@google.com <ap...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-main
commit 851a268b522139eb38b3d2fe60c8b3632af6f30a
Author: rohitsat13 <rohitsat@google.com>
Date: Tue Apr 06 13:09:32 2021
Fix thisref->apllicationContext in DataStoreDelegate.kt
Left this line out of the last cl :/
Bug: 184415662
Test: N/A
Relnote: N/A
Change-Id: Ib898ad3f9ca9c498f920526eb05e438fe1daa2be
M datastore/datastore/src/main/java/androidx/datastore/DataStoreDelegate.kt
https://android-review.googlesource.com/1666181
Branch: androidx-main
commit 851a268b522139eb38b3d2fe60c8b3632af6f30a
Author: rohitsat13 <rohitsat@google.com>
Date: Tue Apr 06 13:09:32 2021
Fix thisref->apllicationContext in DataStoreDelegate.kt
Left this line out of the last cl :/
Bug: 184415662
Test: N/A
Relnote: N/A
Change-Id: Ib898ad3f9ca9c498f920526eb05e438fe1daa2be
M datastore/datastore/src/main/java/androidx/datastore/DataStoreDelegate.kt
Description
DataStore Component used:
datastore-core
DataStore Version used:
1.0.0-alpha08
Devices/Android versions reproduced on:
Android Emulator API 30
PreferenceDataStoreSingletonDelegate
andDataStoreSingletonDelegate
leakContext
in theirproduceFile
lambdas.The
produceMigration
callback gets around this by usingcontext.applicationContext
, butproduceFile
simply uses the context its given.See a demo of the leak in this sample project .