Mholloway has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/349124 )
Change subject: Stop thrashing on page save failure and save on subsequent runs
......................................................................
Stop thrashing on page save failure and save on subsequent runs
This patch does the following:
1. Kicks off the service only for changes to ReadingListPageDisk table.
Previously, it was also being triggered for changes to the Reading-
ListPageHttp and ReadingListPage tables as well, or thrice per
substantive change. This is because the ContentObserver also notifies
on changes to those tables depsite being registered for /page/disk.
2. Removes the upsert() calls from startTransaction() and
failTransaction(), which stops each transaction in the service from
(twice) again retriggering the service.
3. Added (OR status == OUTDATED) to the SQL query for pending rows, so
that rows left in an OUTDATED state due to a failure, and no longer
upserted, will be picked up on subsequent runs and saved as originally
intended.
Also added logging for successful page saves and made minor cosmetic
changes.
Bug: T162894
Change-Id: I1d0bfd2e2071942f3c7ad977ae271cf78db82235
---
M app/src/main/java/org/wikipedia/database/async/AsyncDao.java
M app/src/main/java/org/wikipedia/readinglist/page/ReadingListPageObserver.java
M
app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
4 files changed, 7 insertions(+), 7 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/24/349124/1
diff --git a/app/src/main/java/org/wikipedia/database/async/AsyncDao.java
b/app/src/main/java/org/wikipedia/database/async/AsyncDao.java
index eb0e193..d8302b8 100644
--- a/app/src/main/java/org/wikipedia/database/async/AsyncDao.java
+++ b/app/src/main/java/org/wikipedia/database/async/AsyncDao.java
@@ -47,13 +47,11 @@
protected void startTransaction(@NonNull Row row) {
row.startTransaction();
- upsert(row);
}
protected synchronized void failTransaction(@NonNull Row row) {
if (completableTransaction(row)) {
row.failTransaction();
- upsert(row);
}
}
diff --git
a/app/src/main/java/org/wikipedia/readinglist/page/ReadingListPageObserver.java
b/app/src/main/java/org/wikipedia/readinglist/page/ReadingListPageObserver.java
index 8ace611..03cf711 100644
---
a/app/src/main/java/org/wikipedia/readinglist/page/ReadingListPageObserver.java
+++
b/app/src/main/java/org/wikipedia/readinglist/page/ReadingListPageObserver.java
@@ -41,8 +41,8 @@
@Override public void onChange(boolean selfChange, Uri uri) {
if (uri.equals(ReadingListPageContract.Disk.URI)) {
notifyListeners();
+ WikipediaApp.getInstance().startService(new
Intent(WikipediaApp.getInstance(), SavedPageSyncService.class));
}
- WikipediaApp.getInstance().startService(new
Intent(WikipediaApp.getInstance(), SavedPageSyncService.class));
}
public void register(@NonNull Context context) {
diff --git
a/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
b/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
index 54f2336..6e8623c 100644
---
a/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
+++
b/app/src/main/java/org/wikipedia/readinglist/page/database/ReadingListPageDao.java
@@ -183,10 +183,12 @@
.replaceAll(":keyCol",
ReadingListPageContract.Page.KEY.qualifiedName());
private static final String SELECT_ROWS_WITH_LIST_KEY = "',' ||
:listKeyCol || ',' like '%,' || ? || ',%'"
- .replaceAll(":listKeyCol",
ReadingListPageContract.Page.LIST_KEYS.qualifiedName());
+ .replaceAll(":listKeyCol",
ReadingListPageContract.Page.LIST_KEYS.qualifiedName());
- private static String SELECT_ROWS_PENDING_DISK_TRANSACTION =
":transactionIdCol == :noTransactionId"
+ private static String SELECT_ROWS_PENDING_DISK_TRANSACTION =
":transactionIdCol == :noTransactionId OR :diskStatusCol == :outdated"
.replaceAll(":transactionIdCol",
ReadingListPageContract.DiskWithPage.DISK_TRANSACTION_ID.qualifiedName())
- .replaceAll(":noTransactionId",
String.valueOf(AsyncConstant.NO_TRANSACTION_ID));
+ .replaceAll(":noTransactionId",
String.valueOf(AsyncConstant.NO_TRANSACTION_ID))
+ .replaceAll(":diskStatusCol",
ReadingListPageContract.DiskWithPage.DISK_STATUS.qualifiedName())
+ .replaceAll(":outdated",
String.valueOf(DiskStatus.OUTDATED.code()));
}
}
diff --git
a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
index d37964f..9f29075 100644
--- a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
+++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
@@ -142,7 +142,7 @@
L.e("Failed to save page " + title, e);
return false;
}
-
+ L.i("Saved page " + title);
return true;
}
--
To view, visit https://gerrit.wikimedia.org/r/349124
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1d0bfd2e2071942f3c7ad977ae271cf78db82235
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits