envs

package
v0.0.0-...-b254c12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEnvShutdown  = status.Error(codes.NotFound, "env is being removed")
	ErrTooManyTasks = status.Error(codes.ResourceExhausted, "too many concurrent tasks")
)
View Source
var (
	ErrEnvBuilding        = status.Error(codes.FailedPrecondition, "env is still being built")                  // env is currently being built
	ErrServerStopping     = status.Error(codes.Unavailable, "server is being shutdown")                         // server is being shutdown
	ErrServersUnavailable = status.Error(codes.FailedPrecondition, "no server is available to handle the call") // no isabelle instance is available
)
View Source
var ErrMissingEnv = status.Error(codes.NotFound, "specified env not found")
View Source
var ErrTaskTimeout = status.Error(codes.Aborted, "Isabelle failed to cancel task within timeout")

Functions

func EnvStateString

func EnvStateString(es EnvState) string

Types

type EnvController

type EnvController struct {
	Server atomic.Pointer[util.Server] // reference to underlying server

	Envs             EnvRefList           // list of managed envs
	State            atomic.Uint32        // overall state of controller
	OpCounter        atomic.Uint32        // counter of operations (create-env/chech-env)
	RecoveryCounter  atomic.Uint32        // counter of successful recoveries
	OpRollingCounter *util.RollingCounter // rolling counter of operations
	// contains filtered or unexported fields
}

container for envs

func NewController

func NewController(
	ctx context.Context,
	logger log.Logger,
	tracer *util.Tracer,
	server *util.Server,
	rcfg *api.RuntimeConfig,
	state *EnvControllerState,
) (*EnvController, error)

build new env controller, this includes connecting to the upstream server

func (*EnvController) Check

func (ec *EnvController) Check(
	ctx context.Context,
	logger log.Logger,
	args *spec.CheckArgs,
) (*spec.CheckResult, error)

perform check in environment

func (*EnvController) CreateEnv

func (ec *EnvController) CreateEnv(
	ctx context.Context,
	logger log.Logger,
	hash string,
	data *EnvData,
) (int64, error)

func (*EnvController) DropEnv

func (ec *EnvController) DropEnv(
	ctx context.Context,
	logger log.Logger,
	hash string, er *EnvRef,
) error

remove env

func (*EnvController) Ready

func (ec *EnvController) Ready() bool

func (*EnvController) Recover

func (ec *EnvController) Recover(
	ctx context.Context,
	tickerCtx context.Context,
	logger log.Logger,
	envList *EnvList,
) error

recover envs with new isabelle server instance

func (*EnvController) Run

func (ec *EnvController) Run(ctx context.Context, logger log.Logger) error

perform background task handling

func (*EnvController) String

func (ec *EnvController) String() string

type EnvControllerState

type EnvControllerState = uint32
const (
	ECUnknown   EnvControllerState = iota // zero-value, env is not initialised or initialising
	ECReady                               // env is ready to handle requests
	ECShutdown                            // env has reached end of lifecycle
	ECUnhealthy                           // env is unhealthy and trying to recover
)

type EnvData

type EnvData struct {
	State    atomic.Uint32 // state marker
	LastUsed atomic.Int64  // UTC Unix timestamp of last time a check was performed against it
	Args     *spec.EnvArgs // args for underlay, used to restore sessions after a server is offline
}

container for aux data used by an env

func (*EnvData) ProtoState

func (ed *EnvData) ProtoState() proto.EnvStatus

type EnvList

type EnvList = xsync.Map[string, *EnvData]

type EnvRef

type EnvRef struct {
	State atomic.Uint32 // state marker
	// contains filtered or unexported fields
}

reference to an env on a server

func (*EnvRef) AwaitPending

func (ed *EnvRef) AwaitPending(ctx context.Context, logger log.Logger) error

await pending operations (internal busy counter)

func (*EnvRef) Init

func (ed *EnvRef) Init(ctx context.Context, logger log.Logger, parent string) error

create base directory structure

func (*EnvRef) SessionID

func (ed *EnvRef) SessionID() uuid.UUID

get session ID (NOTE: only intended for testing code)

type EnvRefList

type EnvRefList = xsync.Map[string, *EnvRef]

type EnvState

type EnvState = uint32

state for environments

const (
	EnvUnknown  EnvState = 0b000 // env state not known, zero value
	EnvMasked   EnvState = 0b001 // env is not initialised
	EnvBuilding EnvState = 0b010 // env is initialising
	EnvActive   EnvState = 0b011 // env is initialised
	EnvShutdown EnvState = 0b100 // env is being removed
)

Source Files

  • controller.go
  • data.go
  • utils.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL