Bug 1597732 - qpid-stat --timeout has no effect
Summary: qpid-stat --timeout has no effect
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-tools
Version: 3.2
Hardware: x86_64
OS: Linux
medium
medium
Target Milestone: ---
: ---
Assignee: messaging-bugs
QA Contact: Messaging QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-07-03 14:24 UTC by Pavel Moravec
Modified: 2022-03-13 15:11 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Pavel Moravec 2018-07-03 14:24:04 UTC
Description of problem:
--timeout parameter is fully ignored by qpid-stat, as:

# grep timeout /usr/bin/qpid-stat
    group1.add_option("-t", "--timeout", action="store", type="int", default=10, metavar="<secs>",
    config._connTimeout = opts.timeout
#
# grep _connTimeout /usr/bin/qpid-stat
        self._connTimeout = 10
    config._connTimeout = opts.timeout
#
# grep config /usr/bin/qpid-stat
config = Config()
    global config
    config._types = opts.show
    config._sortcol = opts.sort_by
    config._host = opts.broker
    config._connTimeout = opts.timeout
    config._increasing = opts.increasing
    config._limit = opts.limit
        hostAddr = IpAddr(config._host)
        if config._sortcol:
            sorter = Sorter(heads, rows, config._sortcol, config._limit, config._increasing)
        if config._sortcol:
            sorter = Sorter(heads, rows, config._sortcol, config._limit, config._increasing)
        if config._sortcol:
            sorter = Sorter(heads, rows, config._sortcol, config._limit, config._increasing)
        if config._sortcol:
            sorter = Sorter(heads, rows, config._sortcol, config._limit, config._increasing)
        self.displayMain(names, config._types)
        bm.SetBroker(config._host)
#

Anyway I think qpid-python library does not have a support for timeout option, so there cant be simple fix just like "conn_options['reconnect_timeout'] = opts.timeout" or so.

Due to this, qpid-stat can run whatever long time in any use case like:
- network delays
- network packets drops
- broker not responding
regardless of --timeout setting.


Version-Release number of selected component (if applicable):
any, tested e.g. on qpid-tools-1.36.0-19.el7.noarch


How reproducible:
100%


Steps to Reproduce:
Well it depends what we want from --timeout, what use case it should react on. Two of them provided here:

1. (broker stuck for 10s)
kill -SIGSTOP $(pgrep qpidd)
time qpid-stat --memory --timeout=2 --broker=localhost:5672 &
sleep 10
kill -SIGCONT $(pgrep qpidd)

2. (network delays)
tc qdisc add dev lo root handle 1:0 netem delay 2000msec
time qpid-stat --memory --timeout=1 --broker=localhost:5672
tc qdisc del dev lo root handle 1:0 netem delay 2000msec


Actual results:
1. qpid-stat takes bit more than 10s, regardless of --timeout setting
2. qpid-stat takes approx. 8s (depending on kernel tuning), regardless of --timeout setting


Expected results:
In agreed use cases, qpid-stat to terminate within --timeout limit. Or remove the option completely.


Additional info:


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