Skip to content

Commit 6e416c4

Browse files
alvasMancodebot
authored andcommitted
adt: fix report on failure for priority_task_workers
1 parent b83eff4 commit 6e416c4

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

include/srsran/support/executors/priority_task_worker.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ class priority_task_worker_executor : public task_executor
147147
/// \brief Create task executor with \c Priority for \c priority_multiqueue_task_worker.
148148
template <task_priority Priority, concurrent_queue_policy... QueuePolicies>
149149
priority_task_worker_executor<Priority, QueuePolicies...>
150-
make_priority_task_worker_executor(priority_task_worker<QueuePolicies...>& worker)
150+
make_priority_task_worker_executor(priority_task_worker<QueuePolicies...>& worker, bool report_on_failure)
151151
{
152-
return priority_task_worker_executor<Priority, QueuePolicies...>(worker);
152+
return priority_task_worker_executor<Priority, QueuePolicies...>(worker, report_on_failure);
153153
}
154154

155155
/// \brief Create general task executor pointer with \c Priority for \c priority_multiqueue_task_worker.
@@ -164,14 +164,15 @@ namespace detail {
164164
template <typename Func, concurrent_queue_policy... QueuePolicies, size_t... Is>
165165
void visit_executor(priority_task_worker<QueuePolicies...>& w,
166166
task_priority priority,
167+
bool report_on_failure,
167168
const Func& func,
168169
std::index_sequence<Is...> /*unused*/)
169170
{
170171
const size_t idx = detail::enqueue_priority_to_queue_index(priority, sizeof...(QueuePolicies));
171-
(void)std::initializer_list<int>{[idx, &w, &func]() {
172+
(void)std::initializer_list<int>{[idx, &w, &func, report_on_failure]() {
172173
if (idx == Is) {
173-
func(
174-
make_priority_task_worker_executor<detail::queue_index_to_enqueue_priority(Is, sizeof...(QueuePolicies))>(w));
174+
func(make_priority_task_worker_executor<detail::queue_index_to_enqueue_priority(Is, sizeof...(QueuePolicies))>(
175+
w, report_on_failure));
175176
}
176177
return 0;
177178
}()...};
@@ -181,9 +182,13 @@ void visit_executor(priority_task_worker<QueuePolicies...>& w,
181182

182183
/// \brief Create general task executor pointer with \c Priority for \c priority_multiqueue_task_worker.
183184
template <typename Func, concurrent_queue_policy... QueuePolicies>
184-
void visit_executor(priority_task_worker<QueuePolicies...>& worker, task_priority priority, const Func& func)
185+
void visit_executor(priority_task_worker<QueuePolicies...>& worker,
186+
task_priority priority,
187+
bool report_on_failure,
188+
const Func& func)
185189
{
186-
detail::visit_executor(worker, priority, func, std::make_index_sequence<sizeof...(QueuePolicies)>{});
190+
detail::visit_executor(
191+
worker, priority, report_on_failure, func, std::make_index_sequence<sizeof...(QueuePolicies)>{});
187192
}
188193

189194
/// \brief Create general task executor pointer with \c Priority for \c priority_multiqueue_task_worker.

lib/support/executors/task_execution_manager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ struct priority_multiqueue_worker_context
307307
create_executor(const execution_config_helper::priority_multiqueue_worker::executor& desc) override
308308
{
309309
std::unique_ptr<task_executor> exec;
310-
visit_executor(this->worker, desc.priority, [this, &exec, &desc](auto&& prio_exec) {
310+
visit_executor(this->worker, desc.priority, desc.report_on_failure, [this, &exec, &desc](auto&& prio_exec) {
311311
exec = this->task_tracer == nullptr
312312
? decorate_executor(desc, std::move(prio_exec))
313313
: decorate_executor(desc, make_trace_executor(desc.name, std::move(prio_exec), *this->task_tracer));

0 commit comments

Comments
 (0)