From: Jonathan Rajotte Date: Fri, 7 Aug 2020 20:22:36 +0000 (-0400) Subject: trigger: use condition and action ref counting to ease internal objects management X-Git-Tag: v2.13.0-rc1~510 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=7ca172c15891d4ff3f711dcc05f991fd2c094bc7;hp=7ca172c15891d4ff3f711dcc05f991fd2c094bc7 trigger: use condition and action ref counting to ease internal objects management Currently a trigger object has multiple relationship types with the action and condition associated to it. On the API client side, the trigger does not own the action and condition associated to it. The user is responsible for managing the lifetime of the associated action and condition object. On the sessiond side, triggers created from `lttng_trigger_create_from_payload` currently require that before calling lttng_trigger_destroy, the action and condition be fetched and deleted using their respective destructor. This operation cannot be done inside `lttng_trigger_destroy` since the exposed API is clear that the trigger does no own the objects. We can facilitate the lifetime/ownership management of the action and condition objects using their respective reference counting mechanism. On a trigger creation, the trigger get references on both object. On destroy, the trigger put the references on the objects. From an API client perspective, nothing changes. Even better, it prevents premature freeing of these objects, since the trigger have references to these objects. On the sessiond side, we can now move the actual ownership of the action and condition object to the trigger object. This is done in `lttng_trigger_create_from_payload` forcing a put of the local references to the object, effectively moving the ownership to the trigger object. Note that the `lttng_trigger_get_{action, condition}` do not `get` a reference to the object before returning it. This is done to comply with the API that was introduced back in 2.11 which does expect a client to call lttng_{action, condition}_destroy on the returned object. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau Change-Id: I31d196d00c886fcf42c1b16c55e693949373568b ---