summaryrefslogtreecommitdiff
path: root/interfaces/events/pool_events.go
blob: d1464e1adf0275da8b7a08c6e7ad73bc043a9a72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package events

const (
	// EventWorkerConstruct thrown when new worker is spawned.
	EventWorkerConstruct P = iota + 7800

	// EventWorkerDestruct thrown after worker destruction.
	EventWorkerDestruct

	// EventPoolError caused on pool wide errors.
	EventPoolError

	// EventSupervisorError triggered when supervisor can not complete work.
	EventSupervisorError

	// EventNoFreeWorkers triggered when there are no free workers in the stack and timeout for worker allocate elapsed
	EventNoFreeWorkers

	// EventMaxMemory caused when worker consumes more memory than allowed.
	EventMaxMemory

	// EventTTL thrown when worker is removed due TTL being reached. Context is rr.WorkerError
	EventTTL

	// EventIdleTTL triggered when worker spends too much time at rest.
	EventIdleTTL

	// EventExecTTL triggered when worker spends too much time doing the task (max_execution_time).
	EventExecTTL
)

type P int64

func (ev P) String() string {
	switch ev {
	case EventWorkerConstruct:
		return "EventWorkerConstruct"
	case EventWorkerDestruct:
		return "EventWorkerDestruct"
	case EventPoolError:
		return "EventPoolError"
	case EventSupervisorError:
		return "EventSupervisorError"
	case EventNoFreeWorkers:
		return "EventNoFreeWorkers"
	case EventMaxMemory:
		return "EventMaxMemory"
	case EventTTL:
		return "EventTTL"
	case EventIdleTTL:
		return "EventIdleTTL"
	case EventExecTTL:
		return "EventExecTTL"
	}
	return "Unknown event type"
}

// PoolEvent triggered by pool on different events. Pool as also trigger WorkerEvent in case of log.
type PoolEvent struct {
	// Event type, see below.
	Event P

	// Payload depends on event type, typically it's worker or error.
	Payload interface{}
}