Documentation ¶
Overview ¶
Package overseer implements daemonizable self-upgrading binaries in Go (golang).
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( //DisabledState is a placeholder state for when //overseer is disabled and the program function //is run manually. DisabledState = State{Enabled: false} )
Functions ¶
func IsSupported ¶
func IsSupported() bool
IsSupported returns whether overseer is supported on the current OS.
func Restart ¶
func Restart()
Restart programmatically triggers a graceful restart. If NoRestart is enabled, then this will essentially be a graceful shutdown.
func Run ¶
func Run(c Config)
Run executes overseer, if an error is encountered, overseer fallsback to running the program directly (unless Required is set).
func SanityCheck ¶
func SanityCheck()
SanityCheck manually runs the check to ensure this binary is compatible with overseer. This tries to ensure that a restart is never performed against a bad binary, as it would require manual intervention to rectify. This is automatically done on overseer.Run() though it can be manually run prior whenever necessary.
Types ¶
type Config ¶
type Config struct { // Required will prevent overseer from fallback to running // running the program in the main process on failure. Required bool // Program's main function Program func(state State) // Program's zero-downtime socket listening address (set this or Addresses) Address string // Program's zero-downtime socket listening addresses (set this or Address) Addresses []string // RestartSignal will manually trigger a graceful restart. Defaults to SIGUSR2. RestartSignal os.Signal // TerminateTimeout controls how long overseer should // wait for the program to terminate itself. After this // timeout, overseer will issue a SIGKILL. TerminateTimeout time.Duration // MinFetchInterval defines the smallest duration between Fetch()s. // This helps to prevent unwieldy fetch.Interfaces from hogging // too many resources. Defaults to 1 second. MinFetchInterval time.Duration // PreUpgrade runs after a binary has been retrieved, user defined checks // can be run here and returning an error will cancel the upgrade. PreUpgrade func(tempBinaryPath string) error // Debug enables all [overseer] logs. Debug bool // NoWarn disables warning [overseer] logs. NoWarn bool // NoRestart disables all restarts, this option essentially converts // the RestartSignal into a "ShutdownSignal". NoRestart bool // NoRestartAfterFetch disables automatic restarts after each upgrade. // Though manual restarts using the RestartSignal can still be performed. NoRestartAfterFetch bool // Fetcher will be used to fetch binaries. Fetcher fetcher.Interface // 可执行文件路径 ExecFile string }
Config defines overseer's run-time configuration
type State ¶
type State struct { //whether overseer is running enabled. When enabled, //this program will be running in a child process and //overseer will perform rolling upgrades. Enabled bool //ID is a SHA-1 hash of the current running binary ID string //StartedAt records the start time of the program StartedAt time.Time //Listener is the first net.Listener in Listeners Listener net.Listener //Listeners are the set of acquired sockets by the master //process. These are all passed into this program in the //same order they are specified in Config.Addresses. Listeners []net.Listener //Program's first listening address Address string //Program's listening addresses Addresses []string //GracefulShutdown will be filled when its time to perform //a graceful shutdown. GracefulShutdown chan bool //Path of the binary currently being executed BinPath string }
State contains the current run-time state of overseer