summaryrefslogtreecommitdiff
path: root/java/src/IceUtil/Cache.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2004-05-28 23:01:42 +0000
committerBernard Normier <bernard@zeroc.com>2004-05-28 23:01:42 +0000
commit7ee310f1ed1d109ea9874d2a7849b4d52b5b8a1d (patch)
tree18cbcb7f01b8d95a1cc7a335eb1359e016aeadce /java/src/IceUtil/Cache.java
parentFixed exception handling (diff)
downloadice-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.java22
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)