BIND 10 #1924: Msgq undeliverable notifications

BIND 10 Development do-not-reply at isc.org
Fri Feb 8 18:20:16 UTC 2013


#1924: Msgq undeliverable notifications
-------------------------------------+-------------------------------------
            Reporter:  vorner        |                        Owner:
                Type:  task          |  jinmei
            Priority:  medium        |                       Status:
           Component:  msgq          |  reviewing
            Keywords:                |                    Milestone:
           Sensitive:  0             |  Sprint-20130219
         Sub-Project:  Core          |                   Resolution:
Estimated Difficulty:  6             |                 CVSS Scoring:
         Total Hours:  0             |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:  msgq-
                                     |  ng
                                     |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------

Comment (by jinmei):

 Replying to [comment:19 vorner]:

 First off, it would be helpful if you refer to other original comments
 with a response of whether or not it's addressed (and if necessary,
 why), or at least with a summary sentence that would read "I believe
 I've addressed all other points".  If none of these were commented, I
 cannot be sure if the revise is ongoing (but the ticket was returned
 to me to peek into it) or is supposed to be complete.  Also, I cannot
 be sure if some points are not addressed it was intentional or just
 overlooked.

 > Replying to [comment:17 jinmei]:
 > > In that case I believe it should be "the senders that hunger for
 > > response".
 >
 > I meant hunger as noun, not a verb. But I changed the whole thing
 anyway, so it should be clearer.
 >
 > > - isc::util doesn't seem to be an appropriate place to define them.
 > >   "CC" is specific to the cc module, while util is generally expected
 > >   to be (kitchensink) placeholder for things that don't belong to
 > >   anything else.  It's as awkward as seeing e.g. b10-auth log message
 > >   IDs are defined in isc::util.
 >
 > I'm not sure. I thought the file could be used for other constants too,
 in future. Like some protocols between auth and XFROUT and such. Or do you
 think it is better to have separate constants file for each of these? Then
 we need to put the generator scripts somewhere common, though, and I'm not
 sure where.

 This type of thing is ultimately a matter of opinion, so it can vary,
 but my specific suggestion is:

 - place (both) the generator scripts under src/lib/util/python/.  the
   current directories are basically intended to place things related
   to run-time library, not for compile time tools, and don't seem to
   be the best choice to me.
 - place common_defs.cc under src/lib/cc, probably renaming it e.g.
   (cc/)proto_defs.cc).  Right now all definitions are related to
   the core CC protocol, so this place seems to be the best to have it.
   The actual definition will be part of libb10-cc, and that should be
   necessary and sufficient because all apps that need these defs
   should need libb10-cc, and apps don't need to use cc (pure libdns++
   apps, e.gg) doesn't need to have it.  corresponding .h will be here,
   too.
 - generate the python file from .cc under src/lib/python/isc/cc for
   the same reason.

 In future, when application specific constants will have to be
 defined, I guess we'll place the original definition with the "primary
 owner" of it.  For example, the "loadzone" command name for auth will
 be defined in src/bin/auth.  Where to generate Python counterparts
 will have to be figured out; I don't know what's the best right now,
 but I don't think it a bad idea to introduce a dedicate python package
 under src/lib/python/isc for such purposes, or, just like we do for
 log messages, define something like src/lib/python/isc/app_constants/
 where we'll have auth_command_defs.py, etc.

 > > - I'm not so sure if handling partial send failure (there are multiple
 > >   possible recipients and a subset of them fail) as an "OK" case; if
 > >   xfrin sends something to multiple instances of auth and not all of
 > >   them were correctly delivered (but the failing auth is still somehow
 > >   running), the system will be in an inconsistent state.  That said,
 > >   this level of discussion is probably beyond the scope of this ticket
 > >   and should go to the larger msgq revisit work.  So I'm making it
 > >   just as a comment, not a request for changing the code.
 >
 > This is not about consistency. This is about the fact that when one
 process wants to call a remote function to get some information, it needs
 to wait for an answer. This is to provide an answer that no real data will
 ever come. Generally, the expected number of recipients would be one. Even
 if there are more and one of them is not receiving, the others will
 provide answer, so this is correct. The parameter is not called
 „must_deliver_to_all“, but „want_answer“.
 >
 > Also, what you describe is probably a notification that does not need
 any kind of answer at all anyway.
 >
 > And, finally, if there was EPIPE or something from the recipient, it
 means it is probably already dead. If it isn't, it will be soon, because
 our modules can't live without the CC connections and if they lose it,
 they usually just crash (and get restarted).
 >
 > So, from these points, I believe the current behaviour is the more
 correct one.

 I was probably not clear enough, but my point was higher than whether
 this specific case is okay or not - in fact, I didn't necessarily
 suggest changing that.  My concern is that we don't have a clear big
 picture of the entire communication model/protocol with msgq; whether
 it's one-to-one or one-to-many, what kind of failure mode is provided,
 which level of reliability is provided (or not provided), etc.  Since
 these are not sufficiently clarified, we always have questions about
 unclear cases like the xfrin-auth above.  We just don't know whether
 this scenario fits this extension or not because we don't have the big
 picture.  Just adding some random extension without clarifying it
 seems to be too ad hoc to me, just seemingly addressing some specific
 cases, leaving many open questions and even creating new issues.

 That said...I expect (or hope) we'll clarify these points and revisit
 the msgq system at a more fundamental way, and, with that assumption,
 I wouldn't argue on this point in the context of this ticket.

 One other comment on the branch.

 '''msgq_test.py'''
 - hmm, I still can't parse this sentence:
 {{{
         be mostly independant (eg. if the recipient is missing, it
         shouldn't matter by which means it was discovered the recipient
         is missing to how we hendle the value in reply header). If
 }}}
   especially after the "to how we..." part.  besides, "hendle" should
   be "handle"?

-- 
Ticket URL: <http://bind10.isc.org/ticket/1924#comment:21>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list