BIND 10 #1207: Enable the data source factory

BIND 10 Development do-not-reply at isc.org
Wed May 9 22:21:33 UTC 2012


#1207: Enable the data source factory
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:  UnAssigned
  stephen                            |                Status:  reviewing
                       Type:  task   |             Milestone:
                   Priority:         |  Sprint-20120515
  medium                             |            Resolution:
                  Component:  data   |             Sensitive:  0
  source                             |           Sub-Project:  DNS
                   Keywords:         |  Estimated Difficulty:  5
            Defect Severity:  N/A    |           Total Hours:  0
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 I started reviewing it, but it (unit tests) didn't work really well:

 - some `AuthSrvTest` tests such as queryWithInMemoryClient(No)DNSSEC
   resulted in segmentation fault somehow related to `RBNodeRRset` in
   destructing `Message` in the `SrvTestBase` destructor.  I've not
   fully figured out the cause, but I suspect remaining `RBNodeRRset`
   pointers stored in the message, which internally refer to in-memory
   data source data structures, which are defined in the dynamically
   loaded part, somehow confused the run time system.  The following
   workaround suppressed this problem, although it's a bit ad hoc:
 {{{#!cpp
     ~AuthSrvTest() {
         parse_message->clear(Message::PARSE);
     }
 }}}
   (btw, we should actually clean-up the passed message in
   `AuthSrv::processMessage` because the stored `RRsets` could be
   invalidated if some big change such as reloading happens to the
   underlying data source after processing the query.  but that's
   another topic)

 - The `AuthCommandTest::loadZone` test also crashed.  On looking into
   it a bit deeper I found this dynamic cast failed and resulted in
   NULL:
 {{{#!cpp
         old_zone_finder_ =
 boost::dynamic_pointer_cast<InMemoryZoneFinder>(
             result.zone_finder);
 }}}
   Again, I suspect the dynamically loaded module somehow confused the
   RTTI system, but I didn't chase it further.

 - may or may not be related, I also noticed memory_datasrc.cc is still
   compiled into the b10-auth and its test.  Can't (or even shouldn't)
   we now eliminate the need for it?

 Considering our current focus is NSEC for in-memory, I'll stop here
 and focus on NSEC related tickets.  This may be MacOS specific, so you
 may want to try to reproduce it on our MacOS buildbot box.  Also,
 since dynamic loading will have other system-dependent issues, so we
 may want to run this branch on other buildbots.

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


More information about the bind10-tickets mailing list