From 39623890a7fec210910e191e00d9f8252dfdd9ba Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Tue, 4 Dec 2007 14:45:17 +0100 Subject: Fix to not retry batch requests (even idempotent ones) --- cpp/src/Ice/ProxyFactory.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'cpp/src/Ice/ProxyFactory.cpp') 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(&ex); if(one) -- cgit v1.2.3