Skip to content
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
24 changes: 7 additions & 17 deletions packages/orchestrator/pkg/sandbox/reclaim.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,28 +84,22 @@ func (s *Sandbox) bestEffortReclaim(ctx context.Context) {
ctx, span := tracer.Start(ctx, "envd-reclaim")
defer span.End()

cfg := featureflags.GetReclaimConfig(ctx, s.featureFlags,
featureflags.SandboxContext(s.Runtime.SandboxID),
ctx = featureflags.AddToContext(
ctx,
sandboxLDContext(s.Runtime, s.Config),
featureflags.TeamContext(s.Runtime.TeamID),
featureflags.TemplateContext(s.Runtime.TemplateID),
)

if s.featureFlags.BoolFlag(ctx, featureflags.FreezeUserCgroupFlag,
featureflags.SandboxContext(s.Runtime.SandboxID),
featureflags.TeamContext(s.Runtime.TeamID),
featureflags.TemplateContext(s.Runtime.TemplateID),
) {
if s.featureFlags.BoolFlag(ctx, featureflags.FreezeUserCgroupFlag) {
s.bestEffortFreeze(ctx)
}

if s.featureFlags.BoolFlag(ctx, featureflags.CollapseEnvdHeapFlag,
featureflags.SandboxContext(s.Runtime.SandboxID),
featureflags.TeamContext(s.Runtime.TeamID),
featureflags.TemplateContext(s.Runtime.TemplateID),
) {
if s.featureFlags.BoolFlag(ctx, featureflags.CollapseEnvdHeapFlag) {
s.bestEffortCollapse(ctx)
}

cfg := featureflags.GetReclaimConfig(ctx, s.featureFlags)
script, timeout := s.buildReclaimScript(cfg)
if script == "" {
return
Expand Down Expand Up @@ -308,11 +302,7 @@ func (s *Sandbox) bestEffortCollapse(ctx context.Context) {
// Timeout comes straight from the flag, whose fallback (10s) is returned
// whenever LD is unavailable or the flag is unset — so there is no separate
// local default to keep in sync.
timeout := time.Duration(s.featureFlags.IntFlag(ctx, featureflags.CollapseEnvdHeapTimeoutMsFlag,
featureflags.SandboxContext(s.Runtime.SandboxID),
featureflags.TeamContext(s.Runtime.TeamID),
featureflags.TemplateContext(s.Runtime.TemplateID),
)) * time.Millisecond
timeout := time.Duration(s.featureFlags.IntFlag(ctx, featureflags.CollapseEnvdHeapTimeoutMsFlag)) * time.Millisecond

start := time.Now()
stats, err := s.callEnvdCollapse(ctx, timeout)
Expand Down
3 changes: 2 additions & 1 deletion packages/orchestrator/pkg/sandbox/sandbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ type RuntimeMetadata struct {
SandboxType SandboxType
}

// sandboxLDContext builds an LD context with kernel/FC-version attributes for
// sandboxLDContext builds an LD context with envd/kernel/FC-version attributes for
// per-sandbox flag targeting. Team/template targeting comes from the team and
// template contexts the caller embeds in ctx.
func sandboxLDContext(runtime RuntimeMetadata, config *Config) ldcontext.Context {
Expand All @@ -196,6 +196,7 @@ func sandboxLDContext(runtime RuntimeMetadata, config *Config) ldcontext.Context
SetString(featureflags.SandboxTemplateAttribute, runtime.TemplateID).
SetString(featureflags.SandboxKernelVersionAttribute, config.FirecrackerConfig.KernelVersion).
SetString(featureflags.SandboxFirecrackerVersionAttribute, config.FirecrackerConfig.FirecrackerVersion).
SetString(featureflags.SandboxEnvdVersionAttribute, config.Envd.Version).
SetString(featureflags.SandboxTypeAttribute, runtime.SandboxType.String()).
Build()
}
Expand Down
38 changes: 23 additions & 15 deletions packages/orchestrator/pkg/server/sandboxes.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ func (s *Server) Create(ctx context.Context, req *orchestrator.SandboxCreateRequ
SetString(featureflags.SandboxTemplateAttribute, req.GetSandbox().GetTemplateId()).
SetString(featureflags.SandboxKernelVersionAttribute, req.GetSandbox().GetKernelVersion()).
SetString(featureflags.SandboxFirecrackerVersionAttribute, req.GetSandbox().GetFirecrackerVersion()).
SetString(featureflags.SandboxEnvdVersionAttribute, req.GetSandbox().GetEnvdVersion()).
Comment thread
jakubno marked this conversation as resolved.
Build(),
ldcontext.NewBuilder(req.GetSandbox().GetTeamId()).
Kind(featureflags.TeamKind).
Expand Down Expand Up @@ -605,21 +606,24 @@ func (s *Server) Pause(ctx context.Context, in *orchestrator.SandboxPauseRequest
telemetry.WithBuildID(in.GetBuildId()),
)

ctx = featureflags.AddToContext(
ctx,
ldcontext.NewBuilder(in.GetSandboxId()).
Kind(featureflags.SandboxKind).
SetString(featureflags.SandboxTemplateAttribute, in.GetTemplateId()).
Build(),
)

sbx, ok := s.sandboxFactory.Sandboxes.Get(in.GetSandboxId())
if !ok {
telemetry.ReportCriticalError(ctx, "sandbox not found", nil, telemetry.WithSandboxID(in.GetSandboxId()))

return nil, status.Error(codes.NotFound, "sandbox not found")
}

ctx = featureflags.AddToContext(
ctx,
ldcontext.NewBuilder(in.GetSandboxId()).
Kind(featureflags.SandboxKind).
SetString(featureflags.SandboxTemplateAttribute, sbx.Runtime.TemplateID).
SetString(featureflags.SandboxKernelVersionAttribute, sbx.Config.FirecrackerConfig.KernelVersion).
SetString(featureflags.SandboxFirecrackerVersionAttribute, sbx.Config.FirecrackerConfig.FirecrackerVersion).
SetString(featureflags.SandboxEnvdVersionAttribute, sbx.Config.Envd.Version).
Build(),
)

childSpan.SetAttributes(
telemetry.WithTeamID(sbx.Runtime.TeamID),
telemetry.WithFirecrackerVersion(sbx.Config.FirecrackerConfig.FirecrackerVersion),
Expand Down Expand Up @@ -687,20 +691,24 @@ func (s *Server) Checkpoint(ctx context.Context, in *orchestrator.SandboxCheckpo
telemetry.WithBuildID(in.GetBuildId()),
)

ctx = featureflags.AddToContext(
ctx,
ldcontext.NewBuilder(in.GetSandboxId()).
Kind(featureflags.SandboxKind).
Build(),
)

sbx, ok := s.sandboxFactory.Sandboxes.Get(in.GetSandboxId())
if !ok {
telemetry.ReportCriticalError(ctx, "sandbox not found", nil, telemetry.WithSandboxID(in.GetSandboxId()))

return nil, status.Errorf(codes.NotFound, "sandbox '%s' not found", in.GetSandboxId())
}

ctx = featureflags.AddToContext(
ctx,
ldcontext.NewBuilder(in.GetSandboxId()).
Kind(featureflags.SandboxKind).
SetString(featureflags.SandboxTemplateAttribute, sbx.Runtime.TemplateID).
SetString(featureflags.SandboxKernelVersionAttribute, sbx.Config.FirecrackerConfig.KernelVersion).
SetString(featureflags.SandboxFirecrackerVersionAttribute, sbx.Config.FirecrackerConfig.FirecrackerVersion).
SetString(featureflags.SandboxEnvdVersionAttribute, sbx.Config.Envd.Version).
Build(),
)

childSpan.SetAttributes(
telemetry.WithTeamID(sbx.Runtime.TeamID),
telemetry.WithTemplateID(sbx.Runtime.TemplateID),
Expand Down
1 change: 1 addition & 0 deletions packages/shared/pkg/featureflags/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const (
SandboxTemplateAttribute string = "template-id"
SandboxKernelVersionAttribute string = "kernel-version"
SandboxFirecrackerVersionAttribute string = "firecracker-version"
SandboxEnvdVersionAttribute string = "envd-version"
// SandboxTypeAttribute distinguishes "sandbox" from "build" runs.
SandboxTypeAttribute string = "sandbox-type"

Expand Down
Loading