Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
31189eea
"examples/vscode:/vscode.git/clone" did not exist on "ee3de9e464ddeae2301c407ed4429b9c839a053e"
Unverified
Commit
31189eea
authored
Jan 14, 2026
by
Qi Wang
Committed by
GitHub
Jan 14, 2026
Browse files
fix: fix worker's push_handler non-blocking error upon stop word (#5157)
parent
332da400
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
2 deletions
+17
-2
lib/runtime/src/pipeline/network/ingress/push_handler.rs
lib/runtime/src/pipeline/network/ingress/push_handler.rs
+17
-2
No files found.
lib/runtime/src/pipeline/network/ingress/push_handler.rs
View file @
31189eea
...
@@ -282,9 +282,24 @@ where
...
@@ -282,9 +282,24 @@ where
m
.response_bytes
.inc_by
(
resp_bytes
.len
()
as
u64
);
m
.response_bytes
.inc_by
(
resp_bytes
.len
()
as
u64
);
}
}
if
(
publisher
.send
(
resp_bytes
.into
())
.await
)
.is_err
()
{
if
(
publisher
.send
(
resp_bytes
.into
())
.await
)
.is_err
()
{
send_complete_final
=
false
;
if
context
.is_stopped
()
{
// Say there are 2 threads accessing `context`, the sequence can be either:
// 1. context.stop_generating (other) -> publisher.send failure (this)
// -> context.is_stopped (this)
// 2. publisher.send failure (this) -> context.stop_generating (other)
// -> context.is_stopped (this)
// Case 1 can happen when client closed the connection after receiving the
// complete response from frontend. Hence, send failure can be expected in this
// case.
tracing
::
warn!
(
"Failed to publish response for stream {}"
,
context
.id
());
}
else
{
// Otherwise, this is an error.
tracing
::
error!
(
"Failed to publish response for stream {}"
,
context
.id
());
tracing
::
error!
(
"Failed to publish response for stream {}"
,
context
.id
());
context
.stop_generating
();
context
.stop_generating
();
send_complete_final
=
false
;
}
// Account errors in all cases, including cancellation. Therefore this metric can be
// inflated.
if
let
Some
(
m
)
=
self
.metrics
()
{
if
let
Some
(
m
)
=
self
.metrics
()
{
m
.error_counter
m
.error_counter
.with_label_values
(
&
[
work_handler
::
error_types
::
PUBLISH_RESPONSE
])
.with_label_values
(
&
[
work_handler
::
error_types
::
PUBLISH_RESPONSE
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment