← Back to team overview

mysql-proxy-discuss team mailing list archive

Re: Fwd: funnel - a multiplexer plugin for mysql-proxy

 

On Thu, Mar 5, 2009 at 4:09 PM, Jan Kneschke <jan@xxxxxxxxxxx> wrote:
> nick loeve wrote:
>> missed the list
>>
>>
>> ---------- Forwarded message ----------
>> From: nick loeve <trickie@xxxxxxxxx>
>> Date: Thu, Mar 5, 2009 at 3:30 PM
>> Subject: Re: [Mysql-proxy-discuss] funnel - a multiplexer plugin for
>> mysql-proxy
>> To: Jan Kneschke <jan@xxxxxxxxxxx>
>>
>>
>> Hi,
>>
>> On Thu, Mar 5, 2009 at 3:18 PM, Jan Kneschke <jan@xxxxxxxxxxx> wrote:
>>> nick loeve wrote:
>>>>> Yep, the _op structure is prepared for a async delete too. It isn't
>>>>> implemented yet.
>>>> I implemented it and it seemed to have fixed my issue. Finally! :)
>>>>
>>>> I pushed the updates to my branch.
>>>>
>>>> Expect some event-thread-based benchmarks as soon as we have some
>>>> plugin-internal statistics implemented.
>>> Depending on how it is implemented, we may have to take care of a race
>>> on the del-event:
>>>
>>>   chassis_event_del(...); /* async, only queues the request to delete
>>> the event */
>>>   close(fd);
>>>
>>> The fd may be reused before its event is deleted. This is only really
>>> affecting network_socket_free()/network_socket_close(), but I wanted to
>>> raise it at least.
>>
>> Yeah i thought about that. From what I can see, as long as we push the
>> delete using _local I should avoid that circumstance, at least in my
>> code path.
>>
>> I should also add a patch to the event deletion in network_socket_free
>> that pushes the operation through the _local call.
>
> passing down the event-struct as now good enough. All we need is a
> delayed close and the event-struct carries the fd too:
>
>
>   ..._OP_DEL_AND_CLOSE:
>   close(EVENT_FD(ev));
>   event_del(ev);
>   break;
>
> That way you can free the socket right away and synchronize the
> event-del with the close of the fd.

Ok, makes sense. It will mean providing a pointer to a chassis
whenever we want to call network_socket_free though. Ill take a look
into what changes are needed for that.

Cheers

-- 
Nick Loeve



References