preserve worker last_seen on sparse updates

(cherry picked from commit c4f85ebbae065c007a1d879989eb0162dd026b49)
This commit is contained in:
kroo-oai 2026-05-06 09:20:44 -07:00 committed by Fedor Korotkov
parent 3083b541df
commit 37ef939532
2 changed files with 38 additions and 1 deletions

View File

@ -104,7 +104,9 @@ func (controller *Controller) updateWorker(ctx *gin.Context) responder.Responder
return responder.Error(err)
}
if !userWorker.LastSeen.IsZero() {
dbWorker.LastSeen = userWorker.LastSeen
}
dbWorker.SchedulingPaused = userWorker.SchedulingPaused
if err := txn.SetWorker(*dbWorker); err != nil {

View File

@ -174,6 +174,41 @@ func TestPortForwarding(t *testing.T) {
require.Contains(t, string(unameOutput), cases.Title(language.English).String(runtime.GOOS))
}
func TestSparseWorkerUpdatePreservesLastSeen(t *testing.T) {
ctx := context.Background()
devClient, _, _ := devcontroller.StartIntegrationTestEnvironmentWithAdditionalOpts(
t,
false,
nil,
true,
nil,
)
lastSeen := time.Now().Add(-time.Minute).UTC().Truncate(time.Microsecond)
_, err := devClient.Workers().Create(ctx, v1.Worker{
Meta: v1.Meta{
Name: "sparse-update-worker",
},
LastSeen: lastSeen,
MachineID: "sparse-update-machine",
})
require.NoError(t, err)
_, err = devClient.Workers().Update(ctx, v1.Worker{
Meta: v1.Meta{
Name: "sparse-update-worker",
},
SchedulingPaused: true,
})
require.NoError(t, err)
worker, err := devClient.Workers().Get(ctx, "sparse-update-worker")
require.NoError(t, err)
require.Equal(t, lastSeen, worker.LastSeen)
require.True(t, worker.SchedulingPaused)
}
// TestSchedulerHealthCheckingNonExistentWorker ensures that scheduler
// will eventually fail VMs that are scheduled on a worker that was
// deleted from the API.