BIND 10 #2903: need more asio error handling in asiodns

BIND 10 Development do-not-reply at isc.org
Tue Apr 30 14:38:27 UTC 2013


#2903: need more asio error handling in asiodns
-------------------------------------+-------------------------------------
            Reporter:  jinmei        |                        Owner:
                Type:  defect        |  jinmei
            Priority:  medium        |                       Status:
           Component:  b10-auth      |  reviewing
            Keywords:                |                    Milestone:
           Sensitive:  0             |  Sprint-20130514
         Sub-Project:  DNS           |                   Resolution:
Estimated Difficulty:  4             |                 CVSS Scoring:
         Total Hours:  0             |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:
                                     |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
Changes (by vorner):

 * owner:  vorner => jinmei


Comment:

 Hello

 Replying to [comment:14 jinmei]:
 > > I'm not strictly against unrelated cleanups, but this amount seems
 like 50% of the branch. If already written, I don't think it is worth
 throwing it out, or trying to rebuild the history for two branches, but
 the history would be cleaner if the works were separated. So, include it
 now, but let's be more careful about the amount of unrelated work in
 future. Anyway, I think there might be something wrong with out work
 process, if we can't push these cleanups in some fast way without
 cluttering other branches.
 >
 > I'm sorry for the excessive amount of changes.  I admit I tend to be a
 > bad piggy-backer.  For this particular case, in retrospect I should at
 > least have limited the changes to sync_udp_server internal.  As a
 > general workflow, it's probably wise to not do any side work in
 > general, or at least discuss it at the beginning of the review
 > process, before showing the changes.

 Well, my point about the workflow was about the fact that it seems wrong
 there's a motivation for the piggy-backing. It shows that it is too hard
 to push in the small changes that are noticed into master, so they are
 piggy-backed with the bigger tickets as a result. I don't know if there's
 a solution, but it would be nice if it was easy enough to fix these things
 so we don't feel like piggy-backing. Currently, if you want to fix it
 properly, it is either 2-line change or creating a ticket and waiting for
 a long time to get picked up.

 > > Also, a test in distcheck is failing for me. I don't know if it might
 be related, though. Should I try to find the cause of it?
 > > {{{
 > > ...F.......
 > > ======================================================================
 > > FAIL: test_bad_data (__main__.TestUserMgr)
 > > ----------------------------------------------------------------------
 > > Traceback (most recent call last):
 > >   File
 "/var/tmp/bind10/bind10-2/bind10-20130221/_build/../src/bin/usermgr/tests/b10
 -cmdctl-usermgr_test.py", line 477, in test_bad_data
 > >     'add', 'user1', 'pass1'
 > >   File
 "/var/tmp/bind10/bind10-2/bind10-20130221/_build/../src/bin/usermgr/tests/b10
 -cmdctl-usermgr_test.py", line 141, in run_check
 > >     self.assertEqual(expected_stdout, stdout.decode())
 > > AssertionError: 'Using accounts file: test_users.csv\nError parsing
 csv file: newline inside str [truncated]... != 'Using accounts file:
 test_users.csv\n'
 > >   Using accounts file: test_users.csv
 > > - Error parsing csv file: newline inside string
 > > }}}
 >
 > I have no idea about this one, and I couldn't reproduce it myself.
 > It also looks quite unrelated to the changes in this branch...does
 > that happen if you run the distcheck on a clean tree (after distclean,
 > or even on a re-cloned repository)?

 I always run the builds and tests on fresh clone of the branch, on a
 separate container (something like lightweight virtual machine) without
 any other network services.

 But I tried on master and it happens too. Maybe I upgraded something and
 the test started to fail. After removing this test, it went through
 correctly. I'm going to create a separate ticket for it.

 '''About the changes''':

 {{{
 % ASIODNS_SYNC_UDP_CLOSE_SOCKET_FAIL_ON_STOP failed to close a
 This is the same to ASIODNS_UDP_CLOSE_SOCKET_FAIL_ON_STOP but happens
 on the "synchronous UDP server", mainly used for the authoritative DNS
 server daemon.
 }}}

 Looking at that, it seems quite a long ID. Even longer than the human-
 readable message. But that might be related to the fact the human-readable
 message looks incomplete.

 Many messages speak about closing when the server is stopping itself. I
 believe we close the sockets under other circumstances too, for example
 when reconfiguring the listening addresses.

 When did we see a failure on close? Under what circumstances can that
 happen? And do we leak a file descriptor in that case, or are we trying to
 close something that is not open?

 From cppcheck (I don't know if they were present before, but it seems
 related):
 {{{
 src/lib/asiodns/sync_udp_server.cc:41: check_fail: Member variable
 'SyncUDPServer::resume_called_' is not initialized in the constructor.
 (warning,uninitMemberVar)
 src/lib/asiodns/sync_udp_server.cc:41: check_fail: Member variable
 'SyncUDPServer::done_' is not initialized in the constructor.
 (warning,uninitMemberVar)
 }}}

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


More information about the bind10-tickets mailing list