From 0b9a4d866166ac0c555f0a3a4b44d1804ea145fb Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Mon, 8 Sep 2008 22:58:24 +0000 Subject: Undo last commit. --- .../carbonado/repo/indexed/IndexedStorage.java | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/amazon/carbonado/repo/indexed/IndexedStorage.java b/src/main/java/com/amazon/carbonado/repo/indexed/IndexedStorage.java index 6b2fed9..1abb064 100644 --- a/src/main/java/com/amazon/carbonado/repo/indexed/IndexedStorage.java +++ b/src/main/java/com/amazon/carbonado/repo/indexed/IndexedStorage.java @@ -142,20 +142,20 @@ class IndexedStorage implements Storage, StorageAccess return; } - // Although the master storage and indexes should be truncated - // atomically, this cannot be guaranteed due to freedom of truncate - // implementation. Also, a transaction can be deadlock prone with - // concurrent queries and updates. Instead, truncate the master first, - // which may cause warnings to be logged if index entries refer to - // missing records. This is harmless. - - mMasterStorage.truncate(); - - // Now truncate the indexes. - for (IndexInfo info : mAllIndexInfoMap.values()) { - if (info instanceof ManagedIndex) { - ((ManagedIndex) info).getIndexEntryStorage().truncate(); + Transaction txn = mRepository.enterTransaction(); + try { + mMasterStorage.truncate(); + + // Now truncate the indexes. + for (IndexInfo info : mAllIndexInfoMap.values()) { + if (info instanceof ManagedIndex) { + ((ManagedIndex) info).getIndexEntryStorage().truncate(); + } } + + txn.commit(); + } finally { + txn.exit(); } } -- cgit v1.2.3