BIND 10 #1543: the socket requestor should abort itself on unexpected errors
BIND 10 Development
do-not-reply at isc.org
Wed Jan 4 22:43:47 UTC 2012
#1543: the socket requestor should abort itself on unexpected errors
-------------------------------------+-------------------------------------
Reporter: jinmei | Owner:
Type: defect | Status: new
Priority: blocker | Milestone: Next-
Component: Boss of BIND | Sprint-Proposed
Sensitive: 0 | Keywords:
Sub-Project: DNS | Defect Severity: N/A
Estimated Difficulty: 0 | Feature Depending on Ticket:
Total Hours: 0 | Socket creator
| Add Hours to Ticket: 0
| Internal?: 0
-------------------------------------+-------------------------------------
Currently (as of #1522) the socket creator just throws an exception
in the arguably rare event of encountering unexpected failures in the
communication with the boss process (either via the msgq bus or the
UNIX domain socket). It's up to the application how to react to it,
but the current client code (as of #805) doesn't do anything and keep
using the creator. This is probably not a good choice, because if
such an error even happens it's more likely that something fundamental
is broken in the msgq or the UNIX domain socket (and internal state of
both or either of the requestor and boss), and it's more likely that
the requestor cannot get any useful result any more.
One possible option is to destroy the requestor and create it again,
but doing so has a harsh side effect of clearing all sockets (in the
boss, which will then cause inconsistency between the boss and the
application unless the application also closes the sockets). Even if
we accept the side effect, the recovery process would be complicated.
So the suggestion in the mean time is to have the requestor abort the
program either via assert() failure or throwing a fatal exception
(which would only be catchable at the top level of application and
make the process terminate, possibly with logging the fact). Assuming
it should actually very rare, we won't see this in practice, and by
adding the explicit handling we can be sure that we don't leave the
code in some undefined state that just happens to cause visible
failure by (un)luck.
--
Ticket URL: <https://bind10.isc.org/ticket/1543>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list