1
0
镜像自地址 https://github.com/tuna/tunasync.git 已同步 2025-12-06 06:26:46 +00:00

bug fix: log over-written in twoStageRsyncProvider

solve more DATA RACE problem
这个提交包含在:
Yuxiang Zhang
2018-05-30 12:28:09 +08:00
父节点 c5bb172f99
当前提交 0fdb07d061
共有 6 个文件被更改,包括 47 次插入16 次删除

查看文件

@@ -109,12 +109,16 @@ func (p *baseProvider) Docker() *dockerHook {
return p.docker
}
func (p *baseProvider) prepareLogFile() error {
func (p *baseProvider) prepareLogFile(append bool) error {
if p.LogFile() == "/dev/null" {
p.cmd.SetLogFile(nil)
return nil
}
logFile, err := os.OpenFile(p.LogFile(), os.O_WRONLY|os.O_CREATE, 0644)
appendMode := 0
if append {
appendMode = os.O_APPEND
}
logFile, err := os.OpenFile(p.LogFile(), os.O_WRONLY|os.O_CREATE|appendMode, 0644)
if err != nil {
logger.Errorf("Error opening logfile %s: %s", p.LogFile(), err.Error())
return err
@@ -138,19 +142,22 @@ func (p *baseProvider) IsRunning() bool {
func (p *baseProvider) Wait() error {
defer func() {
logger.Debugf("set isRunning to false: %s", p.Name())
p.isRunning.Store(false)
}()
logger.Debugf("calling Wait: %s", p.Name())
return p.cmd.Wait()
}
func (p *baseProvider) Terminate() error {
p.Lock()
defer p.Unlock()
logger.Debugf("terminating provider: %s", p.Name())
if !p.IsRunning() {
return nil
}
err := p.cmd.Terminate()
p.isRunning.Store(false)
return err
}