Skip to content

Commit 2c539ba

Browse files
authored
pkg/settings/limits: add BoundLimiter, QueueLimiter, Limiter.Limit (#1474)
1 parent d562598 commit 2c539ba

20 files changed

Lines changed: 1303 additions & 122 deletions

pkg/settings/cresettings/defaults.json

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
},
77
"PerOrg": {
88
"WorkflowDeploymentRateLimit": "every1m0s:1",
9-
"TriggerEventQueueLimit": "1000",
10-
"TriggerEventQueueTimeout": "10m0s",
119
"ZeroBalancePruningTimeout": "24h0m0s"
1210
},
1311
"PerOwner": {
@@ -16,15 +14,20 @@
1614
"PerWorkflow": {
1715
"TriggerLimit": "10",
1816
"TriggerRateLimit": "every30s:3",
19-
"TriggerRegistrationTimeout": "10s",
17+
"TriggerRegistrationsTimeout": "10s",
2018
"TriggerSubscriptionTimeout": "5s",
19+
"TriggerSubscriptionLimit": "10",
20+
"TriggerEventQueueLimit": "1000",
21+
"TriggerEventQueueTimeout": "10m0s",
2122
"CapabilityConcurrencyLimit": "3",
23+
"CapabilityCallTimeout": "8m0s",
24+
"SecretsConcurrencyLimit": "3",
2225
"ExecutionConcurrencyLimit": "10",
23-
"ExecutionTimeout": "5m0s",
26+
"ExecutionTimeout": "10m0s",
2427
"ExecutionResponseLimit": "100kb",
2528
"WASMExecutionTimeout": "1m0s",
2629
"WASMMemoryLimit": "100mb",
27-
"BinarySizeLimit": "30mb",
30+
"WASMBinarySizeLimit": "30mb",
2831
"ConsensusObservationSizeLimit": "10kb",
2932
"ConsensusCallsLimit": "2",
3033
"LogLineLimit": "1kb",

pkg/settings/cresettings/defaults.toml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ AuthRateLimit = '100rps:-1'
66

77
[PerOrg]
88
WorkflowDeploymentRateLimit = 'every1m0s:1'
9-
TriggerEventQueueLimit = '1000'
10-
TriggerEventQueueTimeout = '10m0s'
119
ZeroBalancePruningTimeout = '24h0m0s'
1210

1311
[PerOwner]
@@ -16,15 +14,20 @@ ExecutionConcurrencyLimit = '50'
1614
[PerWorkflow]
1715
TriggerLimit = '10'
1816
TriggerRateLimit = 'every30s:3'
19-
TriggerRegistrationTimeout = '10s'
17+
TriggerRegistrationsTimeout = '10s'
2018
TriggerSubscriptionTimeout = '5s'
19+
TriggerSubscriptionLimit = '10'
20+
TriggerEventQueueLimit = '1000'
21+
TriggerEventQueueTimeout = '10m0s'
2122
CapabilityConcurrencyLimit = '3'
23+
CapabilityCallTimeout = '8m0s'
24+
SecretsConcurrencyLimit = '3'
2225
ExecutionConcurrencyLimit = '10'
23-
ExecutionTimeout = '5m0s'
26+
ExecutionTimeout = '10m0s'
2427
ExecutionResponseLimit = '100kb'
2528
WASMExecutionTimeout = '1m0s'
2629
WASMMemoryLimit = '100mb'
27-
BinarySizeLimit = '30mb'
30+
WASMBinarySizeLimit = '30mb'
2831
ConsensusObservationSizeLimit = '10kb'
2932
ConsensusCallsLimit = '2'
3033
LogLineLimit = '1kb'

pkg/settings/cresettings/settings.go

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,41 @@ func init() {
1818
}
1919
}
2020

21-
var Config = cfg{
21+
// Deprecated: use Default
22+
var Config = Default
23+
24+
var Default = Schema{
2225
WorkflowLimit: Int(200),
2326
WorkflowRegistrationQueueLimit: Int(20),
2427

2528
HTTPTrigger: httpTriggerGlobal{
2629
AuthRateLimit: Rate(100, -1), //TODO
2730
},
2831

29-
PerOrg: orgs{
32+
PerOrg: Orgs{
3033
WorkflowDeploymentRateLimit: Rate(rate.Every(time.Minute), 1),
31-
TriggerEventQueueLimit: Int(1_000),
32-
TriggerEventQueueTimeout: Duration(10 * time.Minute),
3334
ZeroBalancePruningTimeout: Duration(24 * time.Hour),
3435
},
35-
PerOwner: owners{
36+
PerOwner: Owners{
3637
ExecutionConcurrencyLimit: Int(50),
3738
},
38-
PerWorkflow: workflows{
39+
PerWorkflow: Workflows{
3940
TriggerLimit: Int(10),
4041
TriggerRateLimit: Rate(rate.Every(30*time.Second), 3),
41-
TriggerRegistrationTimeout: Duration(10 * time.Second),
42+
TriggerRegistrationsTimeout: Duration(10 * time.Second),
43+
TriggerEventQueueLimit: Int(1_000),
44+
TriggerEventQueueTimeout: Duration(10 * time.Minute),
4245
TriggerSubscriptionTimeout: Duration(5 * time.Second),
46+
TriggerSubscriptionLimit: Int(10),
4347
CapabilityConcurrencyLimit: Int(3),
48+
CapabilityCallTimeout: Duration(8 * time.Minute),
49+
SecretsConcurrencyLimit: Int(3),
4450
ExecutionConcurrencyLimit: Int(10),
45-
ExecutionTimeout: Duration(5 * time.Minute),
51+
ExecutionTimeout: Duration(10 * time.Minute),
4652
ExecutionResponseLimit: Size(100 * config.KByte),
4753
WASMExecutionTimeout: Duration(60 * time.Second),
4854
WASMMemoryLimit: Size(100 * config.MByte),
49-
BinarySizeLimit: Size(30 * config.MByte),
55+
WASMBinarySizeLimit: Size(30 * config.MByte),
5056
ConsensusObservationSizeLimit: Size(10 * config.KByte),
5157
ConsensusCallsLimit: Int(2),
5258
LogLineLimit: Size(config.KByte),
@@ -90,43 +96,52 @@ var Config = cfg{
9096
},
9197
}
9298

93-
type cfg struct {
99+
type Schema struct {
94100
WorkflowLimit Setting[int] `unit:"{workflow}"`
95101
WorkflowRegistrationQueueLimit Setting[int] `unit:"{workflow}"`
96102

97103
HTTPTrigger httpTriggerGlobal
98104

99-
PerOrg orgs `scope:"org"`
100-
PerOwner owners `scope:"owner"`
101-
PerWorkflow workflows `scope:"workflow"`
105+
PerOrg Orgs `scope:"org"`
106+
PerOwner Owners `scope:"owner"`
107+
PerWorkflow Workflows `scope:"workflow"`
102108
}
103-
type orgs struct {
109+
type Orgs struct {
104110
WorkflowDeploymentRateLimit Setting[config.Rate]
105-
TriggerEventQueueLimit Setting[int] `unit:"{trigger}"`
106-
TriggerEventQueueTimeout Setting[time.Duration]
107111
ZeroBalancePruningTimeout Setting[time.Duration]
108112
}
109113

110-
type owners struct {
114+
type Owners struct {
111115
ExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
112116
}
113117

114-
type workflows struct {
115-
TriggerLimit Setting[int] `unit:"{trigger}"`
116-
TriggerRateLimit Setting[config.Rate]
117-
TriggerRegistrationTimeout Setting[time.Duration]
118-
TriggerSubscriptionTimeout Setting[time.Duration]
119-
CapabilityConcurrencyLimit Setting[int] `unit:"{capability}"`
120-
ExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
121-
ExecutionTimeout Setting[time.Duration]
122-
ExecutionResponseLimit Setting[config.Size]
123-
WASMExecutionTimeout Setting[time.Duration]
124-
WASMMemoryLimit Setting[config.Size]
125-
BinarySizeLimit Setting[config.Size]
118+
type Workflows struct {
119+
TriggerLimit Setting[int] `unit:"{trigger}"`
120+
TriggerRateLimit Setting[config.Rate]
121+
TriggerRegistrationsTimeout Setting[time.Duration]
122+
TriggerSubscriptionTimeout Setting[time.Duration]
123+
TriggerSubscriptionLimit Setting[int] `unit:"{subscription}"`
124+
TriggerEventQueueLimit Setting[int] `unit:"{trigger}"`
125+
TriggerEventQueueTimeout Setting[time.Duration]
126+
127+
CapabilityConcurrencyLimit Setting[int] `unit:"{capability}"`
128+
CapabilityCallTimeout Setting[time.Duration]
129+
130+
SecretsConcurrencyLimit Setting[int] `unit:"{secret}"`
131+
132+
ExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
133+
ExecutionTimeout Setting[time.Duration]
134+
ExecutionResponseLimit Setting[config.Size]
135+
136+
WASMExecutionTimeout Setting[time.Duration]
137+
WASMMemoryLimit Setting[config.Size]
138+
WASMBinarySizeLimit Setting[config.Size]
139+
126140
ConsensusObservationSizeLimit Setting[config.Size]
127141
ConsensusCallsLimit Setting[int] `unit:"{call}"`
128-
LogLineLimit Setting[config.Size]
129-
LogEventLimit Setting[int] `unit:"{log}"`
142+
143+
LogLineLimit Setting[config.Size]
144+
LogEventLimit Setting[int] `unit:"{log}"`
130145

131146
CRONTrigger cronTrigger
132147
HTTPTrigger httpTrigger

0 commit comments

Comments
 (0)