lifecycle

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package lifecycle manages plugin process lifecycle

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// Plugin startup timeout
	StartupTimeout time.Duration
	// Health check interval
	HealthCheckInterval time.Duration
	// Maximum restart attempts
	MaxRestarts int
	// Restart delay
	RestartDelay time.Duration
	// Shutdown timeout
	ShutdownTimeout time.Duration
	// Plugin environment variables
	Environment map[string]string
	// Plugin working directory
	WorkingDir string
	// gRPC dial timeout
	DialTimeout time.Duration
}

Config contains lifecycle manager configuration

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns default configuration

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager handles plugin process lifecycle

func NewManager

func NewManager(config *Config, logger *logrus.Logger) *Manager

NewManager creates a new lifecycle manager

func (*Manager) GetPlugin

func (m *Manager) GetPlugin(name string) (*PluginProcess, bool)

GetPlugin returns plugin information

func (*Manager) ListPlugins

func (m *Manager) ListPlugins() []string

ListPlugins returns all running plugins

func (*Manager) RestartPlugin

func (m *Manager) RestartPlugin(ctx context.Context, name string) error

RestartPlugin restarts a plugin

func (*Manager) Start

func (m *Manager) Start() error

Start begins the lifecycle manager

func (*Manager) StartPlugin

func (m *Manager) StartPlugin(plugin discovery.DiscoveredPlugin) error

StartPlugin starts a plugin process

func (*Manager) Stop

func (m *Manager) Stop() error

Stop gracefully shuts down all plugins and the manager

func (*Manager) StopAll

func (m *Manager) StopAll()

StopAll stops all running plugins

func (*Manager) StopPlugin

func (m *Manager) StopPlugin(name string) error

StopPlugin gracefully stops a plugin

type PluginProcess

type PluginProcess struct {
	Plugin     discovery.DiscoveredPlugin
	Cmd        *exec.Cmd
	Client     proto.HKPPluginClient
	Conn       *grpc.ClientConn
	Address    string
	Started    time.Time
	LastHealth time.Time
	// contains filtered or unexported fields
}

PluginProcess represents a running plugin process

type RestartManager

type RestartManager struct {
	// contains filtered or unexported fields
}

RestartManager handles plugin restarts

func NewRestartManager

func NewRestartManager(manager *Manager, policy *RestartPolicy, logger *logrus.Logger) *RestartManager

NewRestartManager creates a new restart manager

func (*RestartManager) GracefulRestart

func (rm *RestartManager) GracefulRestart(pluginName string) error

GracefulRestart performs a graceful restart of a plugin

func (*RestartManager) HandlePluginExit

func (rm *RestartManager) HandlePluginExit(plugin discovery.DiscoveredPlugin, exitError error)

HandlePluginExit handles when a plugin exits unexpectedly

type RestartPolicy

type RestartPolicy struct {
	// Maximum number of restart attempts
	MaxAttempts int
	// Delay between restart attempts
	Delay time.Duration
	// Time window for counting failures
	Window time.Duration
	// Backoff multiplier for exponential backoff
	BackoffMultiplier float64
	// Maximum backoff delay
	MaxBackoff time.Duration
}

RestartPolicy defines how plugins should be restarted

func DefaultRestartPolicy

func DefaultRestartPolicy() *RestartPolicy

DefaultRestartPolicy returns a sensible default restart policy

type RestartTracker

type RestartTracker struct {
	// contains filtered or unexported fields
}

RestartTracker tracks restart attempts for plugins

func NewRestartTracker

func NewRestartTracker(policy *RestartPolicy) *RestartTracker

NewRestartTracker creates a new restart tracker

func (*RestartTracker) RecordRestart

func (rt *RestartTracker) RecordRestart(pluginName string)

RecordRestart records a restart attempt

func (*RestartTracker) Reset

func (rt *RestartTracker) Reset(pluginName string)

Reset clears restart attempts for a plugin

func (*RestartTracker) ShouldRestart

func (rt *RestartTracker) ShouldRestart(pluginName string) (bool, time.Duration)

ShouldRestart determines if a plugin should be restarted

Jump to

Keyboard shortcuts

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