diff options
Diffstat (limited to 'cmd/mirum-server/server.go')
| -rw-r--r-- | cmd/mirum-server/server.go | 20 | +9 −11 |
1 files changed, 9 insertions, 11 deletions
diff --git a/cmd/mirum-server/server.go b/cmd/mirum-server/server.go index 4ad6113..5b4bbf0 100644 --- a/cmd/mirum-server/server.go +++ b/cmd/mirum-server/server.go @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2026 Nikolay Govorov +// Copyright (c) 2026 Nikolay Govorov // SPDX-License-Identifier: AGPL-3.0-or-later package main @@ -30,6 +30,7 @@ type server struct { // Close releases resources owned by the server. Call exactly once, after // all HTTP servers have finished Shutdown. func (s *server) Close() { + close(s.queue) s.db.Close() } @@ -50,27 +51,24 @@ func (s *server) PurgeSessions(ctx context.Context) { } } -func (s *server) enqueue(ctx context.Context, ev *forges.PushEvent) (string, error) { - id := fmt.Sprintf("task-%d", s.taskCounter.Add(1)) +func (s *server) enqueue(ev *forges.PushEvent) string { + s.taskCounter.Add(1) + id := fmt.Sprintf("task-%d", s.taskCounter.Load()) slog.Info("push", "repo", ev.Owner+"/"+ev.Repo, "branch", ev.Branch, "sha", ev.SHA[:8], "task", id) s.tasks.Store(id, ev) - _ = s.forge.SetStatus(ctx, ev, forges.StatusPending, "Queued") + _ = s.forge.SetStatus(context.Background(), ev, forges.StatusPending, "Queued") - select { - case s.queue <- &wirepb.Task{ + s.queue <- &wirepb.Task{ Id: id, CloneUrl: s.forge.AuthURL(ev.CloneURL), Branch: ev.Branch, Sha: ev.SHA, RepoFullName: ev.Owner + "/" + ev.Repo, - }: - return id, nil - case <-ctx.Done(): - s.tasks.Delete(id) - return "", ctx.Err() } + + return id } func (s *server) complete(ctx context.Context, taskID string, success bool, errMsg string) error { |
