Add sending SIGKILL for termiate request timeouts 31/298831/2
authorChanggyu Choi <changyu.choi@samsung.com>
Thu, 14 Sep 2023 04:55:48 +0000 (13:55 +0900)
committerChanggyu Choi <changyu.choi@samsung.com>
Thu, 14 Sep 2023 05:22:23 +0000 (14:22 +0900)
In order to handle a terminate request timeout,
Send to sigkill signal to target pid.

Change-Id: Icd2b34d305b4da0c8a7fa19c20a92c04912bb83b
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
src/lib/request/request_manager.cc

index ea426e4..bf00bcf 100644 (file)
 #include "lib/amd_util.h"
 #include "lib/app_info/app_info_manager.hh"
 #include "lib/app_status/app_status_manager.hh"
+#include "lib/launch/app_request.hh"
 #include "lib/request/common.hh"
 
 namespace amd {
+namespace {
+
+bool IsTerminationRequest(int cmd) {
+  if (cmd == APP_TERM_BY_PID ||
+      cmd == APP_TERM_REQ_BY_PID ||
+      cmd == APP_TERM_BY_PID_ASYNC ||
+      cmd == APP_TERM_BGAPP_BY_PID ||
+      cmd == APP_TERM_INSTANCE_ASYNC ||
+      cmd == APP_TERM_BG_INSTANCE)
+    return true;
+
+  return false;
+}
+
+}  // namespace
 
 RequestManager& RequestManager::GetInst() {
   static RequestManager inst;
@@ -258,6 +274,9 @@ void RequestManager::OnRequestTimeout(Request* request) {
     _E("App(%d) is not responding. req_id(%d)", req->GetTargetPID(),
         req->GetID());
   }
+
+  if (IsTerminationRequest(req->GetCmd()))
+    AppRequest::SendSigkill(req->GetTargetPID(), req->GetUID());
 }
 
 void RequestManager::PushRequest(RequestPtr req, amd_priority_e priority) {