<div dir="ltr"><div>Sorry I'm late to the party....</div><div><br></div><div>At the risk of stating the obvious I wouldn't put much faith in the fact that the Kafka and Amqp1 drivers use jsonutils.   The use of jsonutils in these drivers is simply a cut-n-paste from the way old qpidd driver.    Why jsonutils was used there... I dunno.</div><div><br></div><div>IMHO the RabbitMQ driver is the authoritative source for correct driver implementation - the Fake driver (and the others) should use the same serialization as the rabbitmq driver if possible.</div><div><br></div><div>-K<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 1, 2019 at 4:30 AM Balázs Gibizer <balazs.gibizer@est.tech> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On Mon, Sep 30, 2019 at 5:35 PM, Balázs Gibizer <br>
<balazs.gibizer@est.tech> wrote:<br>
> <br>
> <br>
> On Mon, Sep 30, 2019 at 4:45 PM, Ben Nemec <<a href="mailto:openstack@nemebean.com" target="_blank">openstack@nemebean.com</a>><br>
> wrote:<br>
>>  Hi,<br>
>> <br>
>>  I've just proposed <a href="https://review.opendev.org/#/c/685724/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/685724/</a> which<br>
>>  reverts a change that recently went in to make the fake driver in<br>
>>  oslo.messaging use jsonutils for message serialization instead of<br>
>>  json.dumps.<br>
>> <br>
>>  As explained in the commit message on the revert, this is <br>
>> problematic<br>
>>  because the rabbit driver uses kombu's default serialization method,<br>
>>  which is json.dumps. By changing the fake driver to use jsonutils<br>
>>  we've made it more lenient than the most used real driver which <br>
>> opens<br>
>>  us up to merging broken changes in consumers of oslo.messaging.<br>
>> <br>
>>  We did have some discussion of whether we should try to override the<br>
>>  kombu default and tell it to use jsonutils too, as a number of other<br>
>>  drivers do. The concern with this was that the jsonutils handler for<br>
>>  things like datetime objects is not tz-aware, which means if you <br>
>> send<br>
>>  a datetime object over RPC and don't explicitly handle it you could<br>
>>  lose important information.<br>
>> <br>
>>  I'm open to being persuaded otherwise, but at the moment I'm leaning<br>
>>  toward less magic happening at the RPC layer and requiring projects<br>
>>  to explicitly handle types that aren't serializable by the standard<br>
>>  library json module. If you have a different preference, please <br>
>> share<br>
>>  it here.<br>
> <br>
> Hi,<br>
> <br>
> I might me totally wrong here and please help me understand how the<br>
> RabbitDriver works. What I did when I created the original patch that <br>
> I<br>
> looked at each drivers how they handle sending messages. The<br>
> oslo_messaging._drivers.base.BaseDriver defines the interface with a<br>
> send() message. The oslo_messaging._drivers.amqpdriver.AMQPDriverBase<br>
> implements the BaseDriver interface's send() method to call _send().<br>
> Then _send() calls rpc_commom.serialize_msg which then calls<br>
> jsonutils.dumps.<br>
> <br>
> The oslo_messaging._drivers.impl_rabbit.RabbitDriver driver inherits<br>
> from AMQPDriverBase and does not override send() or _send() so I think<br>
> the AMQPDriverBase ._send() is called that therefore jsonutils is used<br>
> during sending a message with RabbitDriver.<br>
<br>
I did some tracing in devstack to prove my point. See the result in <br>
<a href="https://review.opendev.org/#/c/685724/1//COMMIT_MSG@11" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/685724/1//COMMIT_MSG@11</a><br>
<br>
Cheers,<br>
gibi<br>
<br>
> <br>
> Cheers,<br>
> gibi<br>
> <br>
> <br>
> [1]<br>
> <a href="https://github.com/openstack/oslo.messaging/blob/7734ac1376a1a9285c8245a91cf43599358bfa9d/oslo_messaging/_drivers/amqpdriver.py#L599" rel="noreferrer" target="_blank">https://github.com/openstack/oslo.messaging/blob/7734ac1376a1a9285c8245a91cf43599358bfa9d/oslo_messaging/_drivers/amqpdriver.py#L599</a><br>
> <br>
>> <br>
>>  Thanks.<br>
>> <br>
>>  -Ben<br>
>> <br>
> <br>
> <br>
<br>
<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature">Ken Giusti  (<a href="mailto:kgiusti@gmail.com" target="_blank">kgiusti@gmail.com</a>)</div>