Bug 1950307 - Resolv::DNS: ruby:2.6/ruby: timeouts if multiple IPv6 name servers are given and address contains leading zero [rhel-8]
Summary: Resolv::DNS: ruby:2.6/ruby: timeouts if multiple IPv6 name servers are given ...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: ruby
Version: 8.3
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Vít Ondruch
QA Contact: Jan Houska
URL:
Whiteboard:
Depends On:
Blocks: 1916404 1954968
TreeView+ depends on / blocked
 
Reported: 2021-04-16 11:31 UTC by Vít Ondruch
Modified: 2021-12-16 12:09 UTC (History)
3 users (show)

Fixed In Version: ruby-2.6-8040020210430142949.522a0ee4
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1954968 (view as bug list)
Environment:
Last Closed: 2021-12-16 11:54:57 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Vít Ondruch 2021-04-16 11:31:45 UTC
Description of problem:

Resolv::DNS does not return any results under those conditions:

    there are at least two name servers (in /etc/resolv.conf).
    The name servers have IPv6 addresses containing leading zeros.

Example resolv.conf:
nameserver 2001:0db8::0001:1
nameserver 2001:0db8::0002:1

This is caused by a mismatch in representation of the address: Requester::sender_for compares the address of the answering server (e.g. 2001:0db8::1:1) with the address the request was sent to (e.g. 2001:0db8::0001:1).

Version-Release number of selected component (if applicable):

ruby-libs-2.5.5-105.module+el8.1.0+3656+f80bfa1d.x86_64

How reproducible:

We reproduced this by running puppet_facts on OSP 16.1

Steps to Reproduce:


You can see the difference in timing when the ipa facts are pre-populated (the DNS lookup is skipped) or not:

[root@]# time FACTER_ipa_domain='' FACTER_ipa_server='' puppet facts >/dev/null

real    0m2.367s
user    0m1.746s
sys     0m0.392s

[root@]# time puppet facts >/dev/null

real    1m22.435s
user    0m1.735s
sys     0m0.428s


Additional info:

See https://bugzilla.redhat.com/show_bug.cgi?id=1916404

This was fixed in https://bugs.ruby-lang.org/issues/16439

Comment 5 Pavel Valena 2021-07-13 11:24:47 UTC
Resolved via Zstream.

Comment 7 Jan Houska 2021-07-29 10:22:53 UTC
VERIFIED


Current package version in nightly compose (http://download.eng.brq.redhat.com/rhel-8/nightly/RHEL-8/RHEL-8.5.0-20210729.n.0/compose/AppStream/x86_64/os/Packages/ruby-2.6.7-107.module+el8.4.0+10830+bbd85cce.x86_64.rpm) contains package with fix -> Test passed


version:
ruby-2.6.7-107.module+el8.4.0+10830+bbd85cce.x86_64


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [ 06:18:46 ] :: [   INFO   ] :: using '/var/tmp/beakerlib-1VWqREb/backup' as backup destination
Redirecting to /bin/systemctl status named.service
Redirecting to /bin/systemctl start named.service
:: [ 06:18:46 ] :: [   LOG    ] :: rlServiceStart: Service named started successfully
:: [ 06:18:46 ] :: [  BEGIN   ] :: Run reproducer :: actually running 'timeout 3 ruby -rresolv -e 'puts Resolv::DNS.new.getresource("localhost.", Resolv::DNS::Resource::IN::A).address' 2>&1 | tee output.txt'
127.0.0.1
:: [ 06:18:46 ] :: [   PASS   ] :: Run reproducer (Expected 0, got 0)
:: [ 06:18:46 ] :: [   PASS   ] :: File 'output.txt' should contain '127.0.0.1' 
Redirecting to /bin/systemctl status named.service
Redirecting to /bin/systemctl stop named.service
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Duration: 1s
::   Assertions: 2 good, 0 bad
::   RESULT: PASS (Test)


Note You need to log in before you can comment on or make changes to this bug.