summaryrefslogtreecommitdiff
path: root/interfaces/pool/pool.go
diff options
context:
space:
mode:
Diffstat (limited to 'interfaces/pool/pool.go')
-rw-r--r--interfaces/pool/pool.go100
1 files changed, 0 insertions, 100 deletions
diff --git a/interfaces/pool/pool.go b/interfaces/pool/pool.go
deleted file mode 100644
index 97cc945c..00000000
--- a/interfaces/pool/pool.go
+++ /dev/null
@@ -1,100 +0,0 @@
-package pool
-
-import (
- "context"
- "runtime"
- "time"
-
- "github.com/spiral/roadrunner/v2/interfaces/worker"
- "github.com/spiral/roadrunner/v2/pkg/payload"
-)
-
-// Pool managed set of inner worker processes.
-type Pool interface {
- // GetConfig returns pool configuration.
- GetConfig() interface{}
-
- // Exec executes task with payload
- Exec(rqs payload.Payload) (payload.Payload, error)
-
- // ExecWithContext executes task with context which is used with timeout
- ExecWithContext(ctx context.Context, rqs payload.Payload) (payload.Payload, error)
-
- // Workers returns worker list associated with the pool.
- Workers() (workers []worker.BaseProcess)
-
- // Remove worker from the pool.
- RemoveWorker(worker worker.BaseProcess) error
-
- // Destroy all underlying stack (but let them to complete the task).
- Destroy(ctx context.Context)
-}
-
-// Configures the pool behaviour.
-type Config struct {
- // Debug flag creates new fresh worker before every request.
- Debug bool
-
- // NumWorkers defines how many sub-processes can be run at once. This value
- // might be doubled by Swapper while hot-swap. Defaults to number of CPU cores.
- NumWorkers int64
-
- // MaxJobs defines how many executions is allowed for the worker until
- // it's destruction. set 1 to create new process for each new task, 0 to let
- // worker handle as many tasks as it can.
- MaxJobs int64
-
- // AllocateTimeout defines for how long pool will be waiting for a worker to
- // be freed to handle the task. Defaults to 60s.
- AllocateTimeout time.Duration
-
- // DestroyTimeout defines for how long pool should be waiting for worker to
- // properly destroy, if timeout reached worker will be killed. Defaults to 60s.
- DestroyTimeout time.Duration
-
- // Supervision config to limit worker and pool memory usage.
- Supervisor *SupervisorConfig
-}
-
-// InitDefaults enables default config values.
-func (cfg *Config) InitDefaults() {
- if cfg.NumWorkers == 0 {
- cfg.NumWorkers = int64(runtime.NumCPU())
- }
-
- if cfg.AllocateTimeout == 0 {
- cfg.AllocateTimeout = time.Minute
- }
-
- if cfg.DestroyTimeout == 0 {
- cfg.DestroyTimeout = time.Minute
- }
- if cfg.Supervisor == nil {
- return
- }
- cfg.Supervisor.InitDefaults()
-}
-
-type SupervisorConfig struct {
- // WatchTick defines how often to check the state of worker.
- WatchTick uint64
-
- // TTL defines maximum time worker is allowed to live.
- TTL uint64
-
- // IdleTTL defines maximum duration worker can spend in idle mode. Disabled when 0.
- IdleTTL uint64
-
- // ExecTTL defines maximum lifetime per job.
- ExecTTL uint64
-
- // MaxWorkerMemory limits memory per worker.
- MaxWorkerMemory uint64
-}
-
-// InitDefaults enables default config values.
-func (cfg *SupervisorConfig) InitDefaults() {
- if cfg.WatchTick == 0 {
- cfg.WatchTick = 1
- }
-}