Skip to content

Conversation

@jonochang
Copy link
Member

No description provided.

rskew and others added 10 commits June 11, 2025 14:22
Example graph:
   __________
  /   \      \
 A     B ---- C --->
  \___/______/
has syntax in a pipeline definition:
  "graph": [
    "(A B (A.a_out_1: b_in_1 A.a_out_2: b_in_2) C (A.a_out_1: c_in_1 B.b_out_1: c_in_2 A.a_out_2: c_in_3))"
  ],
Note that output names must be fully-qualified, e.g. "B.b_out_1" instead
of "b_out_1". This is due to the graph traversal not yet handling edges
defined between B and C in the example graph, only between A and B, and
between A and C.
PipelineImpl posts to the listening response_queue and/or
response_topic when the stream is destroyed.

A stream creator might pass a queue_response or topic
response when calling create_stream(),
so it can be notified as frames are processed.
If a stream exits due to an error in process_frame then these
listeners will be notified, but if the stream exits without
error then the listeners will not previously be notified.
MAINTENANCE: remove unused dependency
destroy_stream() in an error condition

Currently when an error is raised, _process_stream_event() will call
destroy_stream() directly so that the stream is immediately terminated and
cleaned up.
However, _process_stream_event() releases stream.lock before calling
destroy_stream(), allowing another thread to update stream.state before
destroy_stream() can stop and clean-up the stream, meaning that
stream.state cannot be used to signal that an error condition has occurred.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants