Skip to content

Commit a7265a7

Browse files
(fix): Corrupt datafile cache fix (#280)
* a fix for problem where the datafile cache has been corrupted or removed. * address feedback * fix typo in comments
1 parent 3d0fe42 commit a7265a7

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,13 @@ public void run() {
277277
public String getDatafile(Context context,@RawRes Integer datafileRes){
278278
try {
279279
if (isDatafileCached(context)) {
280-
return datafileHandler.loadSavedDatafile(context, datafileConfig);
281-
} else if (datafileRes!=null) {
280+
String datafile = datafileHandler.loadSavedDatafile(context, datafileConfig);
281+
if (datafile != null) {
282+
return datafile;
283+
}
284+
}
285+
286+
if (datafileRes != null) {
282287
return loadRawResource(context, datafileRes);
283288
}else{
284289
logger.error("Invalid datafile resource ID.");

datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileLoader.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.support.annotation.RequiresApi;
2525

2626
import com.optimizely.ab.android.shared.DatafileConfig;
27+
import com.optimizely.ab.android.shared.OptlyStorage;
2728

2829
import org.slf4j.Logger;
2930

@@ -110,6 +111,14 @@ private static class RequestDatafileFromClientTask extends AsyncTask<Void, Void,
110111

111112
@Override
112113
protected String doInBackground(Void... params) {
114+
115+
// if there is a problem with the cached datafile, set last modified to 1970
116+
if (!datafileCache.exists() || (datafileCache.exists() && datafileCache.load() == null)) {
117+
// create a wrapper for application context default storage.
118+
OptlyStorage storage = new OptlyStorage(this.datafileService.getApplicationContext());
119+
// set the last modified for this url to 1 millisecond past Jan 1, 1970.
120+
storage.saveLong(datafileUrl, 1);
121+
}
113122
String dataFile = datafileClient.request(datafileUrl);
114123
if (dataFile != null && !dataFile.isEmpty()) {
115124
if (datafileCache.exists()) {

0 commit comments

Comments
 (0)