Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
19bd201
make POSTGRES_MINSIZE configurable
mrnicegyu11 Aug 7, 2025
b3f2daa
make POSTGRES_MAXSIZE configurable
mrnicegyu11 Aug 7, 2025
4cff733
Merge branch 'master' into 2025/change/makePOSTGRESSIZEconfigurable
mrnicegyu11 Aug 8, 2025
8ffeec1
trying to fix concurrency issue
matusdrobuliak66 Aug 8, 2025
0ecc548
trying to fix concurrency issue
matusdrobuliak66 Aug 8, 2025
faf2cf4
revert back not needed changes
matusdrobuliak66 Aug 8, 2025
3f3c3c9
just switch asyncio context
matusdrobuliak66 Aug 11, 2025
c974bb1
revert last commit
matusdrobuliak66 Aug 11, 2025
89f8227
fix
matusdrobuliak66 Aug 12, 2025
c70cdb7
Merge remote-tracking branch 'upstream/master' into 2025/change/makeP…
mrnicegyu11 Aug 13, 2025
116e556
Add clearly identifyable container hostname
mrnicegyu11 Aug 13, 2025
5cde119
set POSTGRES_MINSIZE=2 default value
mrnicegyu11 Aug 13, 2025
190b9e0
AsyncPG disable jit compilation - speed improvement
mrnicegyu11 Aug 13, 2025
2173d60
set POSTGRES_MINSIZE=2 default value
mrnicegyu11 Aug 13, 2025
98b9a1a
Merge branch 'master' into 2025/change/makePOSTGRESSIZEconfigurable
mrnicegyu11 Aug 13, 2025
2933b0e
@sanderegg change requests
mrnicegyu11 Aug 14, 2025
9ead512
Revert "Add clearly identifyable container hostname"
mrnicegyu11 Aug 14, 2025
83c606c
Merge branch 'master' into 2025/change/makePOSTGRESSIZEconfigurable
mrnicegyu11 Aug 14, 2025
0a8271f
Fix tests
mrnicegyu11 Aug 14, 2025
c8306bc
Fix tests - 2
mrnicegyu11 Aug 14, 2025
6bbc694
Merge branch 'master' into 2025/change/makePOSTGRESSIZEconfigurable
mrnicegyu11 Aug 14, 2025
11d455d
Fix tests - 3
mrnicegyu11 Aug 14, 2025
96c89ce
Fix tests - 4
mrnicegyu11 Aug 14, 2025
e783069
Merge branch 'master' into 2025/change/makePOSTGRESSIZEconfigurable
mrnicegyu11 Aug 15, 2025
a284a75
Fix rabbit itnegration test failure
mrnicegyu11 Aug 15, 2025
01cf113
Merge branch 'master' into 2025/change/makePOSTGRESSIZEconfigurable
mrnicegyu11 Aug 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .env-devel
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,8 @@ POSTGRES_HOST=postgres
POSTGRES_PASSWORD=adminadmin
POSTGRES_PORT=5432
POSTGRES_USER=scu

POSTGRES_MINSIZE=2
POSTGRES_MAXSIZE=50
POSTGRES_READONLY_PASSWORD=readonly
POSTGRES_READONLY_USER=postgres_readonly

Expand Down
10 changes: 6 additions & 4 deletions packages/service-library/src/servicelib/db_asyncpg_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ async def create_async_engine_and_database_ready(
raise_if_migration_not_ready,
)

server_settings = None
server_settings = {"jit": "off"}
if settings.POSTGRES_CLIENT_NAME:
assert isinstance(settings.POSTGRES_CLIENT_NAME, str) # nosec
server_settings = {
"application_name": settings.POSTGRES_CLIENT_NAME,
}
server_settings.update(
{
"application_name": settings.POSTGRES_CLIENT_NAME,
}
)

