This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Neels Hofmeyr gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/2887 log.Origin: ensure to avoid parent loops Change-Id: I10a2f956beeda38ba1378eace9453eb911aae1a7 --- M src/osmo_gsm_tester/log.py 1 file changed, 16 insertions(+), 7 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/87/2887/1 diff --git a/src/osmo_gsm_tester/log.py b/src/osmo_gsm_tester/log.py index 3ac8ccd..e8dd3d8 100644 --- a/src/osmo_gsm_tester/log.py +++ b/src/osmo_gsm_tester/log.py @@ -309,7 +309,7 @@ _name = None _origin_id = None _log_category = None - _parent_origin = None + _parent = None @staticmethod def find_on_stack(except_obj=None, f=None): @@ -331,7 +331,7 @@ if log_ctx_obj is None: log_ctx_obj = new_log_ctx_obj else: - log_ctx_obj.highest_ancestor()._parent_origin = new_log_ctx_obj + log_ctx_obj.highest_ancestor()._set_parent(new_log_ctx_obj) obj = l.get('self') if obj and isinstance(obj, Origin) and (except_obj is not obj): @@ -340,7 +340,7 @@ f = f.f_back if (origin is not None) and (log_ctx_obj is not None): - log_ctx_obj.highest_ancestor()._parent_origin = origin + log_ctx_obj.highest_ancestor()._set_parent(origin) if log_ctx_obj is not None: return log_ctx_obj # may return None @@ -358,7 +358,16 @@ self._set_log_category(category) self._set_name(*name_items, **detail_items) if find_parent: - self._parent_origin = Origin.find_on_stack(except_obj=self) + self._set_parent(Origin.find_on_stack(except_obj=self)) + + def _set_parent(self, parent): + # make sure to avoid loops + p = parent + while p: + if p is self: + raise RuntimeError('Origin parent loop') + p = p._parent + self._parent = parent def _set_name(self, *name_items, **detail_items): if name_items: @@ -399,7 +408,7 @@ origin = self while origin: origins.insert(0, origin) - origin = origin._parent_origin + origin = origin._parent n -= 1 if n < 0: break @@ -409,8 +418,8 @@ return '↪'.join([o.name() for o in self.ancestry()]) def highest_ancestor(self): - if self._parent_origin: - return self._parent_origin.highest_ancestor() + if self._parent: + return self._parent.highest_ancestor() return self def log(self, *messages, **named_items): -- To view, visit https://gerrit.osmocom.org/2887 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I10a2f956beeda38ba1378eace9453eb911aae1a7 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>