BIND 10 #1829: CC Session timeouts / ConfigManager not responding (on OpenBSD)

BIND 10 Development do-not-reply at isc.org
Fri Mar 23 08:34:26 UTC 2012


#1829: CC Session timeouts / ConfigManager not responding (on OpenBSD)
-------------------------------------+-------------------------------------
                   Reporter:  jreed  |                 Owner:
                       Type:         |                Status:  new
  defect                             |             Milestone:  New Tasks
                   Priority:         |            Resolution:
  medium                             |             Sensitive:  0
                  Component:         |           Sub-Project:  Core
  Unclassified                       |  Estimated Difficulty:  0
                   Keywords:         |           Total Hours:  0
            Defect Severity:  N/A    |
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 I figured this out.

 On OpenBSD, it appears when a process sends data larger than the
 socket send buffer, it doesn't block (as long as some of the data can
 be sent) and immediately returns after sending as many bytes as
 possible.  But the Python cc.session module assumes all data should be
 sent (except in case of error), so it can result in partial write
 without triggering an exception or error log.

 (As a related note, OpenBSD's default send buffer size seems to be
 quite small: 4096 bytes on my test system.  But simply increasing the
 size wouldn't be a reliable solution anyway).

 What specifically happened in the ticket's scenario is that cfgmgr
 tried to send relatively large data, which resulted in partial write,
 and msgq blocks on read for the rest of the data.

 So, the attached patch solves this problem (msgq internally does a
 similar thing, so it's safe from this problem).  (Yes I wrote the
 patch without a test - blame me:-)

 From a quick look, the C++ version has the same problem (so sending
 statistics from auth to stats may cause a trouble, too), and also for
 the message passing from auth to xfrout.  We should probably check and
 fix these, but at least I confirmed that I could start the bind10
 system on OpenBSD and had it respond to a version.bind query.

 What should we do about this?  This ticket is not even in the current
 sprint, but I personally think it's great if we can add OpenBSD to
 the supported system list in the next release.

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


More information about the bind10-tickets mailing list