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