Skip to content

Commit 7bbded4

Browse files
ymakedaqiSecloud
authored andcommitted
fix(dbm-services): ignore kill mysql client process not exist error TencentBlueKing#9045
1 parent 4d173c8 commit 7bbded4

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

dbm-services/mysql/db-tools/dbactuator/pkg/components/mysql/uninstall_mysql.go

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import (
3232
"dbm-services/mysql/db-tools/dbactuator/pkg/util"
3333
"dbm-services/mysql/db-tools/dbactuator/pkg/util/osutil"
3434

35-
"github.com/mitchellh/go-ps"
3635
"github.com/shirou/gopsutil/v3/process"
3736
)
3837

@@ -271,34 +270,37 @@ func (u *UnInstallMySQLComp) ClearMachine() (err error) {
271270
// @receiver u
272271
// @return err
273272
func (u *UnInstallMySQLComp) KillDirtyProcess() (err error) {
274-
dirtyProcessNames := []string{
275-
"mysql",
276-
}
277-
processes, err := ps.Processes()
273+
mysqlClient := "mysql"
274+
processes, err := process.Processes()
278275
if err != nil {
279276
return fmt.Errorf("list processes failed, err:%s", err.Error())
280277
}
281-
msgs := make([]string, 0)
282278
for _, proc := range processes {
283-
processName := proc.Executable()
284-
if !cmutil.HasElem(processName, dirtyProcessNames) {
279+
processName, err := proc.Name()
280+
if err != nil {
281+
logger.Warn("get process name failed, err:%s")
285282
continue
286283
}
287-
288-
p, err := process.NewProcess(int32(proc.Pid()))
289-
if err != nil {
290-
msgs = append(msgs, fmt.Sprintf("process:%s, err:%s", processName, err.Error()))
284+
if processName != mysqlClient {
291285
continue
292286
}
293-
if err := p.Terminate(); err != nil {
294-
msg := fmt.Sprintf("terminate process %s failed, err:%s", processName, err.Error())
295-
msgs = append(msgs, msg)
287+
cmdline, errx := proc.Cmdline()
288+
if errx != nil {
289+
logger.Warn("get process cmdline failed, err:%s", errx.Error())
296290
continue
297291
}
292+
for _, port := range u.Params.Ports {
293+
if strings.Contains(cmdline, strconv.Itoa(port)) {
294+
if err := proc.Kill(); err != nil {
295+
if err == process.ErrorProcessNotRunning {
296+
continue
297+
}
298+
logger.Error("terminate process %s failed, err:%s", processName, err.Error())
299+
continue
300+
}
301+
}
302+
}
298303
logger.Info("success terminate dirty process %s", processName)
299304
}
300-
if len(msgs) != 0 {
301-
return fmt.Errorf("failed kill %d processes, they are: %s", len(msgs), strings.Join(msgs, "\n"))
302-
}
303305
return nil
304306
}

0 commit comments

Comments
 (0)