Skip to content

Commit 63962a1

Browse files
authored
feat: per-queue drain concurrency variables (#53)
1 parent 148735d commit 63962a1

6 files changed

Lines changed: 179 additions & 0 deletions

File tree

main.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,15 @@ module "ecs" {
131131
drain_security_group = var.drain_security_group_id
132132
drain_container_definitions = var.drain_container_definitions
133133

134+
drain_concurrency_async_jobs = var.drain_concurrency_async_jobs
135+
drain_concurrency_async_jobs_fifo = var.drain_concurrency_async_jobs_fifo
136+
drain_concurrency_cronjobs = var.drain_concurrency_cronjobs
137+
drain_concurrency_dlq = var.drain_concurrency_dlq
138+
drain_concurrency_dlq_fifo = var.drain_concurrency_dlq_fifo
139+
drain_concurrency_events = var.drain_concurrency_events
140+
drain_concurrency_iot = var.drain_concurrency_iot
141+
drain_concurrency_webhooks = var.drain_concurrency_webhooks
142+
134143
scheduler_cpu = var.scheduler_cpu
135144
scheduler_desired_count = var.scheduler_desired_count
136145
scheduler_log_configuration = var.scheduler_log_configuration

modules/ecs/container_definitions/drain.tf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,38 @@ locals {
4242
{
4343
name = "SPACELIFT_PUBLIC_API"
4444
value = var.enable_automatic_usage_data_reporting ? local.spacelift_public_api : ""
45+
},
46+
{
47+
name = "DRAIN_CONCURRENCY_ASYNC_JOBS"
48+
value = tostring(var.drain_concurrency_async_jobs)
49+
},
50+
{
51+
name = "DRAIN_CONCURRENCY_ASYNC_JOBS_FIFO"
52+
value = tostring(var.drain_concurrency_async_jobs_fifo)
53+
},
54+
{
55+
name = "DRAIN_CONCURRENCY_CRONJOBS"
56+
value = tostring(var.drain_concurrency_cronjobs)
57+
},
58+
{
59+
name = "DRAIN_CONCURRENCY_DLQ"
60+
value = tostring(var.drain_concurrency_dlq)
61+
},
62+
{
63+
name = "DRAIN_CONCURRENCY_DLQ_FIFO"
64+
value = tostring(var.drain_concurrency_dlq_fifo)
65+
},
66+
{
67+
name = "DRAIN_CONCURRENCY_EVENTS"
68+
value = tostring(var.drain_concurrency_events)
69+
},
70+
{
71+
name = "DRAIN_CONCURRENCY_IOT"
72+
value = tostring(var.drain_concurrency_iot)
73+
},
74+
{
75+
name = "DRAIN_CONCURRENCY_WEBHOOKS"
76+
value = tostring(var.drain_concurrency_webhooks)
4577
}
4678
],
4779
var.sqs_queues != null ? [

modules/ecs/container_definitions/variables.tf

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,46 @@ variable "drain_log_configuration" {
3939
description = "Log configuration for drain container"
4040
}
4141

42+
variable "drain_concurrency_async_jobs" {
43+
type = number
44+
description = "Number of concurrent receivers for the async-jobs queue per drain pod."
45+
}
46+
47+
variable "drain_concurrency_async_jobs_fifo" {
48+
type = number
49+
description = "Number of concurrent receivers for the async-jobs.fifo queue per drain pod."
50+
}
51+
52+
variable "drain_concurrency_cronjobs" {
53+
type = number
54+
description = "Number of concurrent receivers for the cronjobs queue per drain pod."
55+
}
56+
57+
variable "drain_concurrency_dlq" {
58+
type = number
59+
description = "Number of concurrent receivers for the DLQ queue per drain pod."
60+
}
61+
62+
variable "drain_concurrency_dlq_fifo" {
63+
type = number
64+
description = "Number of concurrent receivers for the DLQ FIFO queue per drain pod."
65+
}
66+
67+
variable "drain_concurrency_events" {
68+
type = number
69+
description = "Number of concurrent receivers for the events-inbox queue per drain pod."
70+
}
71+
72+
variable "drain_concurrency_iot" {
73+
type = number
74+
description = "Number of concurrent receivers for the IoT queue per drain pod."
75+
}
76+
77+
variable "drain_concurrency_webhooks" {
78+
type = number
79+
description = "Number of concurrent receivers for the webhooks queue per drain pod."
80+
}
81+
4282
variable "scheduler_log_configuration" {
4383
type = any
4484
description = "Log configuration for scheduler container"

modules/ecs/task_definitions.tf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ module "container_definitions" {
185185
vcs_gateway_external_port = var.vcs_gateway_external_port
186186
vcs_gateway_internal_port = var.vcs_gateway_internal_port
187187

188+
# Drain per-queue concurrency
189+
drain_concurrency_async_jobs = var.drain_concurrency_async_jobs
190+
drain_concurrency_async_jobs_fifo = var.drain_concurrency_async_jobs_fifo
191+
drain_concurrency_cronjobs = var.drain_concurrency_cronjobs
192+
drain_concurrency_dlq = var.drain_concurrency_dlq
193+
drain_concurrency_dlq_fifo = var.drain_concurrency_dlq_fifo
194+
drain_concurrency_events = var.drain_concurrency_events
195+
drain_concurrency_iot = var.drain_concurrency_iot
196+
drain_concurrency_webhooks = var.drain_concurrency_webhooks
197+
188198
# Authentication
189199
admin_username = var.admin_username
190200
admin_password = var.admin_password

modules/ecs/variables.tf

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,46 @@ variable "drain_security_group" {
124124
description = "The security group to attach to the drain service."
125125
}
126126

127+
variable "drain_concurrency_async_jobs" {
128+
type = number
129+
description = "Number of concurrent receivers for the async-jobs queue per drain pod."
130+
}
131+
132+
variable "drain_concurrency_async_jobs_fifo" {
133+
type = number
134+
description = "Number of concurrent receivers for the async-jobs.fifo queue per drain pod."
135+
}
136+
137+
variable "drain_concurrency_cronjobs" {
138+
type = number
139+
description = "Number of concurrent receivers for the cronjobs queue per drain pod."
140+
}
141+
142+
variable "drain_concurrency_dlq" {
143+
type = number
144+
description = "Number of concurrent receivers for the DLQ queue per drain pod."
145+
}
146+
147+
variable "drain_concurrency_dlq_fifo" {
148+
type = number
149+
description = "Number of concurrent receivers for the DLQ FIFO queue per drain pod."
150+
}
151+
152+
variable "drain_concurrency_events" {
153+
type = number
154+
description = "Number of concurrent receivers for the events-inbox queue per drain pod."
155+
}
156+
157+
variable "drain_concurrency_iot" {
158+
type = number
159+
description = "Number of concurrent receivers for the IoT queue per drain pod."
160+
}
161+
162+
variable "drain_concurrency_webhooks" {
163+
type = number
164+
description = "Number of concurrent receivers for the webhooks queue per drain pod."
165+
}
166+
127167
variable "server_security_group" {
128168
type = string
129169
description = "The security group to attach to the server service."

variables.tf

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,54 @@ variable "drain_security_group_id" {
257257
description = "The security group ID to use for the drain service."
258258
}
259259

260+
variable "drain_concurrency_async_jobs" {
261+
type = number
262+
description = "Number of concurrent receivers for the async-jobs queue per drain pod."
263+
default = 1
264+
}
265+
266+
variable "drain_concurrency_async_jobs_fifo" {
267+
type = number
268+
description = "Number of concurrent receivers for the async-jobs.fifo queue per drain pod."
269+
default = 1
270+
}
271+
272+
variable "drain_concurrency_cronjobs" {
273+
type = number
274+
description = "Number of concurrent receivers for the cronjobs queue per drain pod."
275+
default = 1
276+
}
277+
278+
variable "drain_concurrency_dlq" {
279+
type = number
280+
description = "Number of concurrent receivers for the DLQ queue per drain pod."
281+
default = 1
282+
}
283+
284+
variable "drain_concurrency_dlq_fifo" {
285+
type = number
286+
description = "Number of concurrent receivers for the DLQ FIFO queue per drain pod."
287+
default = 1
288+
}
289+
290+
variable "drain_concurrency_events" {
291+
type = number
292+
description = "Number of concurrent receivers for the events-inbox queue per drain pod."
293+
default = 1
294+
}
295+
296+
variable "drain_concurrency_iot" {
297+
type = number
298+
description = "Number of concurrent receivers for the IoT queue per drain pod."
299+
default = 1
300+
}
301+
302+
variable "drain_concurrency_webhooks" {
303+
type = number
304+
description = "Number of concurrent receivers for the webhooks queue per drain pod."
305+
default = 1
306+
}
307+
260308
variable "scheduler_container_definition" {
261309
type = string
262310
description = "The container definition for the scheduler service. If empty, a default container definition will be used."

0 commit comments

Comments
 (0)