diff --git a/docker-compose.yml b/docker-compose.yml index b64580e76..2ad10a4a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ networks: services: postgres: - image: postgres:16.11 + image: postgres:17.8 volumes: - ./api/volumes_postgres/volumes_postgres:/var/lib/postgresql/data environment: diff --git a/infrastructure/database.tf b/infrastructure/database.tf index 362c2a8de..985796e4e 100644 --- a/infrastructure/database.tf +++ b/infrastructure/database.tf @@ -27,18 +27,38 @@ resource "aws_db_parameter_group" "postgres16_parameters" { } } +resource "aws_db_parameter_group" "postgres17_parameters" { + name = "scpca-portal-postgres17-parameters-${var.user}-${var.stage}" + description = "Postgres Parameters ${var.user} ${var.stage}" + family = "postgres17" + + parameter { + name = "deadlock_timeout" + value = "60000" # 60000ms = 60s + } + + parameter { + name = "statement_timeout" + value = "60000" # 60000ms = 60s + } + + lifecycle { + create_before_destroy = true + } +} + resource "aws_db_instance" "postgres_db" { identifier = "scpca-portal-${var.user}-${var.stage}" allocated_storage = 100 storage_type = "gp2" engine = "postgres" - engine_version = "16.12" + engine_version = "17.8" # When doing a major version upgrade it is easier # to apply changes immediately to allow for subsequent deployments. # `allow_major_version_upgrade` and `apply_immediately` # should be set to false when the old parameter group is removed. - allow_major_version_upgrade = false + allow_major_version_upgrade = true apply_immediately = true auto_minor_version_upgrade = false @@ -49,7 +69,7 @@ resource "aws_db_instance" "postgres_db" { password = var.database_password db_subnet_group_name = aws_db_subnet_group.scpca_portal.name - parameter_group_name = aws_db_parameter_group.postgres16_parameters.name + parameter_group_name = aws_db_parameter_group.postgres17_parameters.name # TF is broken, but we do want this protection in prod. # Related: https://github.com/hashicorp/terraform/issues/5417