in network/trace.go [184:221]
func (c *clientJobTrace) incrementalUpdate() common.UpdateState {
c.lock.RLock()
state := c.state
trace := c.log
c.lock.RUnlock()
if c.sentState == state &&
c.sentTrace == trace.Len() &&
time.Since(c.sentTime) < traceForceSendInterval {
return common.UpdateSucceeded
}
if c.sentState != state {
c.client.UpdateJob(c.config, c.jobCredentials, c.id, state, nil)
c.sentState = state
}
tracePatch, err := newTracePatch(trace, c.sentTrace)
if err != nil {
c.config.Log().Errorln("Error while creating a tracePatch", err.Error())
}
update := c.client.PatchTrace(c.config, c.jobCredentials, tracePatch)
if update == common.UpdateNotFound {
return update
}
if update == common.UpdateRangeMismatch {
update = c.resendPatch(c.jobCredentials.ID, c.config, c.jobCredentials, tracePatch)
}
if update == common.UpdateSucceeded {
c.sentTrace = tracePatch.Limit()
c.sentTime = time.Now()
}
return update
}