BIND 10 #2178: Logging for Out-of-zone data

BIND 10 Development do-not-reply at isc.org
Mon Aug 27 18:30:20 UTC 2012


#2178: Logging for Out-of-zone data
-------------------------------------+-------------------------------------
                   Reporter:  jreed  |                 Owner:  jinmei
                       Type:         |                Status:  reviewing
  defect                             |             Milestone:
                   Priority:         |  Sprint-20120904
  medium                             |            Resolution:
                  Component:  data   |             Sensitive:  0
  source                             |           Sub-Project:  DNS
                   Keywords:         |  Estimated Difficulty:  3
            Defect Severity:  N/A    |           Total Hours:  0
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 Replying to [comment:11 jelte]:

 First off, to be clear, I'm okay with merging the branch as its
 current form.

 > > > > Bigger issues:
 > > > > - The current error handling in ConfigurableClientList::configure
 > > > >   seems quite ad hoc and policyless.  [...]
 > > >
 > > > Probably, but I do hope we can get something easier to edit than
 command/config in auth :)
 > >
 > > Hmm, I'm not sure how the auth config implementation is related in
 > > this context.  Out of curiosity, what kind of difficulty are you
 > > seeing?
 >
 > while we have a number of config/command related handlers that are too
 flat and naive, IMO the configparser classes in auth overshot on the other
 side, and it has a bit too much abstraction and code going on for what it
 does, making it less flexible than it could be, and more complicated to
 change than necessary.
 >
 > Perhaps if we filter out the essentials and make a framework out of it
 it would be better (keeping most if not all of the current things it does,
 like the build->commit design), as we would then at least have a standard
 way to do it, but right now it seems a bit overdone and too auth-specific.

 Okay, points taken.  As the person who wrote that stuff first, I admit
 in its current state the complexity of the abstraction may not buy
 much.  But configurable knobs tend to grow rapidly once we reach that
 stage, and I guess we can generally agree that flat-style
 configuration handler (which would normally have hundreds of if-else
 of switch-case blocks) will soon have scalability problems, aside from
 the current style of abstraction is a good way to address the issue.
 I also wanted to make it externally pluggable in future, so someone
 can extend the configuration just by defining a derived class of
 `ConfigParser`, and somehow plug it into the system, preferably
 without requiring rebuild.

 As for auth-specific'ness, I'm not so sure if it's too much so.  The
 concept of build->commit is generic, and the base parser class is in
 fact mostly independent from specifics of auth except for its name:
 `AuthConfigParser`.  I'm not sure if I explicitly documented it, but I
 certainly intended to use it as a general framework some day, not only
 for auth.

 Anyway, whether or not if we use this specific design pattern, I agree
 it's better we have a general framework for config parser/handler.

 > > comment (cited above), "what we should do if remote config update
 > > fails in general", whether or not it's reported in the form of
 > > exception.  Errors can happen (just like we see it in this topic), and
 > > even if we hide the corresponding exception, the problem of how we
 > > ensure the system-level consistency among different modules that
 > > share the config doesn't go away.  That's what I meant by "part of
 > > another big problem".
 >
 > that is one reason i wanted to keep things 'local' as much as possible
 (and why i tend to dislike system-wide settings). Unless whatever checks a
 certain snippet of config verifies it well and completely, this may
 happen, and whoever 'owns' the data is responsible for it, but cannot make
 sure that other 'users' of said data can handle it correctly.

 Maybe I don't understand it well, but I personally don't think it's
 because system-wide settings.  Unless different modules can run
 completely independently, we still encounter a situation where some of
 them share some kind of state/information/config, etc, and ensuring
 consistency will generally be an issue (and it's a difficult one).
 That's the case whether we implement it as a system-wide configuration
 (like the revised "data_sources") or a config in a single module that
 can be referenced by other modules (like "secondary zones" in zonemgr
 referenced by ddns).

 > hmm. monday-morning-wild-idea-time: perhaps config container classes
 should be shared libraries (shared by the modules that use them) as well.

 I'm afraid, in general, module specific errors cannot be completely
 avoided, but providing a unified config handler with unified error
 handling policy will help ensure the consistency in practice.

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


More information about the bind10-tickets mailing list