rpms/ice/F-8 Ice-3.3.0-compression.patch, NONE, 1.1 Ice-3.3.0-icegrid-assert.patch, NONE, 1.1 Ice-3.3.0-icepatch-non-ascii.patch, NONE, 1.1 Ice-3.3.0-preprocess.patch, NONE, 1.1 Ice-3.3.0-python-26.patch, NONE, 1.1 Ice-3.3.0-registry-crash.patch, NONE, 1.1 Ice-3.3.0-retry-intervals.patch, NONE, 1.1 Ice-3.3.0-use-db4.7.patch, NONE, 1.1 ice.spec, 1.12, 1.13
Mary Ellen Foster
mef at fedoraproject.org
Thu Dec 4 10:22:52 UTC 2008
- Previous message (by thread): rpms/ice/F-9 Ice-3.3.0-compression.patch, NONE, 1.1 Ice-3.3.0-icegrid-assert.patch, NONE, 1.1 Ice-3.3.0-icepatch-non-ascii.patch, NONE, 1.1 Ice-3.3.0-preprocess.patch, NONE, 1.1 Ice-3.3.0-python-26.patch, NONE, 1.1 Ice-3.3.0-registry-crash.patch, NONE, 1.1 Ice-3.3.0-retry-intervals.patch, NONE, 1.1 Ice-3.3.0-use-db4.7.patch, NONE, 1.1 ice.spec, 1.18, 1.19
- Next message (by thread): rpms/robodoc/devel import.log, NONE, 1.1 robodoc.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mef
Update of /cvs/pkgs/rpms/ice/F-8
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv11743
Modified Files:
ice.spec
Added Files:
Ice-3.3.0-compression.patch Ice-3.3.0-icegrid-assert.patch
Ice-3.3.0-icepatch-non-ascii.patch Ice-3.3.0-preprocess.patch
Ice-3.3.0-python-26.patch Ice-3.3.0-registry-crash.patch
Ice-3.3.0-retry-intervals.patch Ice-3.3.0-use-db4.7.patch
Log Message:
Add all upstream patches; add comments for patches; add Python 2.6 support
Ice-3.3.0-compression.patch:
--- NEW FILE Ice-3.3.0-compression.patch ---
diff --git a/cpp/src/Ice/ConnectRequestHandler.cpp b/cpp/src/Ice/ConnectRequestHandler.cpp
index e037745..8c93f22 100644
--- a/cpp/src/Ice/ConnectRequestHandler.cpp
+++ b/cpp/src/Ice/ConnectRequestHandler.cpp
@@ -212,7 +212,10 @@ ConnectRequestHandler::abortBatchRequest()
Ice::ConnectionI*
ConnectRequestHandler::sendRequest(Outgoing* out)
{
- if(!getConnection(true)->sendRequest(out, _compress, _response) || _response)
+ // Must be called first, _compress might not be initialized before this returns.
+ Ice::ConnectionIPtr connection = getConnection(true);
+ assert(connection);
+ if(!connection->sendRequest(out, _compress, _response) || _response)
{
return _connection.get(); // The request has been sent or we're expecting a response.
}
Ice-3.3.0-icegrid-assert.patch:
--- NEW FILE Ice-3.3.0-icegrid-assert.patch ---
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index 5e5ff94..b2d91a0 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -395,7 +395,7 @@ Database::syncApplicationDescriptor(const ApplicationDescriptor& newDesc, AdminS
Lock sync(*this);
checkSessionLock(session);
- while(_updating.find(update.descriptor.name) != _updating.end())
+ while(_updating.find(newDesc.name) != _updating.end())
{
wait();
}
Ice-3.3.0-icepatch-non-ascii.patch:
--- NEW FILE Ice-3.3.0-icepatch-non-ascii.patch ---
diff -c -r -N ../Ice-3.3.0/cpp/include/IceUtil/StringUtil.h ./cpp/include/IceUtil/StringUtil.h
*** ../Ice-3.3.0/cpp/include/IceUtil/StringUtil.h 2008-05-16 14:54:00.000000000 -0230
--- ./cpp/include/IceUtil/StringUtil.h 2008-10-30 12:51:39.000000000 -0230
***************
*** 65,70 ****
--- 65,82 ----
#else
ICE_UTIL_API std::string errorToString(int);
#endif
+
+ //
+ // Functions to convert to to all lower/upper case
+ //
+ ICE_UTIL_API std::string toLower(const std::string&);
+ ICE_UTIL_API std::string toUpper(const std::string&);
+
+ //
+ // Remove all whitespace from a string
+ //
+ ICE_UTIL_API std::string removeWhitespace(const std::string&);
+
}
#endif
diff -c -r -N ../Ice-3.3.0/cpp/src/IcePatch2/Calc.cpp ./cpp/src/IcePatch2/Calc.cpp
*** ../Ice-3.3.0/cpp/src/IcePatch2/Calc.cpp 2008-05-16 14:54:00.000000000 -0230
--- ./cpp/src/IcePatch2/Calc.cpp 2008-10-30 13:04:19.000000000 -0230
***************
*** 42,48 ****
for(string::size_type i = 0; i < lhs.path.size(); ++i)
{
! if(::tolower(lhs.path[i]) != ::tolower(rhs.path[i]))
{
return false;
}
--- 42,48 ----
for(string::size_type i = 0; i < lhs.path.size(); ++i)
{
! if(::tolower(static_cast<unsigned char>(lhs.path[i])) != ::tolower(static_cast<unsigned char>(rhs.path[i])))
{
return false;
}
***************
*** 59,69 ****
{
for(string::size_type i = 0; i < lhs.path.size() && i < rhs.path.size(); ++i)
{
! if(::tolower(lhs.path[i]) < ::tolower(rhs.path[i]))
{
return true;
}
! else if(::tolower(lhs.path[i]) > ::tolower(rhs.path[i]))
{
return false;
}
--- 59,70 ----
{
for(string::size_type i = 0; i < lhs.path.size() && i < rhs.path.size(); ++i)
{
! if(::tolower(static_cast<unsigned char>(lhs.path[i])) < ::tolower(static_cast<unsigned char>(rhs.path[i])))
{
return true;
}
! else if(::tolower(static_cast<unsigned char>(lhs.path[i])) >
! ::tolower(static_cast<unsigned char>(rhs.path[i])))
{
return false;
}
diff -c -r -N ../Ice-3.3.0/cpp/src/IcePatch2/Client.cpp ./cpp/src/IcePatch2/Client.cpp
*** ../Ice-3.3.0/cpp/src/IcePatch2/Client.cpp 2008-05-16 14:54:00.000000000 -0230
--- ./cpp/src/IcePatch2/Client.cpp 2008-10-30 12:58:41.000000000 -0230
***************
*** 8,13 ****
--- 8,14 ----
// **********************************************************************
#include <IceUtil/Options.h>
+ #include <IceUtil/StringUtil.h>
#include <Ice/Application.h>
#include <IcePatch2/Util.h>
#include <IcePatch2/ClientUtil.h>
***************
*** 54,60 ****
{
cout << "Do a thorough patch? (yes/no)" << endl;
cin >> answer;
! transform(answer.begin(), answer.end(), answer.begin(), ::tolower);
if(answer == "no")
{
return false;
--- 55,61 ----
{
cout << "Do a thorough patch? (yes/no)" << endl;
cin >> answer;
! answer = IceUtilInternal::toLower(answer);
if(answer == "no")
{
return false;
diff -c -r -N ../Ice-3.3.0/cpp/src/IcePatch2/Util.cpp ./cpp/src/IcePatch2/Util.cpp
*** ../Ice-3.3.0/cpp/src/IcePatch2/Util.cpp 2008-05-16 14:54:00.000000000 -0230
--- ./cpp/src/IcePatch2/Util.cpp 2008-10-30 13:01:05.000000000 -0230
***************
*** 280,286 ****
}
if(result == "/." ||
! (result.size() == 4 && isalpha(result[0]) && result[1] == ':' && result[2] == '/' && result[3] == '.'))
{
return result.substr(0, result.size() - 1);
}
--- 280,287 ----
}
if(result == "/." ||
! (result.size() == 4 && isalpha(static_cast<unsigned char>(result[0])) && result[1] == ':' &&
! result[2] == '/' && result[3] == '.'))
{
return result.substr(0, result.size() - 1);
}
***************
*** 290,296 ****
result.erase(result.size() - 2, 2);
}
! if(result == "/" || (result.size() == 3 && isalpha(result[0]) && result[1] == ':' && result[2] == '/'))
{
return result;
}
--- 291,298 ----
result.erase(result.size() - 2, 2);
}
! if(result == "/" || (result.size() == 3 && isalpha(static_cast<unsigned char>(result[0])) &&
! result[1] == ':' && result[2] == '/'))
{
return result;
}
***************
*** 317,328 ****
}
unsigned i = 0;
! while(isspace(pa[i]))
{
++i;
}
#ifdef _WIN32
! return pa[i] == '\\' || pa[i] == '/' || pa.size() > i + 1 && isalpha(pa[i]) && pa[i + 1] == ':';
#else
return pa[i] == '/';
#endif
--- 319,331 ----
}
unsigned i = 0;
! while(isspace(static_cast<unsigned char>(pa[i])))
{
++i;
}
#ifdef _WIN32
! return pa[i] == '\\' || pa[i] == '/' || pa.size() > i + 1 &&
! isalpha(static_cast<unsigned char>(pa[i])) && pa[i + 1] == ':';
#else
return pa[i] == '/';
#endif
***************
*** 333,339 ****
{
string path = simplify(pa);
#ifdef _WIN32
! return path == "/" || path.size() == 3 && isalpha(path[0]) && path[1] == ':' && path[2] == '/';
#else
return path == "/";
#endif
--- 336,343 ----
{
string path = simplify(pa);
#ifdef _WIN32
! return path == "/" || path.size() == 3 && isalpha(static_cast<unsigned char>(path[0])) &&
! path[1] == ':' && path[2] == '/';
#else
return path == "/";
#endif
diff -c -r -N ../Ice-3.3.0/cpp/src/IceUtil/StringUtil.cpp ./cpp/src/IceUtil/StringUtil.cpp
*** ../Ice-3.3.0/cpp/src/IceUtil/StringUtil.cpp 2008-05-16 14:54:01.000000000 -0230
--- ./cpp/src/IceUtil/StringUtil.cpp 2008-10-30 12:55:40.000000000 -0230
***************
*** 687,690 ****
--- 687,726 ----
return errorToString(errno);
}
+ string
+ IceUtilInternal::toLower(const std::string& s)
+ {
+ string result;
+ for(unsigned int i = 0; i < s.length(); ++ i)
+ {
+ result += tolower(static_cast<unsigned char>(s[i]));
+ }
+ return result;
+ }
+
+ string
+ IceUtilInternal::toUpper(const std::string& s)
+ {
+ string result;
+ for(unsigned int i = 0; i < s.length(); ++ i)
+ {
+ result += toupper(static_cast<unsigned char>(s[i]));
+ }
+ return result;
+ }
+
+ string
+ IceUtilInternal::removeWhitespace(const std::string& s)
+ {
+ string result;
+ for(unsigned int i = 0; i < s.length(); ++ i)
+ {
+ if(!isspace(static_cast<unsigned char>(s[i])))
+ {
+ result += s[i];
+ }
+ }
+ return result;
+ }
+
#endif
Ice-3.3.0-preprocess.patch:
--- NEW FILE Ice-3.3.0-preprocess.patch ---
diff -r -c -N ../Ice-3.3.0-old/cpp/src/Slice/Preprocessor.cpp ./cpp/src/Slice/Preprocessor.cpp
*** ../Ice-3.3.0-old/cpp/src/Slice/Preprocessor.cpp 2008-05-16 14:54:01.000000000 -0230
--- ./cpp/src/Slice/Preprocessor.cpp 2008-08-14 11:31:58.000000000 -0230
***************
*** 175,192 ****
//
char* buf = mcpp_get_mem_buffer(Out);
- _cppFile = ".preprocess." + IceUtil::generateUUID();
- SignalHandler::addFile(_cppFile);
#ifdef _WIN32
_cppHandle = ::_wfopen(IceUtil::stringToWstring(_cppFile).c_str(), IceUtil::stringToWstring("w+").c_str());
#else
_cppHandle = ::fopen(_cppFile.c_str(), "w+");
#endif
! if(buf)
{
! ::fwrite(buf, strlen(buf), 1, _cppHandle);
}
- ::rewind(_cppHandle);
}
//
--- 175,206 ----
//
char* buf = mcpp_get_mem_buffer(Out);
#ifdef _WIN32
+ TCHAR buffer[512];
+ DWORD ret = GetTempPath(512, buffer);
+ if(ret > 512 || ret == 0)
+ {
+ fprintf(stderr, "GetTempPath failed (%d)\n", GetLastError());
+ }
+ _cppFile = string(buffer) + "\\.preprocess." + IceUtil::generateUUID();
_cppHandle = ::_wfopen(IceUtil::stringToWstring(_cppFile).c_str(), IceUtil::stringToWstring("w+").c_str());
#else
+ _cppFile = "/tmp/.preprocess." + IceUtil::generateUUID();
_cppHandle = ::fopen(_cppFile.c_str(), "w+");
#endif
! if(_cppHandle != NULL)
! {
! SignalHandler::addFile(_cppFile);
! if(buf)
! {
! ::fwrite(buf, strlen(buf), 1, _cppHandle);
! }
! ::rewind(_cppHandle);
! }
! else
{
! fprintf(stderr, "Could not open temporary file: %s\n", _cppFile.c_str());
}
}
//
Ice-3.3.0-python-26.patch:
--- NEW FILE Ice-3.3.0-python-26.patch ---
--- Ice-3.3.0/py/config/Make.rules.orig 2008-12-04 10:01:51.000000000 +0100
+++ Ice-3.3.0/py/config/Make.rules 2008-12-04 10:01:55.000000000 +0100
@@ -63,7 +63,7 @@
# version used for building the Ice extension, then set PYTHON_VERSION
# to "python2.3" or "python2.4".
#
- PYTHON_VERSION ?= $(word 1,$(notdir $(wildcard /usr/include/python2.[345]*)))
+ PYTHON_VERSION ?= $(word 1,$(notdir $(wildcard /usr/include/python2.[3456]*)))
ifeq ($(PYTHON_VERSION),)
python_darwin_home = /System/Library/Frameworks/Python.framework/Versions/Current
PYTHON_VERSION = $(word 1,$(notdir $(wildcard $(python_darwin_home)/include/python2.[345]*)))
Ice-3.3.0-registry-crash.patch:
--- NEW FILE Ice-3.3.0-registry-crash.patch ---
diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp
index bf910ba..3fbe3a1 100644
--- a/cpp/src/IceGrid/LocatorI.cpp
+++ b/cpp/src/IceGrid/LocatorI.cpp
@@ -236,12 +236,15 @@ LocatorI::Request::activate(const string& id)
// NOTE: we use a timeout large enough to ensure that the activate() call won't
// timeout if the server hangs in deactivation and/or activation.
//
- for(LocatorAdapterInfoSeq::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p)
{
- if(p->id == id)
+ Lock sync(*this);
+ for(LocatorAdapterInfoSeq::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p)
{
- _locator->activate(*p, this);
- _activating.insert(id);
+ if(p->id == id)
+ {
+ _locator->activate(*p, this);
+ _activating.insert(id);
+ }
}
}
@@ -588,13 +591,15 @@ LocatorI::activate(const LocatorAdapterInfo& adapter, const RequestPtr& request)
// we just add this one to the queue. If not, we add it to the queue and initiate
// a call on the adapter to get its direct proxy.
//
- PendingRequestsMap::iterator p;
- p = _pendingRequests.insert(make_pair(adapter.id, PendingRequests())).first;
- p->second.insert(request);
- if(p->second.size() != 1)
+ PendingRequestsMap::iterator p = _pendingRequests.find(adapter.id);
+ if(p != _pendingRequests.end())
{
+ p->second.insert(request);
return;
}
+
+ p = _pendingRequests.insert(make_pair(adapter.id, PendingRequests())).first;
+ p->second.insert(request);
}
AMI_Adapter_activatePtr amiCB = new AMI_Adapter_activateI(this, adapter.id);
@@ -682,7 +687,14 @@ LocatorI::removePendingResolve(const string& adapterId, int roundRobinCount)
//
if(roundRobinCount > 0)
{
- _database->getAdapter(adapterId)->increaseRoundRobinCount(roundRobinCount);
+ try
+ {
+ _database->getAdapter(adapterId)->increaseRoundRobinCount(roundRobinCount);
+ }
+ catch(const Ice::Exception&)
+ {
+ // Ignore.
+ }
}
map<string, deque<Ice::AMD_Locator_findAdapterByIdPtr> >::iterator p = _resolves.find(adapterId);
Ice-3.3.0-retry-intervals.patch:
--- NEW FILE Ice-3.3.0-retry-intervals.patch ---
diff --git a/cpp/include/Ice/OutgoingAsync.h b/cpp/include/Ice/OutgoingAsync.h
index ae16ece..70f3cf2 100644
--- a/cpp/include/Ice/OutgoingAsync.h
+++ b/cpp/include/Ice/OutgoingAsync.h
@@ -25,6 +25,7 @@ namespace IceInternal
class BasicStream;
class LocalExceptionWrapper;
class Outgoing;
+class RetryTask;
class ICE_API OutgoingAsyncMessageCallback : virtual public IceUtil::Shared
{
@@ -49,6 +50,8 @@ public:
protected:
+ friend class ::IceInternal::RetryTask;
+
void __acquireCallback(const Ice::ObjectPrx&);
void __releaseCallback(const Ice::LocalException&);
void __releaseCallback()
@@ -83,6 +86,7 @@ public:
void __finished(const Ice::LocalException&);
void __finished(const LocalExceptionWrapper&);
+ void __retry(int);
bool __send();
protected:
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index 8a1e5f4..b26a194 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -29,6 +29,7 @@
#include <Ice/LoggerI.h>
#include <Ice/Network.h>
#include <Ice/EndpointFactoryManager.h>
+#include <Ice/RetryQueue.h>
#include <Ice/TcpEndpointI.h>
#include <Ice/UdpEndpointI.h>
#include <Ice/DynamicLibrary.h>
@@ -285,6 +286,19 @@ IceInternal::Instance::endpointHostResolver()
return _endpointHostResolver;
}
+RetryQueuePtr
+IceInternal::Instance::retryQueue()
+{
+ IceUtil::RecMutex::Lock sync(*this);
+
+ if(_state == StateDestroyed)
+ {
+ throw CommunicatorDestroyedException(__FILE__, __LINE__);
+ }
+
+ return _retryQueue;
+}
+
IceUtil::TimerPtr
IceInternal::Instance::timer()
{
@@ -991,6 +1005,8 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
_servantFactoryManager = new ObjectFactoryManager();
_objectAdapterFactory = new ObjectAdapterFactory(this, communicator);
+
+ _retryQueue = new RetryQueue(this);
if(_initData.wstringConverter == 0)
{
@@ -1039,6 +1055,7 @@ IceInternal::Instance::~Instance()
assert(!_serverThreadPool);
assert(!_selectorThread);
assert(!_endpointHostResolver);
+ assert(!_retryQueue);
assert(!_timer);
assert(!_routerManager);
assert(!_locatorManager);
@@ -1200,6 +1217,11 @@ IceInternal::Instance::destroy()
_outgoingConnectionFactory->waitUntilFinished();
}
+ if(_retryQueue)
+ {
+ _retryQueue->destroy();
+ }
+
ThreadPoolPtr serverThreadPool;
ThreadPoolPtr clientThreadPool;
SelectorThreadPtr selectorThread;
@@ -1210,6 +1232,7 @@ IceInternal::Instance::destroy()
_objectAdapterFactory = 0;
_outgoingConnectionFactory = 0;
+ _retryQueue = 0;
if(_connectionMonitor)
{
diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h
index f0aa50a..721b347 100644
--- a/cpp/src/Ice/Instance.h
+++ b/cpp/src/Ice/Instance.h
@@ -30,6 +30,7 @@
#include <Ice/ObjectFactoryManagerF.h>
#include <Ice/ObjectAdapterFactoryF.h>
#include <Ice/EndpointFactoryManagerF.h>
+#include <Ice/RetryQueueF.h>
#include <Ice/DynamicLibraryF.h>
#include <Ice/PluginF.h>
#include <Ice/Initialize.h>
@@ -71,6 +72,7 @@ public:
ThreadPoolPtr serverThreadPool();
SelectorThreadPtr selectorThread();
EndpointHostResolverPtr endpointHostResolver();
+ RetryQueuePtr retryQueue();
IceUtil::TimerPtr timer();
EndpointFactoryManagerPtr endpointFactoryManager() const;
DynamicLibraryListPtr dynamicLibraryList() const;
@@ -134,6 +136,7 @@ private:
ThreadPoolPtr _serverThreadPool;
SelectorThreadPtr _selectorThread;
EndpointHostResolverPtr _endpointHostResolver;
+ RetryQueuePtr _retryQueue;
IceUtil::TimerPtr _timer;
EndpointFactoryManagerPtr _endpointFactoryManager;
DynamicLibraryListPtr _dynamicLibraryList;
diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile
index f236dd4..dbf931e 100644
--- a/cpp/src/Ice/Makefile
+++ b/cpp/src/Ice/Makefile
@@ -80,6 +80,7 @@ OBJS = Acceptor.o \
Proxy.o \
ReferenceFactory.o \
Reference.o \
+ RetryQueue.o \
RequestHandler.o \
RouterInfo.o \
Router.o \
diff --git a/cpp/src/Ice/Makefile.mak b/cpp/src/Ice/Makefile.mak
index 86800d9..314c3d3 100644
--- a/cpp/src/Ice/Makefile.mak
+++ b/cpp/src/Ice/Makefile.mak
@@ -81,6 +81,7 @@ OBJS = Acceptor.obj \
Proxy.obj \
ReferenceFactory.obj \
Reference.obj \
+ RetryQueue.obj \
RequestHandler.obj \
RouterInfo.obj \
Router.obj \
diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp
index 14da199..c866fe1 100644
--- a/cpp/src/Ice/OutgoingAsync.cpp
+++ b/cpp/src/Ice/OutgoingAsync.cpp
@@ -24,6 +24,7 @@
#include <Ice/ReplyStatus.h>
#include <Ice/ImplicitContextI.h>
#include <Ice/ThreadPool.h>
+#include <Ice/RetryQueue.h>
using namespace std;
using namespace Ice;
@@ -454,6 +455,24 @@ IceInternal::OutgoingAsync::__finished(const LocalExceptionWrapper& ex)
}
}
+void
+IceInternal::OutgoingAsync::__retry(int interval)
+{
+ //
+ // This method is called by the proxy to retry an invocation, no
+ // other threads can access this object.
+ //
+ if(interval > 0)
+ {
+ assert(__os);
+ __os->instance()->retryQueue()->add(this, interval);
+ }
+ else
+ {
+ __send();
+ }
+}
+
bool
IceInternal::OutgoingAsync::__send()
{
@@ -466,11 +485,11 @@ IceInternal::OutgoingAsync::__send()
}
catch(const LocalExceptionWrapper& ex)
{
- handleException(ex);
+ handleException(ex); // Might call __send() again upon retry and assign _sentSynchronously
}
catch(const Ice::LocalException& ex)
{
- handleException(ex);
+ handleException(ex); // Might call __send() again upon retry and assign _sentSynchronously
}
return _sentSynchronously;
}
@@ -483,6 +502,7 @@ IceInternal::OutgoingAsync::__prepare(const ObjectPrx& prx, const string& operat
_delegate = 0;
_cnt = 0;
_mode = mode;
+ _sentSynchronously = false;
//
// Can't call async via a batch proxy.
diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp
index 2fc5316..eeb554d 100644
--- a/cpp/src/Ice/ProxyFactory.cpp
+++ b/cpp/src/Ice/ProxyFactory.cpp
@@ -25,32 +25,8 @@ using namespace std;
using namespace Ice;
using namespace IceInternal;
-namespace
-{
-
-class RetryTask : public IceUtil::TimerTask
-{
-public:
-
- RetryTask(const OutgoingAsyncPtr& out) : _out(out)
- {
- }
-
- virtual void
- runTimerTask()
- {
- _out->__send();
- }
-
-private:
-
- const OutgoingAsyncPtr _out;
-};
-
-}
-
IceUtil::Shared* IceInternal::upCast(ProxyFactory* p) { return p; }
-
+
ObjectPrx
IceInternal::ProxyFactory::stringToProxy(const string& str) const
{
@@ -243,34 +219,17 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex,
}
out << " because of exception\n" << ex;
}
-
- if(interval > 0)
+
+ if(out)
{
- if(out)
- {
- try
- {
- _instance->timer()->schedule(new RetryTask(out), IceUtil::Time::milliSeconds(interval));
- }
- catch(const IceUtil::IllegalArgumentException&) // Expected if the communicator destroyed the timer.
- {
- throw CommunicatorDestroyedException(__FILE__, __LINE__);
- }
- }
- else
- {
- //
- // Sleep before retrying.
- //
- IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(interval));
- }
+ out->__retry(interval);
}
- else
+ else if(interval > 0)
{
- if(out)
- {
- out->__send();
- }
+ //
+ // Sleep before retrying.
+ //
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(interval));
}
}
diff --git a/cpp/src/Ice/RetryQueue.cpp b/cpp/src/Ice/RetryQueue.cpp
new file mode 100644
index 0000000..d6aba62
--- /dev/null
+++ b/cpp/src/Ice/RetryQueue.cpp
@@ -0,0 +1,92 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <Ice/RetryQueue.h>
+#include <Ice/OutgoingAsync.h>
+#include <Ice/LocalException.h>
+#include <Ice/Instance.h>
+
+using namespace std;
+using namespace Ice;
+using namespace IceInternal;
+
+IceUtil::Shared* IceInternal::upCast(RetryQueue* p) { return p; }
+
+IceInternal::RetryTask::RetryTask(const RetryQueuePtr& queue, const OutgoingAsyncPtr& outAsync) :
+ _queue(queue), _outAsync(outAsync)
+{
+}
+
+void
+IceInternal::RetryTask::runTimerTask()
+{
+ if(_queue->remove(this))
+ {
+ try
+ {
+ _outAsync->__send();
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ _outAsync->__releaseCallback(ex);
+ }
+ }
+}
+
+void
+IceInternal::RetryTask::destroy()
+{
+ _outAsync->__releaseCallback(CommunicatorDestroyedException(__FILE__, __LINE__));
+}
+
+bool
+IceInternal::RetryTask::operator<(const RetryTask& rhs) const
+{
+ return this < &rhs;
+}
+
+IceInternal::RetryQueue::RetryQueue(const InstancePtr& instance) : _instance(instance)
+{
+}
+
+void
+IceInternal::RetryQueue::add(const OutgoingAsyncPtr& out, int interval)
+{
+ Lock sync(*this);
+ RetryTaskPtr task = new RetryTask(this, out);
+ try
+ {
+ _instance->timer()->schedule(task, IceUtil::Time::milliSeconds(interval));
+ }
+ catch(const IceUtil::IllegalArgumentException&) // Expected if the communicator destroyed the timer.
+ {
+ throw CommunicatorDestroyedException(__FILE__, __LINE__);
+ }
+ _requests.insert(task);
+}
+
+void
+IceInternal::RetryQueue::destroy()
+{
+ Lock sync(*this);
+ for(set<RetryTaskPtr>::const_iterator p = _requests.begin(); p != _requests.end(); ++p)
+ {
+ _instance->timer()->cancel(*p);
+ (*p)->destroy();
+ }
+ _requests.clear();
+}
+
+bool
+IceInternal::RetryQueue::remove(const RetryTaskPtr& task)
+{
+ Lock sync(*this);
+ return _requests.erase(task) > 0;
+}
+
diff --git a/cpp/src/Ice/RetryQueue.h b/cpp/src/Ice/RetryQueue.h
new file mode 100644
index 0000000..960b4a8
--- /dev/null
+++ b/cpp/src/Ice/RetryQueue.h
@@ -0,0 +1,62 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_RETRY_QUEUE_H
+#define ICE_RETRY_QUEUE_H
+
+#include <IceUtil/Shared.h>
+#include <IceUtil/Mutex.h>
+#include <IceUtil/Timer.h>
+#include <Ice/RetryQueueF.h>
+#include <Ice/OutgoingAsyncF.h>
+#include <Ice/InstanceF.h>
+
+namespace IceInternal
+{
+
+class RetryTask : public IceUtil::TimerTask
+{
+public:
+
+ RetryTask(const RetryQueuePtr&, const OutgoingAsyncPtr&);
+
+ virtual void runTimerTask();
+ void destroy();
+
+ bool operator<(const RetryTask&) const;
+
+private:
+
+ const RetryQueuePtr _queue;
+ const OutgoingAsyncPtr _outAsync;
+};
+typedef IceUtil::Handle<RetryTask> RetryTaskPtr;
+
+class RetryQueue : public IceUtil::Shared, public IceUtil::Mutex
+{
+public:
+
+ RetryQueue(const InstancePtr&);
+
+ void add(const OutgoingAsyncPtr&, int);
+ void destroy();
+
+private:
+
+ bool remove(const RetryTaskPtr&);
+ friend class RetryTask;
+
+ const InstancePtr _instance;
+ std::set<RetryTaskPtr> _requests;
+};
+
+}
+
+#endif
+
diff --git a/cpp/src/Ice/RetryQueueF.h b/cpp/src/Ice/RetryQueueF.h
new file mode 100644
index 0000000..0e99fd7
--- /dev/null
+++ b/cpp/src/Ice/RetryQueueF.h
@@ -0,0 +1,24 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_RETRY_QUEUE_F_H
+#define ICE_RETRY_QUEUE_F_H
+
+#include <Ice/Handle.h>
+
+namespace IceInternal
+{
+
+class RetryQueue;
+IceUtil::Shared* upCast(RetryQueue*);
+typedef Handle<RetryQueue> RetryQueuePtr;
+
+}
+
+#endif
diff --git a/cs/src/Ice/Instance.cs b/cs/src/Ice/Instance.cs
index 2c9012e..de098da 100644
--- a/cs/src/Ice/Instance.cs
+++ b/cs/src/Ice/Instance.cs
@@ -216,6 +216,20 @@ namespace IceInternal
}
}
+ public RetryQueue
+ retryQueue()
+ {
+ lock(this)
+ {
+ if(_state == StateDestroyed)
+ {
+ throw new Ice.CommunicatorDestroyedException();
+ }
+
+ return _retryQueue;
+ }
+ }
+
public Timer
timer()
{
@@ -742,7 +756,9 @@ namespace IceInternal
_servantFactoryManager = new ObjectFactoryManager();
_objectAdapterFactory = new ObjectAdapterFactory(this, communicator);
-
+
+ _retryQueue = new RetryQueue(this);
+
string[] facetFilter = _initData.properties.getPropertyAsList("Ice.Admin.Facets");
if(facetFilter.Length > 0)
{
@@ -886,6 +902,11 @@ namespace IceInternal
_outgoingConnectionFactory.waitUntilFinished();
}
+ if(_retryQueue != null)
+ {
+ _retryQueue.destroy();
+ }
+
ThreadPool serverThreadPool = null;
ThreadPool clientThreadPool = null;
EndpointHostResolver endpointHostResolver = null;
@@ -893,9 +914,9 @@ namespace IceInternal
lock(this)
{
_objectAdapterFactory = null;
-
_outgoingConnectionFactory = null;
-
+ _retryQueue = null;
+
if(_connectionMonitor != null)
{
_connectionMonitor.destroy();
@@ -1032,6 +1053,7 @@ namespace IceInternal
private ThreadPool _serverThreadPool;
private EndpointHostResolver _endpointHostResolver;
private Timer _timer;
+ private RetryQueue _retryQueue;
private bool _background;
private EndpointFactoryManager _endpointFactoryManager;
private Ice.PluginManager _pluginManager;
diff --git a/cs/src/Ice/Makefile b/cs/src/Ice/Makefile
index f8e1ff0..f8d27c5 100644
--- a/cs/src/Ice/Makefile
+++ b/cs/src/Ice/Makefile
@@ -76,6 +76,7 @@ SRCS = Acceptor.cs \
ReferenceFactory.cs \
ReplyStatus.cs \
RequestHandler.cs \
+ RetryQueue.cs \
RouterInfo.cs \
ServantManager.cs \
Set.cs \
diff --git a/cs/src/Ice/Makefile.mak b/cs/src/Ice/Makefile.mak
index a082e51..07ebcc0 100644
--- a/cs/src/Ice/Makefile.mak
+++ b/cs/src/Ice/Makefile.mak
@@ -76,6 +76,7 @@ SRCS = Acceptor.cs \
ReferenceFactory.cs \
ReplyStatus.cs \
RequestHandler.cs \
+ RetryQueue.cs \
RouterInfo.cs \
ServantManager.cs \
Set.cs \
diff --git a/cs/src/Ice/OutgoingAsync.cs b/cs/src/Ice/OutgoingAsync.cs
index 516fc70..ea261d6 100644
--- a/cs/src/Ice/OutgoingAsync.cs
+++ b/cs/src/Ice/OutgoingAsync.cs
@@ -74,7 +74,7 @@ namespace IceInternal
}
}
- protected void releaseCallback__(Ice.LocalException ex)
+ public void releaseCallback__(Ice.LocalException ex)
{
Debug.Assert(os__ != null);
@@ -99,7 +99,7 @@ namespace IceInternal
}
}
- protected void releaseCallback__()
+ protected void releaseCallback__()
{
lock(monitor__)
{
@@ -380,6 +380,23 @@ namespace IceInternal
}
}
+ public void retry__(int interval)
+ {
+ //
+ // This method is called by the proxy to retry an
+ // invocation. No other threads can access this object.
+ //
+ if(interval > 0)
+ {
+ Debug.Assert(os__ != null);
+ os__.instance().retryQueue().add(this, interval);
+ }
+ else
+ {
+ send__();
+ }
+ }
+
public bool send__()
{
try
@@ -409,7 +426,8 @@ namespace IceInternal
_delegate = null;
_cnt = 0;
_mode = mode;
-
+ _sentSynchronously = false;
+
//
// Can't call async via a batch proxy.
//
diff --git a/cs/src/Ice/ProxyFactory.cs b/cs/src/Ice/ProxyFactory.cs
index 034a1ca..26603ea 100644
--- a/cs/src/Ice/ProxyFactory.cs
+++ b/cs/src/Ice/ProxyFactory.cs
@@ -13,21 +13,6 @@ namespace IceInternal
{
public sealed class ProxyFactory
{
- private sealed class RetryTask : TimerTask
- {
- internal RetryTask(OutgoingAsync outAsync)
- {
- _outAsync = outAsync;
- }
-
- public void runTimerTask()
- {
- _outAsync.send__();
- }
-
- private OutgoingAsync _outAsync;
- }
-
public Ice.ObjectPrx stringToProxy(string str)
{
Reference r = instance_.referenceFactory().create(str, null);
@@ -209,26 +194,16 @@ namespace IceInternal
logger.trace(traceLevels.retryCat, s);
}
- if(interval > 0)
+ if(outAsync != null)
{
- if(outAsync != null)
- {
- instance_.timer().schedule(new RetryTask(outAsync), interval);
- }
- else
- {
- //
- // Sleep before retrying.
- //
- System.Threading.Thread.Sleep(interval);
- }
+ outAsync.retry__(interval);
}
- else
+ else if(interval > 0)
{
- if(outAsync != null)
- {
- outAsync.send__();
- }
+ //
+ // Sleep before retrying.
+ //
+ System.Threading.Thread.Sleep(interval);
}
}
diff --git a/cs/src/Ice/RetryQueue.cs b/cs/src/Ice/RetryQueue.cs
new file mode 100644
index 0000000..b5e6564
--- /dev/null
+++ b/cs/src/Ice/RetryQueue.cs
@@ -0,0 +1,90 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+namespace IceInternal
+{
+ using System.Collections.Generic;
+
+ public class RetryTask : TimerTask
+ {
+ public RetryTask(RetryQueue retryQueue, OutgoingAsync outAsync)
+ {
+ _retryQueue = retryQueue;
+ _outAsync = outAsync;
+ }
+
+ public void runTimerTask()
+ {
+ if(_retryQueue.remove(this))
+ {
+ try
+ {
+ _outAsync.send__();
+ }
+ catch(Ice.LocalException ex)
+ {
+ _outAsync.releaseCallback__(ex);
+ }
+ }
+ }
+
+ public void destroy()
+ {
+ _outAsync.releaseCallback__(new Ice.CommunicatorDestroyedException());
+ }
+
+ private RetryQueue _retryQueue;
+ private OutgoingAsync _outAsync;
+ };
+
+ public class RetryQueue
+ {
+ public RetryQueue(Instance instance)
+ {
+ _instance = instance;
+ }
+
+ public void add(OutgoingAsync outAsync, int interval)
+ {
+ lock(this)
+ {
+ RetryTask task = new RetryTask(this, outAsync);
+ _instance.timer().schedule(task, interval);
+ _requests.Add(task, null);
+ }
+ }
+
+ public void
+ destroy()
+ {
+ lock(this)
+ {
+ foreach(RetryTask task in _requests.Keys)
+ {
+ _instance.timer().cancel(task);
+ task.destroy();
+ }
+ _requests.Clear();
+ }
+ }
+
+ public bool
+ remove(RetryTask task)
+ {
+ lock(this)
+ {
+ return _requests.Remove(task);
+ }
+ }
+
+ private Instance _instance;
+ private Dictionary<RetryTask, object> _requests = new Dictionary<RetryTask, object>();
+ }
+}
+
diff --git a/java/src/Ice/ObjectPrxHelperBase.java b/java/src/Ice/ObjectPrxHelperBase.java
index 574ded0..261adfd 100644
--- a/java/src/Ice/ObjectPrxHelperBase.java
+++ b/java/src/Ice/ObjectPrxHelperBase.java
@@ -908,7 +908,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
if(out != null)
{
- out.__send(cnt);
+ out.__send();
}
return cnt;
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java
index 1ee242b..2578f5b 100644
--- a/java/src/IceInternal/Instance.java
+++ b/java/src/IceInternal/Instance.java
@@ -201,6 +201,17 @@ public final class Instance
return _endpointHostResolver;
}
+ synchronized public RetryQueue
+ retryQueue()
+ {
+ if(_state == StateDestroyed)
+ {
+ throw new Ice.CommunicatorDestroyedException();
+ }
+
+ return _retryQueue;
+ }
+
synchronized public Timer
timer()
{
@@ -713,6 +724,8 @@ public final class Instance
_objectAdapterFactory = new ObjectAdapterFactory(this, communicator);
+ _retryQueue = new RetryQueue(this);
+
//
// Add Process and Properties facets
//
@@ -753,6 +766,7 @@ public final class Instance
IceUtilInternal.Assert.FinalizerAssert(_locatorManager == null);
IceUtilInternal.Assert.FinalizerAssert(_endpointFactoryManager == null);
IceUtilInternal.Assert.FinalizerAssert(_pluginManager == null);
+ IceUtilInternal.Assert.FinalizerAssert(_retryQueue == null);
super.finalize();
}
@@ -868,6 +882,11 @@ public final class Instance
{
_outgoingConnectionFactory.waitUntilFinished();
}
+
+ if(_retryQueue != null)
+ {
+ _retryQueue.destroy();
+ }
ThreadPool serverThreadPool = null;
ThreadPool clientThreadPool = null;
@@ -877,8 +896,8 @@ public final class Instance
synchronized(this)
{
_objectAdapterFactory = null;
-
_outgoingConnectionFactory = null;
+ _retryQueue = null;
if(_connectionMonitor != null)
{
@@ -1054,6 +1073,7 @@ public final class Instance
private ThreadPool _serverThreadPool;
private SelectorThread _selectorThread;
private EndpointHostResolver _endpointHostResolver;
+ private RetryQueue _retryQueue;
private Timer _timer;
private EndpointFactoryManager _endpointFactoryManager;
private Ice.PluginManager _pluginManager;
diff --git a/java/src/IceInternal/OutgoingAsync.java b/java/src/IceInternal/OutgoingAsync.java
index 9359fe4..12820c9 100644
--- a/java/src/IceInternal/OutgoingAsync.java
+++ b/java/src/IceInternal/OutgoingAsync.java
@@ -270,14 +270,22 @@ public abstract class OutgoingAsync extends OutgoingAsyncMessageCallback
}
public final void
- __send(int cnt)
+ __retry(int cnt, int interval)
{
//
// This method is called by the proxy to retry an invocation. It's safe to update
// the count here without synchronization, no other threads can access this object.
//
_cnt = cnt;
- __send();
+ if(interval > 0)
+ {
+ assert(__os != null);
+ __os.instance().retryQueue().add(this, interval);
+ }
+ else
+ {
+ __send();
+ }
}
public final boolean
@@ -292,11 +300,11 @@ public abstract class OutgoingAsync extends OutgoingAsyncMessageCallback
}
catch(LocalExceptionWrapper ex)
{
- handleException(ex);
+ handleException(ex); // Might call __send() again upon retry and assign _sentSynchronously
}
catch(Ice.LocalException ex)
{
- handleException(ex);
+ handleException(ex); // Might call __send() again upon retry and assign _sentSynchronously
}
return _sentSynchronously;
}
@@ -310,6 +318,7 @@ public abstract class OutgoingAsync extends OutgoingAsyncMessageCallback
_delegate = null;
_cnt = 0;
_mode = mode;
+ _sentSynchronously = false;
//
// Can't call async via a batch proxy.
diff --git a/java/src/IceInternal/ProxyFactory.java b/java/src/IceInternal/ProxyFactory.java
index ac05fe1..1f24976 100644
--- a/java/src/IceInternal/ProxyFactory.java
+++ b/java/src/IceInternal/ProxyFactory.java
@@ -132,7 +132,7 @@ public final class ProxyFactory
if(out != null)
{
- out.__send(cnt);
+ out.__retry(cnt, 0);
}
return cnt; // We must always retry, so we don't look at the retry count.
}
@@ -205,42 +205,23 @@ public final class ProxyFactory
logger.trace(traceLevels.retryCat, s);
}
- if(interval > 0)
+ if(out != null)
{
- if(out != null)
- {
- final int count = cnt;
- _instance.timer().schedule(new TimerTask()
- {
- public void
- runTimerTask()
- {
- out.__send(count);
- }
- }, interval);
- }
- else
- {
- //
- // Sleep before retrying.
- //
- try
- {
- Thread.currentThread().sleep(interval);
- }
- catch(InterruptedException ex1)
- {
- }
- }
+ out.__retry(cnt, interval);
}
- else
+ else if(interval > 0)
{
- if(out != null)
+ //
+ // Sleep before retrying.
+ //
+ try
+ {
+ Thread.currentThread().sleep(interval);
+ }
+ catch(InterruptedException ex1)
{
- out.__send(cnt);
}
}
-
return cnt;
}
diff --git a/java/src/IceInternal/RetryQueue.java b/java/src/IceInternal/RetryQueue.java
new file mode 100644
index 0000000..0e0065a
--- /dev/null
+++ b/java/src/IceInternal/RetryQueue.java
@@ -0,0 +1,49 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package IceInternal;
+
+public class RetryQueue
+{
+ RetryQueue(Instance instance)
+ {
+ _instance = instance;
+ }
+
+ synchronized public void
+ add(OutgoingAsync outAsync, int interval)
+ {
+ RetryTask task = new RetryTask(this, outAsync);
+ _instance.timer().schedule(task, interval);
+ _requests.add(task);
+ }
+
+ synchronized public void
+ destroy()
+ {
+ java.util.Iterator<RetryTask> p = _requests.iterator();
+ while(p.hasNext())
+ {
+ RetryTask task = p.next();
+ _instance.timer().cancel(task);
+ task.destroy();
+ }
+ _requests.clear();
+ }
+
+ synchronized boolean
+ remove(RetryTask task)
+ {
+ return _requests.remove(task);
+ }
+
+ final private Instance _instance;
+ final private java.util.HashSet<RetryTask> _requests = new java.util.HashSet<RetryTask>();
+};
+
diff --git a/java/src/IceInternal/RetryTask.java b/java/src/IceInternal/RetryTask.java
new file mode 100644
index 0000000..5c17c8a
--- /dev/null
+++ b/java/src/IceInternal/RetryTask.java
@@ -0,0 +1,44 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package IceInternal;
+
+class RetryTask implements TimerTask
+{
+ RetryTask(RetryQueue queue, OutgoingAsync outAsync)
+ {
+ _queue = queue;
+ _outAsync = outAsync;
+ }
+
+ public void
+ runTimerTask()
+ {
+ if(_queue.remove(this))
+ {
+ try
+ {
+ _outAsync.__send();
+ }
+ catch(Ice.LocalException ex)
+ {
+ _outAsync.__releaseCallback(ex);
+ }
+ }
+ }
+
+ public void
+ destroy()
+ {
+ _outAsync.__releaseCallback(new Ice.CommunicatorDestroyedException());
+ }
+
+ private final RetryQueue _queue;
+ private final OutgoingAsync _outAsync;
+}
Ice-3.3.0-use-db4.7.patch:
--- NEW FILE Ice-3.3.0-use-db4.7.patch ---
--- Ice-3.3.0/cpp/src/Freeze/SharedDbEnv.cpp.orig 2008-08-08 14:57:10.000000000 +0200
+++ Ice-3.3.0/cpp/src/Freeze/SharedDbEnv.cpp 2008-08-08 14:57:32.000000000 +0200
@@ -506,7 +506,7 @@
if(autoDelete)
{
- _env->set_flags(DB_LOG_AUTOREMOVE, 1);
+ _env->log_set_config(DB_LOG_AUTO_REMOVE, 1);
}
//
Index: ice.spec
===================================================================
RCS file: /cvs/pkgs/rpms/ice/F-8/ice.spec,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ice.spec 30 Jul 2008 15:45:23 -0000 1.12
+++ ice.spec 4 Dec 2008 10:22:52 -0000 1.13
@@ -4,7 +4,7 @@
Name: ice
Version: 3.3.0
-Release: 4%{?dist}
+Release: 8%{?dist}
Summary: The Ice base runtime and services
Group: System Environment/Libraries
@@ -17,12 +17,32 @@
Source8: icegridgui
Source9: IceGridAdmin.desktop
Source10: Ice-%{version}-README.Fedora
+# Don't build the demo or test directories
Patch0: Ice-3.3-dont-build-demo-test.patch
+# Don't put manifest in jar; don't build demo or test; use system jgoodies
Patch1: Ice-3.3.0-java-build.patch
+# Don't include the Windows L&F
Patch2: Ice-3.3.0-jgoodies.patch
+# Move the TimerTask to its own source file
Patch3: Ice-3.3.0-java-Timer.patch
# From http://www.zeroc.com/forums/patches/3798-patch-1-ice-3-3-0-fix-slice2cpp-slice2freeze.html
Patch4: Ice-3.3.0-fix-slice2cpp-slice2freeze.patch
+# Use the new DB4 methods
+Patch5: Ice-3.3.0-use-db4.7.patch
+# Also allow Python 2.6
+Patch6: Ice-3.3.0-python-26.patch
+# From http://www.zeroc.com/forums/patches/3895-patch-3-ice-3-3-0-c-compression-setting-not-always-honored.html
+Patch7: Ice-3.3.0-compression.patch
+# From http://www.zeroc.com/forums/patches/3911-patch-4-ice-3-3-0-slice-translators-directory-write-access.html
+Patch8: Ice-3.3.0-preprocess.patch
+# From http://www.zeroc.com/forums/patches/3982-patch-6-ice-3-3-0-icegrid-fixes-potential-registry-crash.html
+Patch9: Ice-3.3.0-registry-crash.patch
+# From http://www.zeroc.com/forums/patches/4024-patch-7-ice-3-3-0-retry-bug-if-ice-retryintervals-set.html
+Patch10: Ice-3.3.0-retry-intervals.patch
+# From http://www.zeroc.com/forums/patches/4029-patch-8-ice-3-3-0-icepatch2-non-ascii-file-names.html
+Patch11: Ice-3.3.0-icepatch-non-ascii.patch
+# From http://www.zeroc.com/forums/patches/4076-patch-9-ice-3-3-0-icegrid-fixes-assert-when-application-synced-concurrently.html
+Patch12: Ice-3.3.0-icegrid-assert.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# Ice doesn't officially support this architecture at all
@@ -163,6 +183,16 @@
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%if 0%{?fedora} >= 10
+%patch5 -p1
+%endif
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
%setup -q -n Ice-rpmbuild-%{version} -T -b 1
%setup -q -n Ice-%{version}-man-pages -T -b 2
@@ -189,6 +219,7 @@
%install
rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT
# Do the basic "make install"
cd $RPM_BUILD_DIR/Ice-%{version}
@@ -523,6 +554,19 @@
%config(noreplace) %{_sysconfdir}/php.d/ice.ini
%changelog
+* Thu Dec 4 2008 <mefoster at gmail.com> - 3.3.0-8
+- Add all accumulated upstream patches
+
+* Thu Dec 4 2008 <mefoster at gmail.com> - 3.3.0-7
+- (Tiny) patch to support Python 2.6
+
+* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm at gmail.com> - 3.3.0-6
+- Rebuild for Python 2.6
+
+* Tue Aug 12 2008 Mary Ellen Foster <mefoster at gmail.com> 3.3.0-5
+- Explicitly create build root so it builds on F10
+- Patch to build against DB4.7
+
* Wed Jul 30 2008 Mary Ellen Foster <mefoster at gmail.com> 3.3.0-4
- Re-add .pth file -- the alternative method involves editing auto-generated
files that say "don't edit" and I don't want to break other parts of Ice
- Previous message (by thread): rpms/ice/F-9 Ice-3.3.0-compression.patch, NONE, 1.1 Ice-3.3.0-icegrid-assert.patch, NONE, 1.1 Ice-3.3.0-icepatch-non-ascii.patch, NONE, 1.1 Ice-3.3.0-preprocess.patch, NONE, 1.1 Ice-3.3.0-python-26.patch, NONE, 1.1 Ice-3.3.0-registry-crash.patch, NONE, 1.1 Ice-3.3.0-retry-intervals.patch, NONE, 1.1 Ice-3.3.0-use-db4.7.patch, NONE, 1.1 ice.spec, 1.18, 1.19
- Next message (by thread): rpms/robodoc/devel import.log, NONE, 1.1 robodoc.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list