Skip to content

Commit 42d03ed

Browse files
committed
Merge remote-tracking branch 'upstream/master' into tunnel_dscp_remap
2 parents 35aa720 + d8fadc6 commit 42d03ed

File tree

10 files changed

+881
-97
lines changed

10 files changed

+881
-97
lines changed

orchagent/bufferorch.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,11 @@ task_process_status BufferOrch::processBufferPool(KeyOpFieldsValuesTuple &tuple)
389389
{
390390
sai_object = (*(m_buffer_type_maps[map_type_name]))[object_name].m_saiObjectId;
391391
SWSS_LOG_DEBUG("found existing object:%s of type:%s", object_name.c_str(), map_type_name.c_str());
392+
if ((*(m_buffer_type_maps[map_type_name]))[object_name].m_pendingRemove && op == SET_COMMAND)
393+
{
394+
SWSS_LOG_NOTICE("Entry %s %s is pending remove, need retry", map_type_name.c_str(), object_name.c_str());
395+
return task_process_status::task_need_retry;
396+
}
392397
}
393398
SWSS_LOG_DEBUG("processing command:%s", op.c_str());
394399
if (object_name == "ingress_zero_pool")
@@ -565,6 +570,7 @@ task_process_status BufferOrch::processBufferPool(KeyOpFieldsValuesTuple &tuple)
565570
}
566571

567572
(*(m_buffer_type_maps[map_type_name]))[object_name].m_saiObjectId = sai_object;
573+
(*(m_buffer_type_maps[map_type_name]))[object_name].m_pendingRemove = false;
568574
// Here we take the PFC watchdog approach to update the COUNTERS_DB metadata (e.g., PFC_WD_DETECTION_TIME per queue)
569575
// at initialization (creation and registration phase)
570576
// Specifically, we push the buffer pool name to oid mapping upon the creation of the oid
@@ -579,6 +585,7 @@ task_process_status BufferOrch::processBufferPool(KeyOpFieldsValuesTuple &tuple)
579585
{
580586
auto hint = objectReferenceInfo(m_buffer_type_maps, map_type_name, object_name);
581587
SWSS_LOG_NOTICE("Can't remove object %s due to being referenced (%s)", object_name.c_str(), hint.c_str());
588+
(*(m_buffer_type_maps[map_type_name]))[object_name].m_pendingRemove = true;
582589

583590
return task_process_status::task_need_retry;
584591
}
@@ -647,6 +654,11 @@ task_process_status BufferOrch::processBufferProfile(KeyOpFieldsValuesTuple &tup
647654
{
648655
sai_object = (*(m_buffer_type_maps[map_type_name]))[object_name].m_saiObjectId;
649656
SWSS_LOG_DEBUG("found existing object:%s of type:%s", object_name.c_str(), map_type_name.c_str());
657+
if ((*(m_buffer_type_maps[map_type_name]))[object_name].m_pendingRemove && op == SET_COMMAND)
658+
{
659+
SWSS_LOG_NOTICE("Entry %s %s is pending remove, need retry", map_type_name.c_str(), object_name.c_str());
660+
return task_process_status::task_need_retry;
661+
}
650662
}
651663
SWSS_LOG_DEBUG("processing command:%s", op.c_str());
652664
if (op == SET_COMMAND)
@@ -787,6 +799,7 @@ task_process_status BufferOrch::processBufferProfile(KeyOpFieldsValuesTuple &tup
787799
}
788800
}
789801
(*(m_buffer_type_maps[map_type_name]))[object_name].m_saiObjectId = sai_object;
802+
(*(m_buffer_type_maps[map_type_name]))[object_name].m_pendingRemove = false;
790803
SWSS_LOG_NOTICE("Created buffer profile %s with type %s", object_name.c_str(), map_type_name.c_str());
791804
}
792805

@@ -799,6 +812,7 @@ task_process_status BufferOrch::processBufferProfile(KeyOpFieldsValuesTuple &tup
799812
{
800813
auto hint = objectReferenceInfo(m_buffer_type_maps, map_type_name, object_name);
801814
SWSS_LOG_NOTICE("Can't remove object %s due to being referenced (%s)", object_name.c_str(), hint.c_str());
815+
(*(m_buffer_type_maps[map_type_name]))[object_name].m_pendingRemove = true;
802816

803817
return task_process_status::task_need_retry;
804818
}

0 commit comments

Comments
 (0)