Skip to content

Commit 538cf7b

Browse files
pgawlowiczyagoda
authored andcommitted
e2,kpm: fix crash when trying to send an indication without connected UEs
1 parent b9528ca commit 538cf7b

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

lib/e2/e2sm/e2sm_kpm/e2sm_kpm_du_meas_provider_impl.cpp

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_cqi(const asn1::e2sm::label_info_list_l
284284
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
285285
std::vector<asn1::e2sm::meas_record_item_c>& items)
286286
{
287-
bool meas_collected = false;
288-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
287+
bool meas_collected = false;
288+
if (last_ue_metrics.size() == 0) {
289+
return meas_collected;
290+
}
291+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
289292

290293
meas_record_item_c meas_record_item;
291294
meas_record_item.set_integer() = ue_metrics.cqi_stats.get_nof_observations() > 0
@@ -302,8 +305,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_rsrp(const asn1::e2sm::label_info_list_
302305
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
303306
std::vector<asn1::e2sm::meas_record_item_c>& items)
304307
{
305-
bool meas_collected = false;
306-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
308+
bool meas_collected = false;
309+
if (last_ue_metrics.size() == 0) {
310+
return meas_collected;
311+
}
312+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
307313

308314
meas_record_item_c meas_record_item;
309315
meas_record_item.set_integer() = (int)ue_metrics.pusch_snr_db;
@@ -318,8 +324,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_rsrq(const asn1::e2sm::label_info_list_
318324
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
319325
std::vector<asn1::e2sm::meas_record_item_c>& items)
320326
{
321-
bool meas_collected = false;
322-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
327+
bool meas_collected = false;
328+
if (last_ue_metrics.size() == 0) {
329+
return meas_collected;
330+
}
331+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
323332

324333
meas_record_item_c meas_record_item;
325334
meas_record_item.set_integer() = (int)ue_metrics.pusch_snr_db;
@@ -333,8 +342,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_prb_avail_dl(const asn1::e2sm::label_in
333342
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
334343
std::vector<asn1::e2sm::meas_record_item_c>& items)
335344
{
336-
bool meas_collected = false;
337-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
345+
bool meas_collected = false;
346+
if (last_ue_metrics.size() == 0) {
347+
return meas_collected;
348+
}
349+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
338350
if ((label_info_list.size() > 1 or
339351
(label_info_list.size() == 1 and not label_info_list[0].meas_label.no_label_present))) {
340352
logger.debug("Metric: DRB.RlcPacketDropRateDl supports only NO_LABEL label.");
@@ -353,8 +365,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_prb_avail_ul(const asn1::e2sm::label_in
353365
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
354366
std::vector<asn1::e2sm::meas_record_item_c>& items)
355367
{
356-
bool meas_collected = false;
357-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
368+
bool meas_collected = false;
369+
if (last_ue_metrics.size() == 0) {
370+
return meas_collected;
371+
}
372+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
358373
if ((label_info_list.size() > 1 or
359374
(label_info_list.size() == 1 and not label_info_list[0].meas_label.no_label_present))) {
360375
logger.debug("Metric: DRB.RlcPacketDropRateDl supports only NO_LABEL label.");
@@ -373,8 +388,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_prb_use_perc_dl(const asn1::e2sm::label
373388
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
374389
std::vector<asn1::e2sm::meas_record_item_c>& items)
375390
{
376-
bool meas_collected = false;
377-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
391+
bool meas_collected = false;
392+
if (last_ue_metrics.size() == 0) {
393+
return meas_collected;
394+
}
395+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
378396
if ((label_info_list.size() > 1 or
379397
(label_info_list.size() == 1 and not label_info_list[0].meas_label.no_label_present))) {
380398
logger.debug("Metric: DRB.RlcPacketDropRateDl supports only NO_LABEL label.");
@@ -393,8 +411,11 @@ bool e2sm_kpm_du_meas_provider_impl::get_prb_use_perc_ul(const asn1::e2sm::label
393411
const std::optional<asn1::e2sm::cgi_c> cell_global_id,
394412
std::vector<asn1::e2sm::meas_record_item_c>& items)
395413
{
396-
bool meas_collected = false;
397-
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
414+
bool meas_collected = false;
415+
if (last_ue_metrics.size() == 0) {
416+
return meas_collected;
417+
}
418+
scheduler_ue_metrics ue_metrics = last_ue_metrics[0];
398419
if ((label_info_list.size() > 1 or
399420
(label_info_list.size() == 1 and not label_info_list[0].meas_label.no_label_present))) {
400421
logger.debug("Metric: DRB.RlcPacketDropRateDl supports only NO_LABEL label.");

0 commit comments

Comments
 (0)