Documentation
¶
Index ¶
- Variables
- func EnvStateString(es EnvState) string
- type EnvController
- func (ec *EnvController) Check(ctx context.Context, logger log.Logger, args *spec.CheckArgs) (*spec.CheckResult, error)
- func (ec *EnvController) CreateEnv(ctx context.Context, logger log.Logger, hash string, data *EnvData) (int64, error)
- func (ec *EnvController) DropEnv(ctx context.Context, logger log.Logger, hash string, er *EnvRef) error
- func (ec *EnvController) Ready() bool
- func (ec *EnvController) Recover(ctx context.Context, tickerCtx context.Context, logger log.Logger, ...) error
- func (ec *EnvController) Run(ctx context.Context, logger log.Logger) error
- func (ec *EnvController) String() string
- type EnvControllerState
- type EnvData
- type EnvList
- type EnvRef
- type EnvRefList
- type EnvState
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 )
Functions ¶
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 (*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 ¶
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
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 ¶
await pending operations (internal busy counter)
func (*EnvRef) Init ¶
create base directory structure
Source Files
¶
- controller.go
- data.go
- utils.go
Click to show internal directories.
Click to hide internal directories.