Centralize Postgres connection string policy across all modules
Extract connection string building into PostgresConnectionStringPolicy so all services use consistent pooling, application_name, and timeout settings. Adopt the new policy in 20+ module DataSource/ServiceCollectionExtensions classes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,10 +32,7 @@ public sealed class AnalyticsIngestionDataSource : IAsyncDisposable
|
||||
return null;
|
||||
}
|
||||
|
||||
_dataSource ??= new NpgsqlDataSourceBuilder(_connectionString!)
|
||||
{
|
||||
Name = "StellaOps.Platform.Analytics.Ingestion"
|
||||
}.Build();
|
||||
_dataSource ??= CreateDataSource(_connectionString!);
|
||||
|
||||
var connection = await _dataSource.OpenConnectionAsync(cancellationToken).ConfigureAwait(false);
|
||||
await ConfigureSessionAsync(connection, cancellationToken).ConfigureAwait(false);
|
||||
@@ -62,4 +59,17 @@ public sealed class AnalyticsIngestionDataSource : IAsyncDisposable
|
||||
|
||||
_logger.LogDebug("Configured analytics ingestion session for PostgreSQL connection.");
|
||||
}
|
||||
|
||||
private static NpgsqlDataSource CreateDataSource(string connectionString)
|
||||
{
|
||||
var connectionStringBuilder = new NpgsqlConnectionStringBuilder(connectionString)
|
||||
{
|
||||
ApplicationName = "stellaops-platform-analytics-ingestion",
|
||||
};
|
||||
|
||||
return new NpgsqlDataSourceBuilder(connectionStringBuilder.ConnectionString)
|
||||
{
|
||||
Name = "StellaOps.Platform.Analytics.Ingestion"
|
||||
}.Build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ Source of truth: `docs/implplan/SPRINT_20260130_002_Tools_csproj_remediation_sol
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| SPRINT_20260405_011-XPORT | DONE | `docs/implplan/SPRINT_20260405_011___Libraries_transport_pooling_and_attribution_hardening.md`: named analytics ingestion PostgreSQL datasource construction for runtime attribution. |
|
||||
| QA-PLATFORM-VERIFY-001 | DONE | run-002 verification captured analytics rollup/materialized-view behavior evidence; feature terminalized as `not_implemented` due missing advisory lock/LISTEN-NOTIFY parity. |
|
||||
| QA-PLATFORM-VERIFY-002 | DONE | run-001 verification passed with maintenance, endpoint paths, analytics service behavior, and Docker schema integration (`38/38` scoped tests). |
|
||||
| QA-PLATFORM-VERIFY-003 | DONE | `platform-service-aggregation-layer` verified with run-001 Tier 0/1/2 endpoint evidence and moved to `docs/features/checked/platform/`. |
|
||||
|
||||
@@ -32,10 +32,7 @@ public sealed class PlatformAnalyticsDataSource : IAsyncDisposable
|
||||
return null;
|
||||
}
|
||||
|
||||
_dataSource ??= new NpgsqlDataSourceBuilder(_connectionString!)
|
||||
{
|
||||
Name = "StellaOps.Platform.Analytics"
|
||||
}.Build();
|
||||
_dataSource ??= CreateDataSource(_connectionString!);
|
||||
|
||||
var connection = await _dataSource.OpenConnectionAsync(cancellationToken).ConfigureAwait(false);
|
||||
await ConfigureSessionAsync(connection, cancellationToken).ConfigureAwait(false);
|
||||
@@ -64,4 +61,17 @@ public sealed class PlatformAnalyticsDataSource : IAsyncDisposable
|
||||
|
||||
_logger.LogDebug("Configured analytics session for PostgreSQL connection.");
|
||||
}
|
||||
|
||||
private static NpgsqlDataSource CreateDataSource(string connectionString)
|
||||
{
|
||||
var connectionStringBuilder = new NpgsqlConnectionStringBuilder(connectionString)
|
||||
{
|
||||
ApplicationName = "stellaops-platform-analytics",
|
||||
};
|
||||
|
||||
return new NpgsqlDataSourceBuilder(connectionStringBuilder.ConnectionString)
|
||||
{
|
||||
Name = "StellaOps.Platform.Analytics"
|
||||
}.Build();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user