mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-09-05 18:40:59 +00:00
The daemon context is needed when the context of a job or the poller is done. Otherwise it is no longer possible to send a conclusion report to Forgejo, short of creating a context.Background() which poses its own set of problems. - WithDaemonContext is used to store the daemon context - The poller uses the daemon context instead of context.Background
26 lines
545 B
Go
26 lines
545 B
Go
// Copyright 2025 The Forgejo Authors
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package common
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
type daemonContextKey string
|
|
|
|
const daemonContextKeyVal = daemonContextKey("daemon")
|
|
|
|
func DaemonContext(ctx context.Context) context.Context {
|
|
val := ctx.Value(daemonContextKeyVal)
|
|
if val != nil {
|
|
if daemon, ok := val.(context.Context); ok {
|
|
return daemon
|
|
}
|
|
}
|
|
return context.Background()
|
|
}
|
|
|
|
func WithDaemonContext(ctx, daemon context.Context) context.Context {
|
|
return context.WithValue(ctx, daemonContextKeyVal, daemon)
|
|
}
|