IDataverseConnectionPool
- Namespace:
PPDS.Dataverse.Pooling - Assembly:
PPDS.Dataverse - Kind: Interface
- Implements:
IAsyncDisposable,IDisposable
Summary
Manages a pool of Dataverse connections with intelligent selection and lifecycle management. Supports multiple connection sources for load distribution across Application Users.
Members
Methods
EnsureInitializedAsync
Task EnsureInitializedAsync(CancellationToken cancellationToken)
Ensures the pool is initialized by warming all seed connections. Triggers authentication and DOP discovery. Idempotent - subsequent calls are no-ops.
-
Param
cancellationToken: Cancellation token. -
Returns: A task that completes when initialization is done.
ExecuteAsync
Task<OrganizationResponse> ExecuteAsync(OrganizationRequest request, CancellationToken cancellationToken)
Executes a request with automatic retry on service protection errors. This is a convenience method that handles connection management and throttle retry internally. The caller doesn't need to handle service protection exceptions - they are handled transparently.
-
Param
request: The organization request to execute. -
Param
cancellationToken: Cancellation token. -
Returns: The organization response.
GetActiveConnectionCount
int GetActiveConnectionCount(string sourceName)
Gets the current number of active (checked-out) connections for a source.
-
Param
sourceName: The name of the connection source. -
Returns: The number of currently active connections.
GetClient
IPooledClient GetClient(DataverseClientOptions options)
Gets a client from the pool synchronously.
-
Param
options: Optional per-request options (CallerId, etc.) -
Returns: A pooled client that returns to pool on dispose.
GetClientAsync
Task<IPooledClient> GetClientAsync(DataverseClientOptions options, string excludeConnectionName, CancellationToken cancellationToken)
Gets a client from the pool asynchronously.
-
Param
options: Optional per-request options (CallerId, etc.) -
Param
excludeConnectionName: Optional connection name to exclude from selection (useful for retry after throttle). -
Param
cancellationToken: Cancellation token. -
Returns: A pooled client that returns to pool on dispose.
GetLiveSourceDop
int GetLiveSourceDop(string sourceName)
Gets the live DOP (degrees of parallelism) for a specific connection source.
-
Param
sourceName: The name of the connection source. -
Returns: The current recommended parallelism for this source (1-52).
GetTotalRecommendedParallelism
int GetTotalRecommendedParallelism()
Gets the total recommended parallelism across all connection sources. This is the sum of live RecommendedDegreesOfParallelism for each source.
- Returns: The total recommended parallelism across all sources.
InvalidateSeed
void InvalidateSeed(string connectionName)
Invalidates the seed client for a connection, forcing fresh authentication on next use.
- Param
connectionName: The name of the connection source to invalidate.
RecordAuthFailure
void RecordAuthFailure()
Records an authentication failure for statistics.
RecordConnectionFailure
void RecordConnectionFailure()
Records a connection failure for statistics.
TryGetClientWithCapacityAsync
Task<IPooledClient> TryGetClientWithCapacityAsync(CancellationToken cancellationToken)
Tries to get a client from a source that has available DOP capacity. Returns null if all sources are at capacity or throttled.
-
Param
cancellationToken: Cancellation token. -
Returns: A pooled client if capacity is available, null otherwise.
Properties
BatchCoordinator
BatchParallelismCoordinator BatchCoordinator { get; }
Gets the batch parallelism coordinator for coordinating concurrent bulk operations.
InitializationResults
IReadOnlyList<SeedInitializationResult> InitializationResults { get; }
Gets the results of seed initialization for each connection source.
IsEnabled
bool IsEnabled { get; }
Gets a value indicating whether the pool is enabled.
SourceCount
int SourceCount { get; }
Gets the number of connection sources configured in the pool. This represents the number of Application Users/app registrations available.
Statistics
PoolStatistics Statistics { get; }
Gets pool statistics and health information.