Documentation
¶
Overview ¶
Package lifecycle manages plugin process lifecycle
Index ¶
- type Config
- type Manager
- func (m *Manager) GetPlugin(name string) (*PluginProcess, bool)
- func (m *Manager) ListPlugins() []string
- func (m *Manager) RestartPlugin(ctx context.Context, name string) error
- func (m *Manager) Start() error
- func (m *Manager) StartPlugin(plugin discovery.DiscoveredPlugin) error
- func (m *Manager) Stop() error
- func (m *Manager) StopAll()
- func (m *Manager) StopPlugin(name string) error
- type PluginProcess
- type RestartManager
- type RestartPolicy
- type RestartTracker
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
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles plugin process lifecycle
func NewManager ¶
NewManager creates a new lifecycle manager
func (*Manager) GetPlugin ¶
func (m *Manager) GetPlugin(name string) (*PluginProcess, bool)
GetPlugin returns plugin information
func (*Manager) ListPlugins ¶
ListPlugins returns all running plugins
func (*Manager) RestartPlugin ¶
RestartPlugin restarts a plugin
func (*Manager) StartPlugin ¶
func (m *Manager) StartPlugin(plugin discovery.DiscoveredPlugin) error
StartPlugin starts a plugin process
func (*Manager) StopPlugin ¶
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