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