Hi Nausca, Gene,

I have created a PR (https://github.com/dmtcp/dmtcp/pull/289) to
handle non-blocking connect. Can you take a look and see if it looks
good? Also, would it be possible to provide a test that we can include
in the test suite? I ran out of time :-(.

Best,
Kapil

On Thu, Jan 21, 2016 at 11:08 AM, Gene Cooperman <g...@ccs.neu.edu> wrote:
> Hi Kapil,
>     Thanks for the explanation.  If you explain to me what code you'd propose,
> I'd be happy to do the coding, and put in a pull request for this.
>
> Best,
> - Gene
>
> ----- Original Message -----
> From: "Kapil Arya" <kapil.arya...@gmail.com>
> To: "Nausca Hsu" <nau...@cadence.com>
> Cc: "Gene Cooperman" <g...@ccs.neu.edu>, dmtcp-forum@lists.sourceforge.net
> Sent: Thursday, January 21, 2016 8:07:53 AM
> Subject: Re: [Dmtcp-forum] the connect hack in ipc plugin
>
> The socket-id is always registered with the plugin (from a previous
> `socket()` call). I think we can add another intermediate socket state
> -- `CONNECT_IN_PROGRESS` and skip the select call altogether. The
> legacy code around the select call has it's own problems :) and is
> useful only if we are doing handshake at the time of establishing a
> socket connection. We don't do this anymore. Instead, at the time of
> checkpoint, we can do select if needed and wait until the connection
> is established.
>
>
> On Mon, Jan 18, 2016 at 4:58 AM, Nausca Hsu <nau...@cadence.com> wrote:
>> Hi Gene,
>> Yes, this is my concern.
>> It actually happens at our software where a license library use its own
>> socket error handling.
>>
>> Another concern is, the 15 seconds select change the behavior of
>> non-blocking connect call to 15 seconds blocking.
>>
>> Thanks.
>> Nausac.
>>
>> On 2016/1/16 07:27, "Gene Cooperman" <g...@ccs.neu.edu> wrote:
>>
>>>Hi Nausca,
>>>    Sorry for the slow response.  I'll summarize your e-mail for
>>>Kapil, who is our specialist in this area.
>>>
>>>Kapil,
>>>    You had implemented the ipc plugin.  Nausca is proposing an
>>>alternative strategy for registering new socket file descriptors
>>>in our SocketConnList.:
>>>  Register the socket ID directly in the select/poll function call?
>>>   1. Every time a user calls select, DMTCP can check if the selected id
>>>      is already a registered connection within DMTCP.
>>>   2. If it wasn't previously registered, then register it within
>>>      the select/poll function call.
>>>
>>>The motivation follows:
>>>  There is a DMTCP wrapper for connect():
>>>  src/plugin/ipc/socket/socketwrappers.cpp:connect(sockfdi, ...)
>>>In that wrapper, if real_connect() fails, then it tries again
>>>for 15 seconds:by calling select([sockfd]).  If select()
>>>succeeds, then getsockopt() is tried.  If that succeeds,
>>>then sockfd is added to the SocketConnList.
>>>    Otherwise, we assume that the user tried to connect to a
>>>non-existent socket, and we don't register sockfd.
>>>    The problem with this is that the user may have their
>>>own backup strategy using poll() or select().  So, DMTCP may
>>>fail to register sockfd(), and yet later, the user's call to
>>>select() may discover a valid sockfd.
>>>
>>>For this reason, Nausca is proposing to add logic into the DMTCP
>>>wrapper around select() (and poll()) so that if the user discovers
>>>a valid sockfd, DMTCP will also see this, and DMTCP will register
>>>the sockfd in the SocketConnList.
>>>
>>>Nausca,
>>>    Did I summarize the issue correctly?
>>>Best,
>>>- Gene
>>>
>>>
>>>On Wed, Jan 13, 2016 at 07:29:39AM +0000, Nausca Hsu wrote:
>>>> Hi,
>>>> I have been reviewing the ipc plugin package.
>>>> I found that in the connect function,
>>>> Dmtcp will select the socket to ensure it is a valid socket or not(by
>>>>select call),
>>>> And then register it as a valid connect in connectlist class
>>>> This behavior is kind of an error handling,
>>>> User application may have their own error handling.
>>>> If the select fail and dmtcp did not register after 15 seconds,
>>>> And user decide to poll or select(by their default error handling), and
>>>>finally get a valid socket ID,
>>>> Then dmtcp will have a missing connection.
>>>>
>>>> Do you consider register the socket ID in select/poll function call?
>>>> Every time user call a select, dmtcp check if the selected id is a
>>>>registered connection,
>>>> If not->register it.
>>>>
>>>> Thanks.
>>>> Nausca.
>>>>
>>>
>>>>
>>>>-------------------------------------------------------------------------
>>>>-----
>>>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>>>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>>>> Monitor end-to-end web transactions and take corrective actions now
>>>> Troubleshoot faster and improve end-user experience. Signup Now!
>>>>
>>>>https://urldefense.proofpoint.com/v2/url?u=http-3A__pubads.g.doubleclick.
>>>>net_gampad_clk-3Fid-3D267308311-26iu-3D_4140&d=CwIBAg&c=aUq983L2pue2FqKFo
>>>>P6PGHMJQyoJ7kl3s3GZ-_haXqY&r=yTrYtXirB43TLybS8rmjdSEHLuNfd5w_za3LlC3F5ag&
>>>>m=LOETjlHvOHNd4MK3gecBvxbGBIFQlKNd7jKsgbfsWfc&s=HdDrDKD2TIagtY8N8gS_NMODh
>>>>dsAxX3sjsDWlf9xmss&e=
>>>
>>>> _______________________________________________
>>>> Dmtcp-forum mailing list
>>>> Dmtcp-forum@lists.sourceforge.net
>>>>
>>>>https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.sourceforge.ne
>>>>t_lists_listinfo_dmtcp-2Dforum&d=CwIBAg&c=aUq983L2pue2FqKFoP6PGHMJQyoJ7kl
>>>>3s3GZ-_haXqY&r=yTrYtXirB43TLybS8rmjdSEHLuNfd5w_za3LlC3F5ag&m=LOETjlHvOHNd
>>>>4MK3gecBvxbGBIFQlKNd7jKsgbfsWfc&s=fO4RVFg2SlSh8nX-XaB3LeMwti_3WGC31sBqAQ1
>>>>4J3w&e=
>>>
>>

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Dmtcp-forum mailing list
Dmtcp-forum@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dmtcp-forum

Reply via email to