diff options
author | Bernard Normier <bernard@zeroc.com> | 2004-05-28 23:01:42 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2004-05-28 23:01:42 +0000 |
commit | 7ee310f1ed1d109ea9874d2a7849b4d52b5b8a1d (patch) | |
tree | 18cbcb7f01b8d95a1cc7a335eb1359e016aeadce /java/src/IceUtil/Cache.java | |
parent | Fixed exception handling (diff) | |
download | ice-7ee310f1ed1d109ea9874d2a7849b4d52b5b8a1d.tar.bz2 ice-7ee310f1ed1d109ea9874d2a7849b4d52b5b8a1d.tar.xz ice-7ee310f1ed1d109ea9874d2a7849b4d52b5b8a1d.zip |
Fixed exception handling bug
Diffstat (limited to 'java/src/IceUtil/Cache.java')
-rw-r--r-- | java/src/IceUtil/Cache.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/java/src/IceUtil/Cache.java b/java/src/IceUtil/Cache.java index 1fb36b30fce..c19003bfb28 100644 --- a/java/src/IceUtil/Cache.java +++ b/java/src/IceUtil/Cache.java @@ -174,7 +174,27 @@ public class Cache } else { - Object obj = _store.load(key); + Object obj; + try + { + obj = _store.load(key); + } + catch(RuntimeException e) + { + synchronized(_map) + { + _map.remove(key); + latch = val.latch; + val.latch = null; + } + if(latch != null) + { + latch.countDown(); + assert latch.getCount() == 0; + } + throw e; + } + synchronized(_map) { if(obj != null) |