diff options
author | Brian S. O'Neill <bronee@gmail.com> | 2009-03-24 19:15:57 +0000 |
---|---|---|
committer | Brian S. O'Neill <bronee@gmail.com> | 2009-03-24 19:15:57 +0000 |
commit | 816705790c92d4bfac11e1b5fdd60df940cae839 (patch) | |
tree | 178e9a20a9bd93ee9e355794ccd64495ee348ee4 /src | |
parent | d0684a34f12a3533343e7b1a2a81cbad3c6c7221 (diff) |
Derived index update must tolerate inconsistencies.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/amazon/carbonado/repo/indexed/DerivedIndexesTrigger.java | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/main/java/com/amazon/carbonado/repo/indexed/DerivedIndexesTrigger.java b/src/main/java/com/amazon/carbonado/repo/indexed/DerivedIndexesTrigger.java index 23e2837..ef5c710 100644 --- a/src/main/java/com/amazon/carbonado/repo/indexed/DerivedIndexesTrigger.java +++ b/src/main/java/com/amazon/carbonado/repo/indexed/DerivedIndexesTrigger.java @@ -89,15 +89,6 @@ class DerivedIndexesTrigger<S extends Storable, D extends Storable> extends Trig @Override
public void afterDelete(S storable, Object state) throws PersistException {
updateValues(storable, state);
- /* FIXME: Deleting of derived index entries needs more thought.
- if (state != null) {
- List<Storable> oldIndexEntries = (List<Storable>) state;
- int size = oldIndexEntries.size();
- for (int i=0; i<size; i++) {
- oldIndexEntries.get(i).delete();
- }
- }
- */
}
@Override
@@ -171,9 +162,11 @@ class DerivedIndexesTrigger<S extends Storable, D extends Storable> extends Trig Storable oldIndexEntry = oldIndexEntries.get(i);
Storable newIndexEntry = newIndexEntries.get(i);
if (!oldIndexEntry.equalProperties(newIndexEntry)) {
- oldIndexEntry.delete();
- newIndexEntry.tryInsert();
+ // Try delete old entry, just in case it is missing.
+ oldIndexEntry.tryDelete();
}
+ // Always try to insert index entry, just in case it is missing.
+ newIndexEntry.tryInsert();
}
}
}
|