Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set slogger on rungroup after logshipping is set up, so that rungroup logs will be shipped #1869

Merged
merged 1 commit into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion cmd/launcher/desktop.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ func runDesktop(_ *multislogger.MultiSlogger, args []string) error {
)
}

runGroup := rungroup.NewRunGroup(slogger)
runGroup := rungroup.NewRunGroup()
runGroup.SetSlogger(slogger)

// listen for signals
runGroup.Add("desktopSignalListener", func() error {
Expand Down
6 changes: 5 additions & 1 deletion cmd/launcher/launcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ func runLauncher(ctx context.Context, cancel func(), multiSlogger, systemMultiSl
}

// create a rungroup for all the actors we create to allow for easy start/stop
runGroup := rungroup.NewRunGroup(slogger)
runGroup := rungroup.NewRunGroup()

// Need to set up the log shipper so that we can get the logger early
// and pass it to the various systems.
Expand Down Expand Up @@ -246,6 +246,10 @@ func runLauncher(ctx context.Context, cancel func(), multiSlogger, systemMultiSl
startupSpan.AddEvent("log_shipper_init_completed")
}

// Now that log shipping is set up, set the slogger on the rungroup so that rungroup logs
// will also be shipped.
runGroup.SetSlogger(k.Slogger())

startupSettingsWriter, err := startupsettings.OpenWriter(ctx, k)
if err != nil {
return fmt.Errorf("creating startup db: %w", err)
Expand Down
3 changes: 2 additions & 1 deletion ee/watchdog/watchdog_service_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,8 @@ func (w *winWatchdogSvc) checkLauncherStatus(ctx context.Context) error {

func runLauncherWatchdogService(ctx context.Context, w *winWatchdogSvc) error {
// create a rungroup for all the actors we create to allow for easy start/stop
runGroup := rungroup.NewRunGroup(w.slogger.Logger)
runGroup := rungroup.NewRunGroup()
runGroup.SetSlogger(w.slogger.Logger)
powerEventWatcher, err := powereventwatcher.New(ctx, w.slogger.Logger, w.sleepStateUpdater)
if err != nil {
w.slogger.Log(ctx, slog.LevelDebug,
Expand Down
9 changes: 7 additions & 2 deletions pkg/rungroup/rungroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"time"

"github.com/kolide/launcher/ee/gowrapper"
"github.com/kolide/launcher/pkg/log/multislogger"
"golang.org/x/sync/semaphore"
)

Expand All @@ -38,9 +39,9 @@ const (
executeReturnTimeout = 5 * time.Second // After interrupted, how long for all actors to exit their `execute` functions
)

func NewRunGroup(slogger *slog.Logger) *Group {
func NewRunGroup() *Group {
return &Group{
slogger: slogger.With("component", "run_group"),
slogger: multislogger.NewNopLogger(),
actors: make([]rungroupActor, 0),
}
}
Expand All @@ -49,6 +50,10 @@ func (g *Group) Add(name string, execute func() error, interrupt func(error)) {
g.actors = append(g.actors, rungroupActor{name, execute, interrupt})
}

func (g *Group) SetSlogger(slogger *slog.Logger) {
g.slogger = slogger.With("component", "run_group")
}

func (g *Group) Run() error {
if len(g.actors) == 0 {
return nil
Expand Down
12 changes: 6 additions & 6 deletions pkg/rungroup/rungroup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,21 @@ import (
"testing"
"time"

"github.com/kolide/launcher/pkg/log/multislogger"
"github.com/kolide/launcher/pkg/threadsafebuffer"
"github.com/stretchr/testify/require"
)

func TestRun_NoActors(t *testing.T) {
t.Parallel()

testRunGroup := NewRunGroup(multislogger.NewNopLogger())
testRunGroup := NewRunGroup()
require.NoError(t, testRunGroup.Run())
}

func TestRun_MultipleActors(t *testing.T) {
t.Parallel()

testRunGroup := NewRunGroup(multislogger.NewNopLogger())
testRunGroup := NewRunGroup()

groupReceivedInterrupts := make(chan struct{}, 3)

Expand Down Expand Up @@ -93,7 +92,7 @@ func TestRun_MultipleActors(t *testing.T) {
func TestRun_MultipleActors_InterruptTimeout(t *testing.T) {
t.Parallel()

testRunGroup := NewRunGroup(multislogger.NewNopLogger())
testRunGroup := NewRunGroup()

groupReceivedInterrupts := make(chan struct{}, 3)

Expand Down Expand Up @@ -166,7 +165,7 @@ func TestRun_MultipleActors_InterruptTimeout(t *testing.T) {
func TestRun_MultipleActors_ExecuteReturnTimeout(t *testing.T) {
t.Parallel()

testRunGroup := NewRunGroup(multislogger.NewNopLogger())
testRunGroup := NewRunGroup()

groupReceivedInterrupts := make(chan struct{}, 3)
// Keep track of when `execute`s return so we give testRunGroup.Run enough time to do its thing
Expand Down Expand Up @@ -250,7 +249,8 @@ func TestRun_RecoversAndLogsPanic(t *testing.T) {
Level: slog.LevelDebug,
}))

testRunGroup := NewRunGroup(slogger)
testRunGroup := NewRunGroup()
testRunGroup.SetSlogger(slogger)

// Actor that will panic in its execute function
testRunGroup.Add("panickingActor", func() error {
Expand Down
Loading