BIND 10 #1603: replace name compression with more efficient one

BIND 10 Development do-not-reply at isc.org
Fri Mar 9 07:37:25 UTC 2012


#1603: replace name compression with more efficient one
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:  jinmei
  jinmei                             |                Status:  reviewing
                       Type:  task   |             Milestone:
                   Priority:         |  Sprint-20120320
  medium                             |            Resolution:
                  Component:         |             Sensitive:  0
  libdns++                           |           Sub-Project:  DNS
                   Keywords:         |  Estimated Difficulty:  7
            Defect Severity:  N/A    |           Total Hours:  0
Feature Depending on Ticket:  auth   |
  performance                        |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 Replying to [comment:8 vorner]:

 First, about this one:

 > And, I forgot to note, the systest fails for me in ixfr/in-2 (produces a
 really large diff of missing entries, looks like xfrin is not starting up
 for some reason). Does it fail for you too?

 Good catch, there was a serious bug in the code (btw what happened was
 xfrout died due to the bug of the renderer): if we tried to render
 many names the placeholder vector for names would need to be extended,
 and when that happens some resource of the originally stored names may
 be released (as a result of copy).  Then LabelSequences that refer to
 that resource could trigger a crash.

 On thinking about it, I ended up with somewhat reverting to the
 original design: still using the render's internal buffer for
 placeholder but using a hash table for performance improvement.
 Unfortunately that required a heavy rewrite.  The internal
 implementation of messagerenderer.cc was almost fully revised, so
 could you review it again as a whole rather than checking the diff?
 (Sorry for the duplicate efforts...)

 One note: in the revised version we heavily use
 OutputBuffer::operator[] again.  So, (if this version is finally
 adopted) we'll need #1568 in the end.  The trac1603bench branch
 contains both trac1603 and trac1568 changes, and its benchmark test
 shows the final improvement we'd get from both.

 This redesign affects other points you raised in the previous comment.
 I'm going to answer them (in a separate ticket comment) on top of this.

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


More information about the bind10-tickets mailing list