Skip to content

Commit 2e63481

Browse files
olpipiWovchena
andauthored
Fix race cond. Move get_awaiting_requests method to base class (openvinotoolkit#2174)
Fix race cond. Move get_awaiting_requests method to base class. Fix Coverity issues CVS-165981 Co-authored-by: Vladimir Zlobin <vladimir.zlobin@intel.com>
1 parent f35313b commit 2e63481

6 files changed

Lines changed: 13 additions & 16 deletions

src/cpp/src/continuous_batching/pipeline_impl.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,8 @@ ContinuousBatchingPipeline::ContinuousBatchingImpl::generate(const std::vector<o
398398
OPENVINO_ASSERT(1 == input_ids[request_id].get_shape().at(0), "Use multiple tensors to pass a batch.");
399399
generations.push_back(add_request(request_id, input_ids[request_id], sampling_params[request_id]));
400400
}
401-
auto all_requests = m_awaiting_requests; // we need to store all requests to get results from them once generation has finished
401+
402+
auto all_requests = get_awaiting_requests(); // we need to store all requests to get results from them once generation has finished
402403

403404
GenerationHandle& generation = generations.at(0);
404405

@@ -720,4 +721,9 @@ void ContinuousBatchingPipeline::ContinuousBatchingImpl::_fill_prompt_log_probs(
720721
}
721722
}
722723
}
724+
725+
std::vector<SequenceGroup::Ptr> ContinuousBatchingPipeline::ContinuousBatchingImpl::get_awaiting_requests() {
726+
std::lock_guard<std::mutex> lock{m_awaiting_requests_mutex};
727+
return m_awaiting_requests;
723728
}
729+
} // namespace ov::genai

src/cpp/src/continuous_batching/pipeline_impl.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,7 @@ class ContinuousBatchingPipeline::ContinuousBatchingImpl : public ContinuousBatc
139139
* Updates LoRA adapters for current generation call
140140
*/
141141
void set_adapters(const std::optional<AdapterConfig>& adapters);
142+
143+
std::vector<SequenceGroup::Ptr> get_awaiting_requests();
142144
};
143145
} // namespace ov::genai

src/cpp/src/prompt_lookup/continuous_batching_for_prompt_lookup.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,7 @@ bool ContinuousBatchingPipeline::ContinuousBatchingForPromptLookupImpl::is_reque
8787
return m_requests.empty();
8888
}
8989

90-
std::vector<SequenceGroup::Ptr> ContinuousBatchingPipeline::ContinuousBatchingForPromptLookupImpl::get_awaiting_requests() {
91-
return m_awaiting_requests;
92-
}
93-
9490
size_t ContinuousBatchingPipeline::ContinuousBatchingForPromptLookupImpl::get_processed_tokens_per_iteration() {
9591
return m_batch_size;
9692
}
97-
98-
}
93+
}

src/cpp/src/prompt_lookup/continuous_batching_for_prompt_lookup.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,11 @@ class ContinuousBatchingPipeline::ContinuousBatchingForPromptLookupImpl : public
3535
std::map<uint64_t, SequenceLen> get_generated_request_len();
3636

3737
bool is_requests_empty();
38-
std::vector<SequenceGroup::Ptr> get_awaiting_requests();
3938

4039
size_t get_processed_tokens_per_iteration();
4140

4241
using ContinuousBatchingPipeline::ContinuousBatchingImpl::drop_requests;
4342
protected:
4443
TokenIds generate_candidates(const TokenIds& input_ids, size_t num_pred_tokens, size_t max_ngram_size);
4544
};
46-
}
45+
}

src/cpp/src/speculative_decoding/continuous_batching_for_speculative_decoding_impl.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -286,10 +286,6 @@ bool ContinuousBatchingPipeline::ContinuousBatchingForSpeculativeDecodingImpl::i
286286
return m_requests.empty();
287287
}
288288

289-
std::vector<SequenceGroup::Ptr> ContinuousBatchingPipeline::ContinuousBatchingForSpeculativeDecodingImpl::get_awaiting_requests() {
290-
return m_awaiting_requests;
291-
}
292-
293289
size_t ContinuousBatchingPipeline::ContinuousBatchingForSpeculativeDecodingImpl::get_processed_tokens_per_iteration() {
294290
return m_batch_size;
295291
}
@@ -339,4 +335,4 @@ void ContinuousBatchingPipeline::ContinuousBatchingForSpeculativeDecodingImpl::m
339335
}
340336
}
341337
}
342-
}
338+
}

src/cpp/src/speculative_decoding/continuous_batching_for_speculative_decoding_impl.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class ContinuousBatchingPipeline::ContinuousBatchingForSpeculativeDecodingImpl :
2828
GeneratedRequests get_generated_requests();
2929
UpdateRequestResult update_request(uint64_t request_id, const GeneratedSequences& candidates, bool is_update_logit_processor);
3030
bool is_requests_empty();
31-
std::vector<SequenceGroup::Ptr> get_awaiting_requests();
3231

3332
size_t get_processed_tokens_per_iteration();
3433

@@ -38,4 +37,4 @@ class ContinuousBatchingPipeline::ContinuousBatchingForSpeculativeDecodingImpl :
3837
void finish_request(SequenceGroup::Ptr request);
3938
void _pull_awaiting_requests() override {};
4039
};
41-
}
40+
}

0 commit comments

Comments
 (0)