diff options
-rw-r--r-- | cpp/src/Ice/Outgoing.cpp | 7 | ||||
-rw-r--r-- | cpp/src/Ice/ProxyFactory.cpp | 10 | ||||
-rw-r--r-- | cs/src/Ice/Outgoing.cs | 8 | ||||
-rw-r--r-- | cs/src/Ice/ProxyFactory.cs | 10 | ||||
-rw-r--r-- | java/src/IceInternal/Outgoing.java | 8 | ||||
-rw-r--r-- | java/src/IceInternal/ProxyFactory.java | 11 |
6 files changed, 31 insertions, 23 deletions
diff --git a/cpp/src/Ice/Outgoing.cpp b/cpp/src/Ice/Outgoing.cpp index 0972e6644b1..47f3a55cf04 100644 --- a/cpp/src/Ice/Outgoing.cpp +++ b/cpp/src/Ice/Outgoing.cpp @@ -330,13 +330,6 @@ IceInternal::Outgoing::abort(const LocalException& ex) _handler->getReference()->getMode() == Reference::ModeBatchDatagram) { _handler->abortBatchRequest(); - - // - // If we abort a batch requests, we cannot retry, because not - // only the batch request that caused the problem will be - // aborted, but all other requests in the batch as well. - // - throw LocalExceptionWrapper(ex, false); } ex.ice_throw(); diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp index 4244066079d..2e55df12ce1 100644 --- a/cpp/src/Ice/ProxyFactory.cpp +++ b/cpp/src/Ice/ProxyFactory.cpp @@ -99,6 +99,16 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, co TraceLevelsPtr traceLevels = _instance->traceLevels(); LoggerPtr logger = _instance->initializationData().logger; + // + // We don't retry batch requests because the exception might have caused + // the all the requests batched with the connection to be aborted and we + // want the application to be notified. + // + if(ref->getMode() == Reference::ModeBatchOneway || ref->getMode() == Reference::ModeBatchDatagram) + { + ex.ice_throw(); + } + const ObjectNotExistException* one = dynamic_cast<const ObjectNotExistException*>(&ex); if(one) diff --git a/cs/src/Ice/Outgoing.cs b/cs/src/Ice/Outgoing.cs index 995d492ed65..1d933c5d864 100644 --- a/cs/src/Ice/Outgoing.cs +++ b/cs/src/Ice/Outgoing.cs @@ -225,14 +225,6 @@ namespace IceInternal if(mode == Reference.Mode.ModeBatchOneway || mode == Reference.Mode.ModeBatchDatagram) { _handler.abortBatchRequest(); - - // - // If we abort a batch requests, we cannot retry, - // because not only the batch request that caused the - // problem will be aborted, but all other requests in - // the batch as well. - // - throw new LocalExceptionWrapper(ex, false); } throw ex; diff --git a/cs/src/Ice/ProxyFactory.cs b/cs/src/Ice/ProxyFactory.cs index 63c49fbe880..cfd0ec1a588 100644 --- a/cs/src/Ice/ProxyFactory.cs +++ b/cs/src/Ice/ProxyFactory.cs @@ -85,6 +85,16 @@ namespace IceInternal TraceLevels traceLevels = instance_.traceLevels(); Ice.Logger logger = instance_.initializationData().logger; + // + // We don't retry batch requests because the exception might have caused + // the all the requests batched with the connection to be aborted and we + // want the application to be notified. + // + if(@ref.getMode() == Reference.Mode.ModeBatchOneway || @ref.getMode() == Reference.Mode.ModeBatchDatagram) + { + throw ex; + } + if(ex is Ice.ObjectNotExistException) { Ice.ObjectNotExistException one = (Ice.ObjectNotExistException)ex; diff --git a/java/src/IceInternal/Outgoing.java b/java/src/IceInternal/Outgoing.java index fd22795c6cf..2830f59e4b5 100644 --- a/java/src/IceInternal/Outgoing.java +++ b/java/src/IceInternal/Outgoing.java @@ -267,14 +267,6 @@ public final class Outgoing implements OutgoingMessageCallback if(mode == Reference.ModeBatchOneway || mode == Reference.ModeBatchDatagram) { _handler.abortBatchRequest(); - - // - // If we abort a batch requests, we cannot retry, because - // not only the batch request that caused the problem will - // be aborted, but all other requests in the batch as - // well. - // - throw new LocalExceptionWrapper(ex, false); } throw ex; diff --git a/java/src/IceInternal/ProxyFactory.java b/java/src/IceInternal/ProxyFactory.java index 4e06ae80e44..874aae823b3 100644 --- a/java/src/IceInternal/ProxyFactory.java +++ b/java/src/IceInternal/ProxyFactory.java @@ -88,6 +88,17 @@ public final class ProxyFactory { TraceLevels traceLevels = _instance.traceLevels(); Ice.Logger logger = _instance.initializationData().logger; + + // + // We don't retry batch requests because the exception might have caused + // the all the requests batched with the connection to be aborted and we + // want the application to be notified. + // + if(ref.getMode() == IceInternal.Reference.ModeBatchOneway || + ref.getMode() == IceInternal.Reference.ModeBatchDatagram) + { + throw ex; + } if(ex instanceof Ice.ObjectNotExistException) { |