diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-03-13 15:48:48 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-03-13 15:48:48 +0100 |
commit | 6100dbec3982b80c6fe88cff15be24f44e5fa1ad (patch) | |
tree | caea870ac8d428e0e1948e78733f476ae643a6f2 | |
parent | minor formatting tweaks to protobuf demo README (diff) | |
download | ice-6100dbec3982b80c6fe88cff15be24f44e5fa1ad.tar.bz2 ice-6100dbec3982b80c6fe88cff15be24f44e5fa1ad.tar.xz ice-6100dbec3982b80c6fe88cff15be24f44e5fa1ad.zip |
Fixed for bug 3830, 3866, 3857 - CHANGES fixes, test/Ice/timeout and udp failures, also committed minor fixes to other tests to better handle slow machines
-rw-r--r-- | CHANGES | 23 | ||||
-rw-r--r-- | cpp/test/Ice/background/AllTests.cpp | 4 | ||||
-rw-r--r-- | cpp/test/Ice/location/AllTests.cpp | 7 | ||||
-rw-r--r-- | cpp/test/Ice/timeout/AllTests.cpp | 2 | ||||
-rw-r--r-- | cpp/test/Ice/udp/AllTests.cpp | 26 | ||||
-rw-r--r-- | cs/test/Ice/background/AllTests.cs | 4 | ||||
-rw-r--r-- | cs/test/Ice/location/AllTests.cs | 7 | ||||
-rw-r--r-- | cs/test/Ice/timeout/AllTests.cs | 2 | ||||
-rw-r--r-- | cs/test/Ice/udp/AllTests.cs | 24 | ||||
-rw-r--r-- | java/test/Ice/background/AllTests.java | 4 | ||||
-rw-r--r-- | java/test/Ice/location/AllTests.java | 7 | ||||
-rw-r--r-- | java/test/Ice/timeout/AllTests.java | 2 | ||||
-rw-r--r-- | java/test/Ice/udp/AllTests.java | 24 |
13 files changed, 95 insertions, 41 deletions
@@ -103,9 +103,20 @@ noted. administrative clients (or by nodes started with the --deploy option). -- Fixed a bug in the IceGrid locator implementation that could cause a - hang when resolving the endpoints of a round-robin replica group if - a member of the replica group was removed concurrently. +- IceGrid locator implementation changes: + + * Fixed a bug where the registry could crash when resolving the + endpoints of a replica group if some servers were activating + concurrently. + + * Fixed a bug where the registry could hang when resolving the + endpoints of a round-robin replica group if a member of the + replica group was removed concurrently. + + * Improved the scalability of the locator implementation to better + handle large number of concurrent requests. The registry now + limits the number of invocation to the IceGrid nodes to get the + object adapter endpoints. - A Slice compiler now removes any files it has generated during the current execution if it fails or is interrupted. @@ -138,10 +149,6 @@ C++ Changes - Fixed a bug in IceSSL where the IceSSL.CheckCertName property did not have any effect. -- Fixed a bug in the IceGrid locator implementation that could cause - the registry to crash when resolving the endpoints of a replica - group if some servers were activating concurrently. - - Fixed icegridadmin `service list' command crash. - Fixed a bug where slice2cpp and slice2freeze would generate absolute @@ -263,6 +270,8 @@ Python Changes - Ice.getSliceDir() now only searches for the "slice" directory in a standard Ice installation. +- Improved location of the Python framework on Mac OS X. + Ruby Changes ============ diff --git a/cpp/test/Ice/background/AllTests.cpp b/cpp/test/Ice/background/AllTests.cpp index 1aa19dbefa8..1f2c9e6b6b1 100644 --- a/cpp/test/Ice/background/AllTests.cpp +++ b/cpp/test/Ice/background/AllTests.cpp @@ -245,13 +245,13 @@ void readWriteTests(const ConfigurationPtr&, const Test::BackgroundPrx&, const T BackgroundPrx allTests(const Ice::CommunicatorPtr& communicator) { - string sref = "background:default -p 12010 -t 10000"; + string sref = "background:default -p 12010 -t 20000"; Ice::ObjectPrx obj = communicator->stringToProxy(sref); test(obj); BackgroundPrx background = BackgroundPrx::uncheckedCast(obj); - sref = "backgroundController:tcp -p 12011 -t 10000"; + sref = "backgroundController:tcp -p 12011 -t 20000"; obj = communicator->stringToProxy(sref); test(obj); diff --git a/cpp/test/Ice/location/AllTests.cpp b/cpp/test/Ice/location/AllTests.cpp index 5bb637de642..941fb8ef0d5 100644 --- a/cpp/test/Ice/location/AllTests.cpp +++ b/cpp/test/Ice/location/AllTests.cpp @@ -359,7 +359,8 @@ allTests(const Ice::CommunicatorPtr& communicator, const string& ref) catch(const Ice::NotRegisteredException&) { } - test(locator->getRequestCount() > count && locator->getRequestCount() < count + 999); + // Take into account the retries. + test(locator->getRequestCount() > count && locator->getRequestCount() < count + 1999); if(locator->getRequestCount() > count + 800) { cout << "queuing = " << locator->getRequestCount() - count; @@ -522,8 +523,8 @@ allTests(const Ice::CommunicatorPtr& communicator, const string& ref) test(count == locator->getRequestCount()); registry->setAdapterDirectProxy("TestAdapter5", 0); registry->addObject(communicator->stringToProxy("test3:tcp")); - ic->stringToProxy("test@TestAdapter5")->ice_locatorCacheTimeout(1)->ice_ping(); // 1s timeout. - ic->stringToProxy("test3")->ice_locatorCacheTimeout(1)->ice_ping(); // 1s timeout. + ic->stringToProxy("test@TestAdapter5")->ice_locatorCacheTimeout(10)->ice_ping(); // 10s timeout. + ic->stringToProxy("test3")->ice_locatorCacheTimeout(10)->ice_ping(); // 10s timeout. test(count == locator->getRequestCount()); IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(1200)); diff --git a/cpp/test/Ice/timeout/AllTests.cpp b/cpp/test/Ice/timeout/AllTests.cpp index 63e5a77a1a2..5bfcbd78879 100644 --- a/cpp/test/Ice/timeout/AllTests.cpp +++ b/cpp/test/Ice/timeout/AllTests.cpp @@ -190,7 +190,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Expect success. // timeout->op(); // Ensure adapter is active. - TimeoutPrx to = TimeoutPrx::uncheckedCast(obj->ice_timeout(1000)); + TimeoutPrx to = TimeoutPrx::uncheckedCast(obj->ice_timeout(2000)); try { to->sleep(500); diff --git a/cpp/test/Ice/udp/AllTests.cpp b/cpp/test/Ice/udp/AllTests.cpp index 2965004ec56..61d5f5efbe0 100644 --- a/cpp/test/Ice/udp/AllTests.cpp +++ b/cpp/test/Ice/udp/AllTests.cpp @@ -73,12 +73,26 @@ allTests(const CommunicatorPtr& communicator) ObjectPrx base = communicator->stringToProxy("test:udp -p 12010")->ice_datagram(); TestIntfPrx obj = TestIntfPrx::uncheckedCast(base); - replyI->reset(); - obj->ping(reply); - obj->ping(reply); - obj->ping(reply); - bool ret = replyI->waitReply(3, IceUtil::Time::seconds(2)); - test(ret == true); + int nRetry = 5; + bool ret; + while(nRetry-- > 0) + { + replyI->reset(); + obj->ping(reply); + obj->ping(reply); + obj->ping(reply); + ret = replyI->waitReply(3, IceUtil::Time::seconds(2)); + if(ret) + { + break; // Success + } + + // If the 3 datagrams were not received within the 2 seconds, we try again to + // receive 3 new datagrams using a new object. We give up after 5 retries. + replyI = new PingReplyI; + reply = PingReplyPrx::uncheckedCast(adapter->addWithUUID(replyI))->ice_datagram(); + } + test(ret); if(communicator->getProperties()->getPropertyAsInt("Ice.Override.Compress") == 0) { diff --git a/cs/test/Ice/background/AllTests.cs b/cs/test/Ice/background/AllTests.cs index 1c6c3373729..47849311d2c 100644 --- a/cs/test/Ice/background/AllTests.cs +++ b/cs/test/Ice/background/AllTests.cs @@ -219,13 +219,13 @@ public class AllTests public static Test.BackgroundPrx allTests(Ice.Communicator communicator) { - string sref = "background:default -p 12010 -t 10000"; + string sref = "background:default -p 12010 -t 20000"; Ice.ObjectPrx obj = communicator.stringToProxy(sref); test(obj != null); BackgroundPrx background = BackgroundPrxHelper.uncheckedCast(obj); - sref = "backgroundController:tcp -p 12011 -t 10000"; + sref = "backgroundController:tcp -p 12011 -t 20000"; obj = communicator.stringToProxy(sref); test(obj != null); diff --git a/cs/test/Ice/location/AllTests.cs b/cs/test/Ice/location/AllTests.cs index 0c6bdce8522..b91af5e17d4 100644 --- a/cs/test/Ice/location/AllTests.cs +++ b/cs/test/Ice/location/AllTests.cs @@ -347,7 +347,8 @@ public class AllTests catch(Ice.NotRegisteredException) { } - test(locator.getRequestCount() > count && locator.getRequestCount() < count + 999); + // Take into account the retries. + test(locator.getRequestCount() > count && locator.getRequestCount() < count + 1999); if(locator.getRequestCount() > count + 800) { Console.Out.Write("queuing = " + (locator.getRequestCount() - count)); @@ -584,8 +585,8 @@ public class AllTests { } registry.addObject(communicator.stringToProxy("test3:tcp")); - ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. - ic.stringToProxy("test3").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. + ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(10).ice_ping(); // 10s timeout. + ic.stringToProxy("test3").ice_locatorCacheTimeout(10).ice_ping(); // 10s timeout. test(count == locator.getRequestCount()); System.Threading.Thread.Sleep(new System.TimeSpan(10 * 1200 * 1000)); diff --git a/cs/test/Ice/timeout/AllTests.cs b/cs/test/Ice/timeout/AllTests.cs index 5819bfccb80..f33f986be27 100644 --- a/cs/test/Ice/timeout/AllTests.cs +++ b/cs/test/Ice/timeout/AllTests.cs @@ -175,7 +175,7 @@ public class AllTests // Expect success. // timeout.op(); // Ensure adapter is active. - Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(1000)); + Test.TimeoutPrx to = Test.TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(2000)); to.holdAdapter(500); to.ice_getConnection().close(true); // Force a reconnect. try diff --git a/cs/test/Ice/udp/AllTests.cs b/cs/test/Ice/udp/AllTests.cs index e4e8006da17..d582ca1967b 100644 --- a/cs/test/Ice/udp/AllTests.cs +++ b/cs/test/Ice/udp/AllTests.cs @@ -78,11 +78,25 @@ public class AllTests Ice.ObjectPrx @base = communicator.stringToProxy("test:udp -p 12010").ice_datagram(); Test.TestIntfPrx obj = Test.TestIntfPrxHelper.uncheckedCast(@base); - replyI.reset(); - obj.ping(reply); - obj.ping(reply); - obj.ping(reply); - bool ret = replyI.waitReply(3, 2000); + int nRetry = 5; + bool ret = false; + while(nRetry-- > 0) + { + replyI.reset(); + obj.ping(reply); + obj.ping(reply); + obj.ping(reply); + ret = replyI.waitReply(3, 2000); + if(ret) + { + break; // Success + } + + // If the 3 datagrams were not received within the 2 seconds, we try again to + // receive 3 new datagrams using a new object. We give up after 5 retries. + replyI = new PingReplyI(); + reply =(Test.PingReplyPrx)Test.PingReplyPrxHelper.uncheckedCast(adapter.addWithUUID(replyI)).ice_datagram(); + } test(ret == true); if(communicator.getProperties().getPropertyAsInt("Ice.Override.Compress") == 0) diff --git a/java/test/Ice/background/AllTests.java b/java/test/Ice/background/AllTests.java index 737f792c8d0..2c58e1a2ab6 100644 --- a/java/test/Ice/background/AllTests.java +++ b/java/test/Ice/background/AllTests.java @@ -229,13 +229,13 @@ public class AllTests public static Test.BackgroundPrx allTests(Ice.Communicator communicator, java.io.PrintStream out) { - String sref = "background:default -p 12010 -t 10000"; + String sref = "background:default -p 12010 -t 20000"; Ice.ObjectPrx obj = communicator.stringToProxy(sref); test(obj != null); BackgroundPrx background = BackgroundPrxHelper.uncheckedCast(obj); - sref = "backgroundController:tcp -p 12011 -t 10000"; + sref = "backgroundController:tcp -p 12011 -t 20000"; obj = communicator.stringToProxy(sref); test(obj != null); diff --git a/java/test/Ice/location/AllTests.java b/java/test/Ice/location/AllTests.java index df1544e9038..fe1dd53a7d7 100644 --- a/java/test/Ice/location/AllTests.java +++ b/java/test/Ice/location/AllTests.java @@ -364,7 +364,8 @@ public class AllTests catch(Ice.NotRegisteredException ex) { } - test(locator.getRequestCount() > count && locator.getRequestCount() < count + 999); + // We need to take into account the retries. + test(locator.getRequestCount() > count && locator.getRequestCount() < count + 1999); if(locator.getRequestCount() > count + 800) { System.out.print("queuing = " + (locator.getRequestCount() - count)); @@ -605,8 +606,8 @@ public class AllTests { } registry.addObject(communicator.stringToProxy("test3:tcp")); - ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. - ic.stringToProxy("test3").ice_locatorCacheTimeout(1).ice_ping(); // 1s timeout. + ic.stringToProxy("test@TestAdapter5").ice_locatorCacheTimeout(10).ice_ping(); // 10s timeout. + ic.stringToProxy("test3").ice_locatorCacheTimeout(10).ice_ping(); // 10s timeout. test(count == locator.getRequestCount()); try { diff --git a/java/test/Ice/timeout/AllTests.java b/java/test/Ice/timeout/AllTests.java index 73cf9dffb5c..1f827eb9e47 100644 --- a/java/test/Ice/timeout/AllTests.java +++ b/java/test/Ice/timeout/AllTests.java @@ -190,7 +190,7 @@ public class AllTests // Expect success. // timeout.op(); // Ensure adapter is active. - TimeoutPrx to = TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(1000)); + TimeoutPrx to = TimeoutPrxHelper.uncheckedCast(obj.ice_timeout(2000)); to.holdAdapter(500); to.ice_getConnection().close(true); // Force a reconnect. try diff --git a/java/test/Ice/udp/AllTests.java b/java/test/Ice/udp/AllTests.java index e374478f2ea..53f10f5a633 100644 --- a/java/test/Ice/udp/AllTests.java +++ b/java/test/Ice/udp/AllTests.java @@ -76,11 +76,25 @@ public class AllTests Ice.ObjectPrx base = communicator.stringToProxy("test:udp -p 12010").ice_datagram(); Test.TestIntfPrx obj = Test.TestIntfPrxHelper.uncheckedCast(base); - replyI.reset(); - obj.ping(reply); - obj.ping(reply); - obj.ping(reply); - boolean ret = replyI.waitReply(3, 2000); + int nRetry = 5; + boolean ret = false; + while(nRetry-- > 0) + { + replyI.reset(); + obj.ping(reply); + obj.ping(reply); + obj.ping(reply); + ret = replyI.waitReply(3, 2000); + if(ret) + { + break; // Success + } + + // If the 3 datagrams were not received within the 2 seconds, we try again to + // receive 3 new datagrams using a new object. We give up after 5 retries. + replyI = new PingReplyI(); + reply =(Test.PingReplyPrx)Test.PingReplyPrxHelper.uncheckedCast(adapter.addWithUUID(replyI)).ice_datagram(); + } test(ret == true); if(communicator.getProperties().getPropertyAsInt("Ice.Override.Compress") == 0) |