[前][次][番号順一覧][スレッド一覧]

ruby-changes:65864

From: nagachika <ko1@a...>
Date: Thu, 15 Apr 2021 10:29:24 +0900 (JST)
Subject: [ruby-changes:65864] d5a34e1b14 (ruby_3_0): merge revision(s) fbbc37dc1d5b329777e6d9716118db528ab70730: [Backport #17802]

https://git.ruby-lang.org/ruby.git/commit/?id=d5a34e1b14

From d5a34e1b142eccc54971494be2243a0c6ac01d94 Mon Sep 17 00:00:00 2001
From: nagachika <nagachika@r...>
Date: Thu, 15 Apr 2021 09:46:36 +0900
Subject: 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(-)
---
 test/drb/test_drb.rb    | 4 ++--
 test/drb/test_drbssl.rb | 2 +-
 version.h               | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index 47b2966..6d7b10e 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -323,7 +323,7 @@ class TestDRbAnyToS < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/drb/test_drb.rb#L323
   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 https://github.com/ruby/ruby/blob/trunk/test/drb/test_drb.rb#L335
 
 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 1763b38..0254c7a 100644
--- a/test/drb/test_drbssl.rb
+++ b/test/drb/test_drbssl.rb
@@ -34,7 +34,7 @@ class DRbSSLService < DRbService https://github.com/ruby/ruby/blob/trunk/test/drb/test_drbssl.rb#L34
         [ ["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 4e51660..41f7a51 100644
--- a/version.h
+++ b/version.h
@@ -12,7 +12,7 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L12
 # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
 #define RUBY_VERSION_TEENY 2
 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 65
+#define RUBY_PATCHLEVEL 66
 
 #define RUBY_RELEASE_YEAR 2021
 #define RUBY_RELEASE_MONTH 4
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]