summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/Ice/Outgoing.cpp7
-rw-r--r--cpp/src/Ice/ProxyFactory.cpp10
-rw-r--r--cs/src/Ice/Outgoing.cs8
-rw-r--r--cs/src/Ice/ProxyFactory.cs10
-rw-r--r--java/src/IceInternal/Outgoing.java8
-rw-r--r--java/src/IceInternal/ProxyFactory.java11
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)
{