From 204cd8161aaac7cabab95024352b80b4f7a185e7 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Fri, 8 Feb 2013 16:22:23 -0800 Subject: [PATCH] One more place where the db needs to be locked before beginning a transaction --- .../com/todoroo/andlib/data/DatabaseDao.java | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/api/src/com/todoroo/andlib/data/DatabaseDao.java b/api/src/com/todoroo/andlib/data/DatabaseDao.java index afb021941..370c78303 100644 --- a/api/src/com/todoroo/andlib/data/DatabaseDao.java +++ b/api/src/com/todoroo/andlib/data/DatabaseDao.java @@ -234,29 +234,31 @@ public class DatabaseDao { if (toUpdate.getCount() == 0) return 0; - database.getDatabase().beginTransactionWithListener(new SQLiteTransactionListener() { - @Override - public void onRollback() { - Log.e(ERROR_TAG, "Error updating rows", new Throwable()); //$NON-NLS-1$ - result.set(0); - } - @Override - public void onCommit() {/**/} - @Override - public void onBegin() {/**/} - }); + synchronized (database) { + database.getDatabase().beginTransactionWithListener(new SQLiteTransactionListener() { + @Override + public void onRollback() { + Log.e(ERROR_TAG, "Error updating rows", new Throwable()); //$NON-NLS-1$ + result.set(0); + } + @Override + public void onCommit() {/**/} + @Override + public void onBegin() {/**/} + }); - try { - result.set(database.update(table.name, template.getSetValues(), - where.toString(), null)); - if (result.get() > 0) { - for (Long id : ids) { - createOutstandingEntries(id, template.getSetValues()); + try { + result.set(database.update(table.name, template.getSetValues(), + where.toString(), null)); + if (result.get() > 0) { + for (Long id : ids) { + createOutstandingEntries(id, template.getSetValues()); + } } + database.getDatabase().setTransactionSuccessful(); + } finally { + database.getDatabase().endTransaction(); } - database.getDatabase().setTransactionSuccessful(); - } finally { - database.getDatabase().endTransaction(); } return result.get(); } else {