[Xorp-cvs] XORP cvs commit: xorp/libxipc
Atanu Ghosh
atanu at icir.org
Sun Nov 2 10:35:58 PST 2008
CVSROOT: /usr/local/www/data/cvs
Module name: xorp
Changes by: atanu at chum.icir.org 2008-11-02 18:35:58 UTC
XORP CVS repository
Modified files:
libxipc xrl.cc xrl.hh xrl_router.cc xrl_router.hh
Log message:
A problem was introduced in the performance enhancements:
http://bugzilla.xorp.org/bugzilla/show_bug.cgi?id=808
A pointer was held in an Xrl to a FinderDBEntry the entry contains the
resolved Xrl. The FinderDBEntry is held in a map so it is not valid to
hold a pointer to it, as any changes to the map could cause the
invalidate the pointer. Another problem was that if the target of the
Xrl died then the cached FinderDBEntry would not be uncached.
A solution to the problem may be to hold the FinderDBEntry as a
pointer in the map so that updates would not move the pointer. Another
solution is to hold a pointer to the resolved Xrl in the unresolved
Xrl and not have the intermediate FinderDBEntry. The FinderDBEntry
holds a list of resolved Xrls, it is not clear why it is a list and
not a single entry as they all resolve the same target, unless it is a
list to hold multiple request responses, in which case the list
shouldn't be exposed outside the FinderClient.
The code has been reverted to not caching the FinderDBEntry but the
XrlPFSender is now being cached in the Xrl and resolved is now a bool
not a FinderDBEntry. There will be a slight drop in performance doing
the FinderDBEntry each time but this is not the correct pointer to
hold. The FinderClient needs to be reworked to return an Xrl pointer
that can be safely stored.
Bugzilla URL: http://bugzilla.xorp.org/bugzilla/show_bug.cgi?id=800
Revision Changes Path
1.31 +5 -3; commitid: 1210c490df30d41a7; xorp/libxipc/xrl.cc
1.33 +14 -10; commitid: 1210c490df30d41a7; xorp/libxipc/xrl.hh
1.70 +33 -16; commitid: 1210c490df30d41a7; xorp/libxipc/xrl_router.cc
1.49 +2 -2; commitid: 1210c490df30d41a7; xorp/libxipc/xrl_router.hh
More information about the Xorp-cvs
mailing list