Bug 789494 - get_stats() thows exception if memcached server is on UNIX socket instead of INET
Summary: get_stats() thows exception if memcached server is on UNIX socket instead of ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: python-memcached
Version: 6.2
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: rc
: ---
Assignee: Radek Novacek
QA Contact: qe-baseos-daemons
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-02-10 21:43 UTC by John Dennis
Modified: 2018-05-15 14:26 UTC (History)
5 users (show)

Fixed In Version: python-memcached-1.43-6.el6
Doc Type: Bug Fix
Doc Text:
Cause: python-memcached can't get statistics of memcached server on UNIX socket Consequence: method get_stats() throws an exception Fix: Alter the get_stats() method Result: get_stats() method works as expected
Clone Of:
Environment:
Last Closed: 2012-06-20 14:17:35 UTC
Target Upstream Version:


Attachments (Terms of Use)
detect server family in get_stats() (1004 bytes, patch)
2012-02-10 21:44 UTC, John Dennis
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2012:0889 0 normal SHIPPED_LIVE python-memcached bug fix update 2012-06-19 20:47:23 UTC

Description John Dennis 2012-02-10 21:43:25 UTC
memcached can be configured to listen either on normal INET sockets or a UNIX domain socket. 

If the server is configured on a UNIX domain socket and you call get_stats() to retrieve the server statistics then memcache.py will throw an exception:

_Host instance has no attribute 'ip'

This occurs because get_stats() assumes the net family is INET and as such has an ip address, it doesn't because it's UNIX domain socket.

Attached is a trivial patch to correct the problem, it's taken from a later upstream version.

To reproduce the problem you have to run a memcached instance listing on a UNIX socket, the standard initscript does not support this, instead you should do this:

/usr/bin/memcached -d -s $SOCKET_PATH

then you'll need a python program:

import memcache
servers = ['unix:%s' % socket_path]
mc = memcache.Client(servers, debug=0)
print mc.get_stats()

Comment 1 John Dennis 2012-02-10 21:44:55 UTC
Created attachment 560993 [details]
detect server family in get_stats()

Comment 8 Radek Novacek 2012-04-26 08:18:29 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause: python-memcached can't get statistics of memcached server on UNIX socket
Consequence: method get_stats() throws an exception
Fix: Alter the get_stats() method
Result: get_stats() method works as expected

Comment 9 errata-xmlrpc 2012-06-20 14:17:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2012-0889.html


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