summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2010-06-23 16:17:26 -0400
committerBernard Normier <bernard@zeroc.com>2010-06-23 16:17:26 -0400
commit0e0dd27964e1bf174eb02fc3db2f7a56f905ca06 (patch)
tree46622c1f5260f869e5d19ed2e1f14dfa805c39b0
parentBug 4772 - Addin not installing over previous version (diff)
downloadice-0e0dd27964e1bf174eb02fc3db2f7a56f905ca06.tar.bz2
ice-0e0dd27964e1bf174eb02fc3db2f7a56f905ca06.tar.xz
ice-0e0dd27964e1bf174eb02fc3db2f7a56f905ca06.zip
Fix for bug #4785
-rwxr-xr-x[-rw-r--r--]cpp/src/Freeze/EvictorIteratorI.cpp6
-rwxr-xr-x[-rw-r--r--]cpp/test/Freeze/evictor/TestI.cpp8
-rwxr-xr-x[-rw-r--r--]java/src/Freeze/EvictorIteratorI.java10
-rwxr-xr-x[-rw-r--r--]java/test/Freeze/evictor/RemoteEvictorI.java15
4 files changed, 31 insertions, 8 deletions
diff --git a/cpp/src/Freeze/EvictorIteratorI.cpp b/cpp/src/Freeze/EvictorIteratorI.cpp
index 978747ef7f0..f28cf805f28 100644..100755
--- a/cpp/src/Freeze/EvictorIteratorI.cpp
+++ b/cpp/src/Freeze/EvictorIteratorI.cpp
@@ -60,15 +60,15 @@ Freeze::EvictorIteratorI::next()
vector<Identity>::const_iterator
Freeze::EvictorIteratorI::nextBatch()
{
- DeactivateController::Guard
- deactivateGuard(_store->evictor()->deactivateController());
-
_batch.clear();
if(!_more)
{
return _batch.end();
}
+
+ DeactivateController::Guard
+ deactivateGuard(_store->evictor()->deactivateController());
Key firstKey = _key;
diff --git a/cpp/test/Freeze/evictor/TestI.cpp b/cpp/test/Freeze/evictor/TestI.cpp
index 2be433a4309..56a5a80a910 100644..100755
--- a/cpp/test/Freeze/evictor/TestI.cpp
+++ b/cpp/test/Freeze/evictor/TestI.cpp
@@ -534,6 +534,14 @@ Test::RemoteEvictorI::RemoteEvictorI(const CommunicatorPtr& communicator, const
{
_evictor = Freeze::createBackgroundSaveEvictor(_evictorAdapter, envName, category, initializer);
}
+
+ //
+ // Check that we can get an iterator on a non-existing facet
+ //
+ Freeze::EvictorIteratorPtr p = _evictor->getIterator("foo", 1);
+ test(p->hasNext() == false);
+
+
initializer->init(this, _evictor);
_evictorAdapter->addServantLocator(_evictor, category);
diff --git a/java/src/Freeze/EvictorIteratorI.java b/java/src/Freeze/EvictorIteratorI.java
index e96bffefc2f..938da54afc2 100644..100755
--- a/java/src/Freeze/EvictorIteratorI.java
+++ b/java/src/Freeze/EvictorIteratorI.java
@@ -58,6 +58,11 @@ class EvictorIteratorI implements EvictorIterator
private java.util.Iterator<Ice.Identity>
nextBatch()
{
+ if(!_more)
+ {
+ return null;
+ }
+
EvictorI.DeactivateController deactivateController = _store.evictor().deactivateController();
deactivateController.lock();
@@ -65,11 +70,6 @@ class EvictorIteratorI implements EvictorIterator
try
{
- if(!_more)
- {
- return null;
- }
-
Ice.Communicator communicator = _store.communicator();
byte[] firstKey = null;
diff --git a/java/test/Freeze/evictor/RemoteEvictorI.java b/java/test/Freeze/evictor/RemoteEvictorI.java
index 1c4b88c4be8..1431767dcb0 100644..100755
--- a/java/test/Freeze/evictor/RemoteEvictorI.java
+++ b/java/test/Freeze/evictor/RemoteEvictorI.java
@@ -12,6 +12,15 @@ import test.Freeze.evictor.Test.*;
public final class RemoteEvictorI extends _RemoteEvictorDisp
{
+ private static void
+ test(boolean b)
+ {
+ if(!b)
+ {
+ throw new RuntimeException();
+ }
+ }
+
static class Initializer implements Freeze.ServantInitializer
{
public void
@@ -69,6 +78,12 @@ public final class RemoteEvictorI extends _RemoteEvictorDisp
true);
}
+ //
+ // Check that we can get an iterator on a non-existing facet
+ //
+ Freeze.EvictorIterator p = _evictor.getIterator("foo", 1);
+ test(p.hasNext() == false);
+
initializer.init(this, _evictor);
_evictorAdapter.addServantLocator(_evictor, category);