diff options
author | Rob Austein <sra@hactrn.net> | 2009-09-05 05:05:23 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-09-05 05:05:23 +0000 |
commit | 7e2742949d0b80d1b039b03e28dbd25e369685bb (patch) | |
tree | 9d6a3fcbace8f330760cf526d01ee85dfba8e7ab | |
parent | 49f3e601ebb6cd97f7406a48f58a447cf296de9e (diff) |
Don't stomp self_handle
svn path=/rpkid/rpki/left_right.py; revision=2737
-rw-r--r-- | rpkid/rpki/left_right.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py index 3308d7e6..b25de7fc 100644 --- a/rpkid/rpki/left_right.py +++ b/rpkid/rpki/left_right.py @@ -55,6 +55,7 @@ class data_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistent, left_right_name handles = () self_id = None + self_handle = None def self(self): """Fetch self object to which this object links.""" @@ -65,8 +66,11 @@ class data_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistent, left_right_name return bsc_elt.sql_fetch(self.gctx, self.bsc_id) def make_reply_clone_hook(self, r_pdu): - """Set self_handle when cloning.""" - r_pdu.self_handle = self.self_handle + """ + Set self_handle when cloning. + """ + if r_pdu.self_handle is None: + r_pdu.self_handle = self.self_handle @classmethod def serve_fetch_handle(cls, gctx, self_id, handle): @@ -82,7 +86,20 @@ class data_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistent, left_right_name """ where = "%s.%s_handle = %%s AND %s.self_id = self.self_id AND self.self_handle = %%s" % ((self.element_name,) * 3) args = (getattr(self, self.element_name + "_handle"), self.self_handle) - return self.sql_fetch_where1(self.gctx, where, args, "self") + + debug_this = False + + if debug_this: + save_debug = rpki.sql.sql_persistent.sql_debug + rpki.sql.sql_persistent.sql_debug = True + + result = self.sql_fetch_where1(self.gctx, where, args, "self") + + if debug_this: + rpki.sql.sql_persistent.sql_debug = save_debug + rpki.log.debug("data_elt.serve_fetch_one_maybe(): %r" % (result,)) + + return result def serve_fetch_all(self): """ |