progress: don't modify ResetTime inputs

No other parts of the progress rendering modify the inputs, so we should
avoid this as well.

This actually fixes an edge case in pushWithMoby which writes the same
VertexStatus multiple times, modifying the timestamps and similar.
However, if the operation takes long enough the small time difference
can accumulate, and move the Start time far into the past.

Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
Justin Chadwell 2023-07-25 09:35:43 +01:00
parent b8739d7441
commit 5a1f252bd9
1 changed files with 18 additions and 0 deletions

View File

@ -20,7 +20,9 @@ func (w *pw) Write(st *client.SolveStatus) {
} }
} }
if w.diff != nil { if w.diff != nil {
vertexes := make([]*client.Vertex, 0, len(st.Vertexes))
for _, v := range st.Vertexes { for _, v := range st.Vertexes {
v := *v
if v.Started != nil { if v.Started != nil {
d := v.Started.Add(-*w.diff) d := v.Started.Add(-*w.diff)
v.Started = &d v.Started = &d
@ -29,8 +31,12 @@ func (w *pw) Write(st *client.SolveStatus) {
d := v.Completed.Add(-*w.diff) d := v.Completed.Add(-*w.diff)
v.Completed = &d v.Completed = &d
} }
vertexes = append(vertexes, &v)
} }
statuses := make([]*client.VertexStatus, 0, len(st.Statuses))
for _, v := range st.Statuses { for _, v := range st.Statuses {
v := *v
if v.Started != nil { if v.Started != nil {
d := v.Started.Add(-*w.diff) d := v.Started.Add(-*w.diff)
v.Started = &d v.Started = &d
@ -40,9 +46,21 @@ func (w *pw) Write(st *client.SolveStatus) {
v.Completed = &d v.Completed = &d
} }
v.Timestamp = v.Timestamp.Add(-*w.diff) v.Timestamp = v.Timestamp.Add(-*w.diff)
statuses = append(statuses, &v)
} }
logs := make([]*client.VertexLog, 0, len(st.Logs))
for _, v := range st.Logs { for _, v := range st.Logs {
v := *v
v.Timestamp = v.Timestamp.Add(-*w.diff) v.Timestamp = v.Timestamp.Add(-*w.diff)
logs = append(logs, &v)
}
st = &client.SolveStatus{
Vertexes: vertexes,
Statuses: statuses,
Logs: logs,
Warnings: st.Warnings,
} }
} }
w.Writer.Write(st) w.Writer.Write(st)