recording-daemon: lifecycle notification events#2142
Open
goolanceman wants to merge 4 commits into
Open
Conversation
goolanceman
marked this pull request as ready for review
July 18, 2026 17:53
goolanceman
force-pushed
the
recording-notify-lifecycle
branch
from
July 18, 2026 18:10
a4ccba2 to
fd097da
Compare
rfuchs
reviewed
Jul 19, 2026
rfuchs
left a comment
Member
There was a problem hiding this comment.
This is all AI generated, isn't it
Author
Good eye 🙂 |
goolanceman
force-pushed
the
recording-notify-lifecycle
branch
from
July 20, 2026 06:14
a6f6824 to
bf74310
Compare
added 4 commits
July 21, 2026 12:52
Extend rtpengine-recording HTTP/command notifications beyond the historical finished-only path so operators can track call and stream recording lifecycle. Events (notify-events CSV, default: finished): opened, started, finished, discarded, failed, call-started, call-finished, call-discarded New options: notify-events, notify-json, notify-no-metadata, notify-command-format, notify-queue-limit. Docs/conf only document the new notify options; upstream storage (S3/GCS/output-storage) docs are left unchanged. Backward compatible: default mask is finished only. Includes unit tests and Docker e2e smoke harness.
notify_setup must not require notify-uri/notify-command: the same thread pool backs S3, GCS and DB notif_action_t work. Also leave object_name to action cleanup to avoid double-free on those paths.
goolanceman
force-pushed
the
recording-notify-lifecycle
branch
from
July 21, 2026 07:22
70d8ba9 to
a1ae952
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extends
rtpengine-recordingnotifications from the historical finished-only path to a configurable call/stream lifecycle event set, while remaining backward compatible.Events (
notify-eventsCSV)openedrecording_file_openedstartedrecording_startedfinished(default)recording_finisheddiscardedrecording_discardedfailedrecording_failedcall-startedcall_recording_startedcall-finishedcall_recording_finishedcall-discardedcall_recording_discardedallDefault remains
finishedonly so existing deployments are unchanged.New options
notify-events— CSV list (defaultfinished)notify-json— POST JSON body via json-glibnotify-no-metadata— omit call metadata from payloadsnotify-command-format—legacy|extended|json-envnotify-queue-limit— bound non-terminal queue depth (default 1000;0= unlimited). Terminal events are always accepted.Design
notif_action_t/notif_req_t) andlib/http.chelpersnotify_events.c(shared with unit tests)output.c; call hooks inmetafile.c/packet.cnotif_reqbefore queueing (workers never touch live objects)Tests
t/test-notify-events.c— PASSt/notify_e2e/temp Python HTTP receiver + metafile lifecycle — E2E_NOTIFY_OKcall_recording_finishedwith JSON body + lifecycle headersDocs
docs/rtpengine-recording.mdetc/rtpengine-recording.confExample
Compatibility
notify-commandargv (path,db_id) preserved whennotify-command-format=legacyI used an AI assistant to help with some of the repetitive work (e.g. scaffolding, draft text), but the architecture, behaviour, and all final code changes were reviewed, adapted, and validated by me. The goal is to speed up the mechanical parts while still having a human developer take responsibility for correctness, style, and alignment with rtpengine 's conventions. Feedback is very welcome and I'll iterate on the implementation as needed.