summaryrefslogtreecommitdiff
path: root/cpp/src/Freeze/EvictorI.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2006-07-27 01:47:43 +0000
committerBernard Normier <bernard@zeroc.com>2006-07-27 01:47:43 +0000
commit6d1e32eebbbe320b3a1fe33552824a3f8982b6a0 (patch)
treeec67ad494b59bd2e8028f5b7e5b886394cb4e3b9 /cpp/src/Freeze/EvictorI.cpp
parentMinor fix (diff)
downloadice-6d1e32eebbbe320b3a1fe33552824a3f8982b6a0.tar.bz2
ice-6d1e32eebbbe320b3a1fe33552824a3f8982b6a0.tar.xz
ice-6d1e32eebbbe320b3a1fe33552824a3f8982b6a0.zip
Partial fix for bug #1257: deprecating nonmutating
Diffstat (limited to 'cpp/src/Freeze/EvictorI.cpp')
-rw-r--r--cpp/src/Freeze/EvictorI.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/cpp/src/Freeze/EvictorI.cpp b/cpp/src/Freeze/EvictorI.cpp
index 4e148fedbc1..99a5553f2c3 100644
--- a/cpp/src/Freeze/EvictorI.cpp
+++ b/cpp/src/Freeze/EvictorI.cpp
@@ -294,7 +294,8 @@ Freeze::EvictorI::EvictorI(const ObjectAdapterPtr& adapter,
_trace = _communicator->getProperties()->getPropertyAsInt("Freeze.Trace.Evictor");
_txTrace = _communicator->getProperties()->getPropertyAsInt("Freeze.Trace.Transaction");
_deadlockWarning = (_communicator->getProperties()->getPropertyAsInt("Freeze.Warn.Deadlocks") != 0);
-
+ _useNonmutating = (_communicator->getProperties()->getPropertyAsInt("Freeze.Evictor.UseNonmutating") != 0);
+
string propertyPrefix = string("Freeze.Evictor.") + envName + '.' + _filename;
//
@@ -1135,8 +1136,6 @@ Freeze::EvictorI::locate(const Current& current, LocalObjectPtr& cookie)
//
if(current.operation == "ice_ping")
{
- assert(current.mode == Nonmutating);
-
if(hasFacetImpl(current.id, current.facet))
{
if(_trace >= 3)
@@ -1272,7 +1271,8 @@ Freeze::EvictorI::finished(const Current& current, const ObjectPtr& servant, con
bool enqueue = false;
- if(current.mode != Nonmutating)
+ if((_useNonmutating && current.mode != Nonmutating) ||
+ (servant->ice_operationAttributes(current.operation) & 0x1) != 0)
{
IceUtil::Mutex::Lock lock(element->mutex);