<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hello everyone,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I am having an issue using the RPCClient of the oslo.messaging package delivered through the stable/icehouse release of devstack (v 1.4.1).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">With this simple script:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">########################################################<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import sys<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">from oslo.config import cfg<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">from oslo import messaging<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">from project.openstack.common import log<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">LOG = log.getLogger(__name__)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">log_levels = (cfg.CONF.default_log_levels +<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            ['stevedore=INFO', 'keystoneclient=INFO'])<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">cfg.set_defaults(log.log_opts, default_log_levels=log_levels)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">argv = sys.argv<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">cfg.CONF(argv[1:], project='test_rpc_server')<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">log.setup('test_rpc_server')<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">transport_url = 'rabbit://guest:guest@localhost:5672/'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">transport = messaging.get_transport(cfg.CONF, transport_url)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">target = messaging.Target(topic='test_rpc', server='server1')<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">client = messaging.RPCClient(transport, target)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ctxt = {'some':'context'}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">try:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    res = client.call(ctxt, 'call_method_1’)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">except Exception as e:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    LOG.debug(e)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">print res<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">########################################################<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">svcdev@svcdev-openstack: python rpc_client.py
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2015-03-18 11:44:01.018 15967 INFO oslo.messaging._drivers.impl_rabbit [-] Connecting to AMQP server on localhost:5672<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2015-03-18 11:44:01.125 15967 INFO oslo.messaging._drivers.impl_rabbit [-] Connected to AMQP server on localhost:5672<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2015-03-18 11:44:01.134 15967 INFO oslo.messaging._drivers.impl_rabbit [-] Connecting to AMQP server on localhost:5672<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2015-03-18 11:44:01.169 15967 INFO oslo.messaging._drivers.impl_rabbit [-] Connected to AMQP server on localhost:5672<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Segmentation fault (core dumped)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The last Python method called is the following one (in librabbitmq package, v 1.0.3):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    def basic_publish(self, body, exchange='', routing_key='',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            mandatory=False, immediate=False, **properties):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        if isinstance(body, tuple):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            body, properties = body<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        elif isinstance(body, self.Message):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            body, properties = body.body, body.properties<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        return self.connection._basic_publish(self.channel_id,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                body, exchange, routing_key, properties,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                mandatory or False, immediate or False)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The script crashes after trying to call _<i>basic</i>_publish.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">For information, I’ve got the trusty’s rabbitmq-server version (v 3.2.4-1).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Plus, replacing the call method by a cast method makes that a message is queued.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Could you please tell me if I’m doing something wrong? Is there a bug in the c-library used by librabbitmq?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thanks beforehand,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Romain Ziba.<o:p></o:p></span></p>
</div>
</body>
</html>