Skip to content

Commit 29d5d8d

Browse files
authored
Use abort instead of exit in case calling SAI API failure (sonic-net#2170)
- What I did Use abort instead of exit in case calling SAI API failure Currently, exit is used in functions handleSai{Create,Remove,Set,Get}Status on SAI failure while abort is used in some other functions on SAI failure. IMO using abort yields benefits: Consistent behavior in orchagent on SAI failure in mocked test, in case SAI failure occurs the test process will just exit silently, which makes it very difficult for developers to find out what happened. by using abort, a coredump will be generated, which helps developers nail down the issue. So we would like to use abort in all cases of receiving SAI failure. - Why I did it - How I verified it Manually test. Signed-off-by: Stephen Sun <[email protected]>
1 parent 12f980c commit 29d5d8d

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

orchagent/orch.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ task_process_status Orch::handleSaiCreateStatus(sai_api_t api, sai_status_t stat
882882
default:
883883
SWSS_LOG_ERROR("Encountered failure in create operation, exiting orchagent, SAI API: %s, status: %s",
884884
sai_serialize_api(api).c_str(), sai_serialize_status(status).c_str());
885-
exit(EXIT_FAILURE);
885+
abort();
886886
}
887887
break;
888888
case SAI_API_HOSTIF:
@@ -900,7 +900,7 @@ task_process_status Orch::handleSaiCreateStatus(sai_api_t api, sai_status_t stat
900900
default:
901901
SWSS_LOG_ERROR("Encountered failure in create operation, exiting orchagent, SAI API: %s, status: %s",
902902
sai_serialize_api(api).c_str(), sai_serialize_status(status).c_str());
903-
exit(EXIT_FAILURE);
903+
abort();
904904
}
905905
default:
906906
switch (status)
@@ -911,7 +911,7 @@ task_process_status Orch::handleSaiCreateStatus(sai_api_t api, sai_status_t stat
911911
default:
912912
SWSS_LOG_ERROR("Encountered failure in create operation, exiting orchagent, SAI API: %s, status: %s",
913913
sai_serialize_api(api).c_str(), sai_serialize_status(status).c_str());
914-
exit(EXIT_FAILURE);
914+
abort();
915915
}
916916
}
917917
return task_need_retry;
@@ -952,12 +952,12 @@ task_process_status Orch::handleSaiSetStatus(sai_api_t api, sai_status_t status,
952952
default:
953953
SWSS_LOG_ERROR("Encountered failure in set operation, exiting orchagent, SAI API: %s, status: %s",
954954
sai_serialize_api(api).c_str(), sai_serialize_status(status).c_str());
955-
exit(EXIT_FAILURE);
955+
abort();
956956
}
957957
default:
958958
SWSS_LOG_ERROR("Encountered failure in set operation, exiting orchagent, SAI API: %s, status: %s",
959959
sai_serialize_api(api).c_str(), sai_serialize_status(status).c_str());
960-
exit(EXIT_FAILURE);
960+
abort();
961961
}
962962

963963
return task_need_retry;
@@ -985,7 +985,7 @@ task_process_status Orch::handleSaiRemoveStatus(sai_api_t api, sai_status_t stat
985985
default:
986986
SWSS_LOG_ERROR("Encountered failure in remove operation, exiting orchagent, SAI API: %s, status: %s",
987987
sai_serialize_api(api).c_str(), sai_serialize_status(status).c_str());
988-
exit(EXIT_FAILURE);
988+
abort();
989989
}
990990
return task_need_retry;
991991
}

orchagent/orchdaemon.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ void OrchDaemon::flush()
634634
if (status != SAI_STATUS_SUCCESS)
635635
{
636636
SWSS_LOG_ERROR("Failed to flush redis pipeline %d", status);
637-
exit(EXIT_FAILURE);
637+
abort();
638638
}
639639

640640
// check if logroate is requested

0 commit comments

Comments
 (0)