latest 버전 옵션을 프로세스 재시작시에도 적용

This commit is contained in:
2024-09-27 15:26:51 +09:00
parent e9370513c2
commit 7fe5090efa
2 changed files with 29 additions and 22 deletions

View File

@ -101,6 +101,7 @@ type procmeta struct {
state int32 state int32
stdin io.WriteCloser stdin io.WriteCloser
logfile string logfile string
keepLatest bool
} }
func (pm *procmeta) isState(s protos.ProcessState) bool { func (pm *procmeta) isState(s protos.ProcessState) bool {
@ -362,6 +363,10 @@ func NewClient(standalone bool) (HoustonClient, error) {
proc.cmd.Process.Release() proc.cmd.Process.Release()
if proc.isState(protos.ProcessState_Restart) { if proc.isState(protos.ProcessState_Restart) {
if proc.keepLatest {
proc.version = "latest"
}
if err := hc.startChildProcess(&shared.StartProcessRequest{ if err := hc.startChildProcess(&shared.StartProcessRequest{
Version: proc.version, Version: proc.version,
Name: proc.name, Name: proc.name,

View File

@ -150,6 +150,7 @@ func prepareProcessLaunch(storageRoot string, req *shared.StartProcessRequest) (
return nil, errors.New("args is empty") return nil, errors.New("args is empty")
} }
foundVersion := req.Version
if req.Version == "latest" { if req.Version == "latest" {
entries, err := os.ReadDir(path.Join(storageRoot, req.Name)) entries, err := os.ReadDir(path.Join(storageRoot, req.Name))
if err != nil { if err != nil {
@ -175,11 +176,11 @@ func prepareProcessLaunch(storageRoot string, req *shared.StartProcessRequest) (
} }
if len(latestVersion) > 0 { if len(latestVersion) > 0 {
req.Version = latestVersion foundVersion = latestVersion
} }
} }
verpath := path.Join(storageRoot, req.Name, req.Version) verpath := path.Join(storageRoot, req.Name, foundVersion)
fi, err := os.Stat(verpath) fi, err := os.Stat(verpath)
if err != nil { if err != nil {
return nil, err return nil, err
@ -214,12 +215,13 @@ func prepareProcessLaunch(storageRoot string, req *shared.StartProcessRequest) (
cmd: cmd, cmd: cmd,
name: req.Name, name: req.Name,
args: req.Args, args: req.Args,
version: req.Version, version: foundVersion,
recover: req.AutoRestart, recover: req.AutoRestart,
verpath: verpath, verpath: verpath,
state: int32(protos.ProcessState_Stopped), state: int32(protos.ProcessState_Stopped),
stdin: stdin, stdin: stdin,
logfile: req.OutputLogFile, logfile: req.OutputLogFile,
keepLatest: req.Version == "latest",
}, nil }, nil
} }
return nil, errors.New("not found") return nil, errors.New("not found")