Documentation ¶
Index ¶
- Variables
- func AllowedEnvironment(envs []string) []string
- func ExitStatus(err error) (int, bool)
- func InitContextStats(ctx context.Context) context.Context
- type Command
- func (c *Command) Args() []string
- func (c *Command) Env() []string
- func (c *Command) Pid() int
- func (c *Command) Read(p []byte) (int, error)
- func (c *Command) SetCgroupPath(path string)
- func (c *Command) SetMetricsCmd(metricsCmd string)
- func (c *Command) SetMetricsSubCmd(metricsSubCmd string)
- func (c *Command) Wait() error
- func (c *Command) Write(p []byte) (int, error)
- type SpawnConfig
- type Stats
Constants ¶
This section is empty.
Variables ¶
var SetupStdin io.Reader = stdinSentinel{}
SetupStdin instructs New() to configure the stdin pipe of the command it is creating. This allows you call Write() on the command as if it is an ordinary io.Writer, sending data directly to the stdin of the process.
You should not call Read() on this value - it is strictly for configuration!
Functions ¶
func AllowedEnvironment ¶
AllowedEnvironment filters the given slice of environment variables and returns all variables which are allowed per the variables defined above. This is useful for constructing a base environment in which a command can be run.
func ExitStatus ¶
ExitStatus will return the exit-code from an error returned by Wait().
Types ¶
type Command ¶
type Command struct {
// contains filtered or unexported fields
}
Command encapsulates a running exec.Cmd. The embedded exec.Cmd is terminated and reaped automatically when the context.Context that created it is canceled.
func New ¶
func New(ctx context.Context, cmd *exec.Cmd, stdin io.Reader, stdout, stderr io.Writer, env ...string) (*Command, error)
New creates a Command from an exec.Cmd. On success, the Command contains a running subprocess. When ctx is canceled the embedded process will be terminated and reaped automatically.
If stdin is specified as SetupStdin, you will be able to write to the stdin of the subprocess by calling Write() on the returned Command.
func (*Command) SetCgroupPath ¶
SetCgroupPath sets the cgroup path for logging
func (*Command) SetMetricsCmd ¶
SetMetricsCmd overrides the "cmd" label used in metrics
func (*Command) SetMetricsSubCmd ¶
SetMetricsSubCmd sets the "subcmd" label used in metrics
type SpawnConfig ¶
type SpawnConfig struct { // This default value (10 seconds) is very high. Spawning should take // milliseconds or less. If we hit 10 seconds, something is wrong, and // failing the request will create breathing room. Can be modified at // runtime with the GITALY_COMMAND_SPAWN_TIMEOUT environment variable. Timeout time.Duration `split_words:"true" default:"10s"` // MaxSpawnParallel limits the number of goroutines that can spawn a // process at the same time. These parallel spawns will contend for a // single lock (syscall.ForkLock) in exec.Cmd.Start(). Can be modified at // runtime with the GITALY_COMMAND_SPAWN_MAX_PARALLEL variable. // // Note that this does not limit the total number of child processes that // can be attached to Gitaly at the same time. It only limits the rate at // which we can create new child processes. MaxParallel int `split_words:"true" default:"10"` }
SpawnConfig holds configuration for command spawning timeouts and parallelism.
type Stats ¶
nolint: revive,stylecheck // This is unintentionally missing documentation.
func StatsFromContext ¶
nolint: revive,stylecheck // This is unintentionally missing documentation.