Bug 789494

Summary: get_stats() thows exception if memcached server is on UNIX socket instead of INET
Product: Red Hat Enterprise Linux 6 Reporter: John Dennis <jdennis>
Component: python-memcachedAssignee: Radek Novacek <rnovacek>
Status: CLOSED ERRATA QA Contact: qe-baseos-daemons
Severity: unspecified Docs Contact:
Priority: high    
Version: 6.2CC: azelinka, borgan, ddumas, dpal, ovasik
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
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
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-20 14:17:35 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
detect server family in get_stats() none

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