engine = create_async_engine(
settings.dsn_with_async_sqlalchemy,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class PostgresSettings(BaseCustomSettings):
# pool connection limits
POSTGRES_MINSIZE: Annotated[
int, Field(description="Minimum number of connections in the pool", ge=1)
] = 1
] = 2
POSTGRES_MAXSIZE: Annotated[
int, Field(description="Maximum number of connections in the pool", ge=1)
] = 50
Expand Down
30 changes: 16 additions & 14 deletions services/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ services:
api-server:
image: ${DOCKER_REGISTRY:-itisfoundation}/api-server:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "api-{{.Node.Hostname}}-{{.Task.Slot}}"
environment:
<<: *tracing_open_telemetry_environs
API_SERVER_DEV_FEATURES_ENABLED: ${API_SERVER_DEV_FEATURES_ENABLED}
Expand Down Expand Up @@ -81,7 +81,7 @@ services:
autoscaling:
image: ${DOCKER_REGISTRY:-itisfoundation}/autoscaling:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "as-{{.Node.Hostname}}-{{.Task.Slot}}"
networks:
- autoscaling_subnet
environment:
Expand Down Expand Up @@ -193,7 +193,7 @@ services:
clusters-keeper:
image: ${DOCKER_REGISTRY:-itisfoundation}/clusters-keeper:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "ck-{{.Node.Hostname}}-{{.Task.Slot}}"
networks:
- default
environment:
Expand Down Expand Up @@ -261,7 +261,7 @@ services:
director:
image: ${DOCKER_REGISTRY:-itisfoundation}/director:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "dv0-{{.Node.Hostname}}-{{.Task.Slot}}"
environment:
<<: *tracing_open_telemetry_environs
DIRECTOR_DEFAULT_MAX_MEMORY: ${DIRECTOR_DEFAULT_MAX_MEMORY}
Expand Down Expand Up @@ -308,7 +308,7 @@ services:
director-v2:
image: ${DOCKER_REGISTRY:-itisfoundation}/director-v2:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "dv2-{{.Node.Hostname}}-{{.Task.Slot}}"
environment:
<<: *tracing_open_telemetry_environs
AWS_S3_CLI_S3: ${AWS_S3_CLI_S3}
Expand Down Expand Up @@ -418,7 +418,7 @@ services:
efs-guardian:
image: ${DOCKER_REGISTRY:-itisfoundation}/efs-guardian:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "efs-{{.Node.Hostname}}-{{.Task.Slot}}"
networks:
- default
environment:
Expand Down Expand Up @@ -521,7 +521,7 @@ services:
resource-usage-tracker:
image: ${DOCKER_REGISTRY:-itisfoundation}/resource-usage-tracker:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "rut-{{.Node.Hostname}}-{{.Task.Slot}}"
networks:
- default
environment:
Expand Down Expand Up @@ -560,7 +560,7 @@ services:
dynamic-schdlr:
image: ${DOCKER_REGISTRY:-itisfoundation}/dynamic-scheduler:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "ds-{{.Node.Hostname}}-{{.Task.Slot}}"
networks:
- default
- docker-api-network
Expand Down Expand Up @@ -627,7 +627,7 @@ services:
static-webserver:
image: ${DOCKER_REGISTRY:-itisfoundation}/static-webserver:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "sw-{{.Node.Hostname}}-{{.Task.Slot}}"
environment:
SERVER_HOST: 0.0.0.0
SERVER_PORT: 8000
Expand Down Expand Up @@ -726,6 +726,8 @@ services:
POSTGRES_HOST: ${POSTGRES_HOST}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_PORT: ${POSTGRES_PORT}
POSTGRES_MINSIZE: ${POSTGRES_MINSIZE}
POSTGRES_MAXSIZE: ${POSTGRES_MAXSIZE}
POSTGRES_USER: ${POSTGRES_USER}

# WEBSERVER_DIAGNOSTICS
Expand Down Expand Up @@ -1191,7 +1193,7 @@ services:
agent:
image: ${DOCKER_REGISTRY:-itisfoundation}/agent:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "age-{{.Node.Hostname}}-{{.Task.Slot}}"
deploy:
mode: global
resources:
Expand Down Expand Up @@ -1224,7 +1226,7 @@ services:
notifications:
image: ${DOCKER_REGISTRY:-itisfoundation}/notifications:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "not-{{.Node.Hostname}}-{{.Task.Slot}}"

environment:
LOG_FILTER_MAPPING: ${LOG_FILTER_MAPPING}
Expand All @@ -1251,7 +1253,7 @@ services:
dask-sidecar:
image: ${DOCKER_REGISTRY:-itisfoundation}/dask-sidecar:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "dsid-{{.Node.Hostname}}-{{.Task.Slot}}"
deploy:
mode: global
endpoint_mode: dnsrr
Expand Down Expand Up @@ -1284,7 +1286,7 @@ services:
dask-scheduler:
image: ${DOCKER_REGISTRY:-itisfoundation}/dask-sidecar:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "dask-{{.Node.Hostname}}-{{.Task.Slot}}"
environment:
<<: *sidecar-environment
DASK_START_AS_SCHEDULER: 1
Expand All @@ -1296,7 +1298,7 @@ services:
datcore-adapter:
image: ${DOCKER_REGISTRY:-itisfoundation}/datcore-adapter:${DOCKER_IMAGE_TAG:-latest}
init: true
hostname: "{{.Node.Hostname}}-{{.Task.Slot}}"
hostname: "dat-{{.Node.Hostname}}-{{.Task.Slot}}"
networks:
- storage_subnet
environment:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,10 @@ async def check_running_services(app: FastAPI) -> None:
base_start_timestamp = datetime.now(tz=UTC)

# Get all current running services (across all products)
total_count: PositiveInt = await service_runs_db.total_service_runs_with_running_status_across_all_products(
_db_engine
total_count: PositiveInt = (
await service_runs_db.total_service_runs_with_running_status_across_all_products(
_db_engine
)
)

for offset in range(0, total_count, _BATCH_SIZE):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import asyncio
from collections.abc import Callable, Iterator
from datetime import UTC, datetime, timedelta

Expand Down Expand Up @@ -120,6 +121,9 @@ def resource_tracker_setup_db(
con.execute(resource_tracker_service_runs.delete())


_PROD_RUN_INTERVAL_SEC = 1 # in reality in production this is 5 mins


async def test_process_event_functions(
create_rabbitmq_client: Callable[[str], RabbitMQClient],
mocked_redis_server: None,
Expand All @@ -132,6 +136,7 @@ async def test_process_event_functions(

for _ in range(app_settings.RESOURCE_USAGE_TRACKER_MISSED_HEARTBEAT_COUNTER_FAIL):
await check_running_services(initialized_app)
await asyncio.sleep(_PROD_RUN_INTERVAL_SEC)
# NOTE: As we are doing check that the modified field needs to be older then some
# threshold, we need to make this field artificaly older in this test
with postgres_db.connect() as con:
Expand Down
Loading