BIND 10 #216: Xfrin: Implement the feature items in TODO file.

BIND 10 Development do-not-reply at isc.org
Fri Oct 22 07:29:37 UTC 2010


#216: Xfrin: Implement the feature items in TODO file.
------------------------------+---------------------------------------------
      Reporter:  zhanglikun   |        Owner:  jinmei              
          Type:  enhancement  |       Status:  reviewing           
      Priority:  major        |    Milestone:  y2 6 month milestone
     Component:  xfrin        |   Resolution:                      
      Keywords:               |    Sensitive:  0                   
Estimatedhours:  0.0          |        Hours:  0                   
      Billable:  1            |   Totalhours:  5.0                 
      Internal:  0            |  
------------------------------+---------------------------------------------

Comment(by jinmei):

 Replying to [comment:35 shentingting]:

 > > > ponit3: I changed select function, now it can select the socket
 which is writable or readable.
 > > >
 > > Quick check: why do we need to check writability?
 > > (intentionally leaving the owner being me)
 > because select is asyncronous, so I set the socket non-blocking. The
 connect function is non-blocking, it will return immediately when we call
 it, this will generate EINPROCESS exception, we will ignore this and use
 select to tell us whether it is really readable or writable.

 I've given a more complete review to the latest change, and, I regret to
 say this but I'm not so happy about it.

 But before discussing that point, I'd like to check this point: are you
 sure you addressed (including rejecting some possibly) all points?  From a
 quick check this one is still open:

  - I guess !MockXfrinConnection.connect_to_master() should return True.

 Admittedly this is a minor point, but since I've not seen any response on
 the comment or code change, I cannot be sure if you even did any decision
 about this, and this one also makes me wonder there may be other remaining
 issues.

 Now, about the latest change.  I guess you tried to address this comment:

  - I believe we should use select for connect and send while watching a
 shutdown event. consider, e.g., the case where a shutdown event is sent
 when the primary server is dead and connect blocks. but it's okay for me
 to leave this enhancement to another ticket (or we should rather do so)

 I appreciate the effort, but the code doesn't solve the real issue: "while
 watching a shutdown event".  This code essentially does blocking
 connect/write by doing select() only for the writability followed by the
 corresponding write operation.  Also, scattering select() calls over the
 source code decreases readability.

 As I commented before, I suspect this will be a sufficiently large
 changeset and we should defer it to a new ticket, especially because we've
 been spending quite a long time for this ticket already.  May I
 respectfully suggest we cancel the changes for non-blocking connect/send?

 Some other comments on specific parts of the code:

  - why do we need to cover EALREADY?
 {{{
 +            if why.args[0] in (EINPROGRESS, EALREADY, EWOULDBLOCK):
 +                return
 }}}
   As far as I can see we shouldn't see this error in our scenario.
  - why was the "It's extracted..." comment removed?
 {{{
          This method is a trivial asynchronous I/O routine using select.
 -        It's extracted from _get_request_response so that we can test the
 -        rest of the code without involving actual communication with a
 remote
 -        server.'''
 +        It checks which socket is writable or readable.'''
 }}}
   This part still applies with the latest change, and IMO this type of
 "why we do this" is one of the most important comments.  "What we do" type
 of comment like "It checks which..." may also help, but (IMO) is less
 important than "why" because, especially in such a trivial code, "what" is
 often obvious (for that matter, "writable or readable" is not really
 correct, because, at least according to the method interface, we also
 catch error events).

 p.s. you don't have to feel sorry for anything.  what I've been asking is
 basically "my rule", rather than agreed review protocol of the team.  You
 may also have your own rule about how to handle review comments, and
 that's probably just different from mine.  I've been asking what I've
 asked based on my rule, but you may think it's not reasonable.  If so,
 please feel free to make an objection.  We can then discuss where we can
 make a compromise.

-- 
Ticket URL: <https://bind10.isc.org/ticket/216#comment:36>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list