summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNAKAMURA Usaku <usa@ruby-lang.org>2021-04-16 05:30:08 +0900
committerNAKAMURA Usaku <usa@ruby-lang.org>2021-04-16 05:30:08 +0900
commit67f1cd20bfb97ff6e5a15d27c8ef06cdb97ed37a (patch)
tree664fbeb4993ead9afc5d71eb30ea716f5aa5db00
parent06732f8a1cbb69576de6383e55e2ddb976c63b34 (diff)
merge revision(s) fbbc37dc1d5b329777e6d9716118db528ab70730: [Backport #17802]
test/drb/test_drb.rb: Specify the host of DRbServer to try fixing the following error. http://rubyci.s3.amazonaws.com/opensuseleap/ruby-master/log/20210407T063004Z.log.html.gz ``` [ 605/21105] DRbTests::TestDRbSSLAry#test_06_next/home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/lib/drb/drb.rb:1138:in `method_missing': undefined method `regist' for [1, 2, "III", 4, "five", 6]:Array (NoMethodError) from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/lib/drb/extserv.rb:21:in `block in initialize' from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/.ext/common/monitor.rb:202:in `synchronize' from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/.ext/common/monitor.rb:202:in `mon_synchronize' from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/lib/drb/extserv.rb:20:in `initialize' from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/test/drb/ut_array_drbssl.rb:35:in `new' from /home/chkbuild/chkbuild/tmp/build/20210407T063004Z/ruby/test/drb/ut_array_drbssl.rb:35:in `<main>' = 100.05 s ``` Here is my analysis: The test of drb used both `druby://:0` and `druby://localhost:0` for DRbServer. However, the former listens on IPv4, and the latter does on IPv6, depending on environments. The port 0 is automatically assigned, but sometimes the same port is used to both because they are different protocols (IPv4 and IPv6). In this case, their URIs are resolved to the completely same one (`druby://localhost:port`), which confuses the method `DRb.here?` which determines the DRbObject is remote or local. This changeset uses `druby://localhost:0` consistently. --- test/drb/test_drb.rb | 4 ++-- test/drb/test_drbssl.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
-rw-r--r--test/drb/test_drb.rb4
-rw-r--r--test/drb/test_drbssl.rb2
-rw-r--r--version.h4
3 files changed, 5 insertions, 5 deletions
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index 47b2966ae2..6d7b10e347 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -323,7 +323,7 @@ class TestDRbAnyToS < Test::Unit::TestCase
end
def test_any_to_s
- server = DRb::DRbServer.new('druby://:0')
+ server = DRb::DRbServer.new('druby://localhost:0')
server.singleton_class.send(:public, :any_to_s)
assert_equal("foo:String", server.any_to_s("foo"))
assert_match(/\A#<DRbTests::TestDRbAnyToS::BO:0x[0-9a-f]+>\z/, server.any_to_s(BO.new))
@@ -335,7 +335,7 @@ end
class TestDRbTCP < Test::Unit::TestCase
def test_immediate_close
- server = DRb::DRbServer.new('druby://:0')
+ server = DRb::DRbServer.new('druby://localhost:0')
host, port, = DRb::DRbTCPSocket.send(:parse_uri, server.uri)
socket = TCPSocket.open host, port
socket.shutdown
diff --git a/test/drb/test_drbssl.rb b/test/drb/test_drbssl.rb
index 8ab010e1c4..58606119f3 100644
--- a/test/drb/test_drbssl.rb
+++ b/test/drb/test_drbssl.rb
@@ -34,7 +34,7 @@ class DRbSSLService < DRbService
[ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
end
- @server = DRb::DRbServer.new('drbssl://:0', manager, config)
+ @server = DRb::DRbServer.new('drbssl://localhost:0', manager, config)
end
end
diff --git a/version.h b/version.h
index c251982ac7..fd537b7a30 100644
--- a/version.h
+++ b/version.h
@@ -2,11 +2,11 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 4
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 184
+#define RUBY_PATCHLEVEL 185
#define RUBY_RELEASE_YEAR 2021
#define RUBY_RELEASE_MONTH 4
-#define RUBY_RELEASE_DAY 5
+#define RUBY_RELEASE_DAY 16
#include "ruby/version.h"