Fixed request with empty query logging/parsing.
Fixed tests.
Added more options for loggin request/response query string and headers.
Don't validate stream content if retry is not needed
ConnectionTimeout for the last attempt in strategies now is "AlmostInfinity".
Configured ConnectionTimeout is used for all request attempts.
Added accounting of request priority in AdaptiveThrottlingModule
, also changed AdaptiveThrottlingOptions
and added setting builder AdaptiveThrottlingOptionsBuilder
per request priority
Request to replica does not throw anymore if cancellation happened. Because it might be retried according to current strategy.
SetupExternalUrl
: fix incorrect configuration when TargetService
is set after call SetupReplicaBudgeting
SetupAdaptiveThrottling
and SetupReplicaBudgeting
: now statistics saved in random generated key if TargetService
and TargetEnvironment
properties is not set.
Added TryGetQueryParameter
request extension.
Fixed transformation of null AsyncClusterProvider
.
Added IAsyncClusterProvider
.
Added new logging options to ClusterClient. Now it can log all information about communication with the cluster in one line.
Rewrote WeighedReplicaOrdering
: now uses linear replica selection instead of logarithmic one.
It is approximately 30% faster.
Reduced memory traffic and added several optimizations (some .Net 6 only) around weights handling.
Added net6.0
target.
Updated EnvironmentInfo.Application
from vostok.commons.environment
module.
IContentProducer
: add new mechanic which enables user to produce content into request stream in a custom manner.
RelativeWeightsModifier
: fix bug when RelativeWeightSettings were cached in ClusterState.
RelativeWeightsModifier
: fix bug when weights changes not logged.
RelativeWeightsSettings
: add new settings.
BREAKING CHANGE. Removed Dont-Fork
header because another following mechanic was invented. It is expected that no one except drive used the header so it must be safe to remove it.
Added Unreliable-Response
header name for parallel requests races prevention in ForkingRequestStrategy
and ParallelRequestStrategy
.
Added validation for a request time budget. Now if budget is greater than int.MaxValue, the IncorrectArguments result will be returned instead of throwing an exception from Task.Delay.
Added VerdictBasedRetryPolicy
which earlier was duplicated in couple different solutions.
Added Dont-Fork
header name, which in case of not accepted response verdict instructs ForkingRequestStrategy
not to schedule fork if response has such header.
Added IReplicaFilter
interface and use given realizations from ClusterClientConfiguration
in execution module for filter given replicas from cluster provider.
RelativeWeightModifier - log only significant weights changes.
Added RelativeWeightsModifier
.
Use uri kind Relative in case of non-windows and leading slash.
Make TimeoutHeaderTransport public to easy use wherever I don't need to create full and high weight ClusterClient.
Changed IIS detection in depended project commons.environment to avoid "iisexpress" process name except correct assembly name. Related commit - https://github.com/vostok/commons.environment/commit/5cc91a9ce09e44ce0048e06f37325ff4bb3291fe
ClusterClient should not prohibit GET or HEAD requests with message body.
Extended IRequestContext
interface with ClusterProvider
, ReplicaOrdering
, and ConnectionAttempts
properties to enable their customization in request module.
Added IRetryStrategyEx
- an extended interface similar to the old IRetryStrategy but with IRequestContext and last seen ClusterResult.
Added AppendToHeaderWithQuality extension to RequestHeadersExtensions.
Fixed #14
Added Dont-Accept
header and a corresponding rejecting response criterion (used by default).
Methods and extensions that add query parameters have received an optional overload to support empty values.
Added SetupExternalUrl
to simplify configuration of clients to external APIs.
Added ConnectionAttemptsTransport
- a transport decorator responsible for retrying connection failures.
Implemented #9
Added configurable ClusterClientDefaults.ClientApplicationName
property.
Slight improvements in error logging.
Added ElapsedTimeMs
log property.
ForkingRequestStrategy now adds a Concurrency-Level
header with current parallelism value to detect forked retries on server side.
Potential fix for #6
WeighedReplicaOrdering now builds its internal segment tree in O(N) time instead of O(N * log(N)).
Added support for asynchronous request transforms.
Removed redundant trailing 's' from 'Request-Timeout' header value format.
Fixed #3
Introduced support for request bodies consisting of multiple buffer segments.
Enchancements in auxiliary headers modules.
AddRequestModule() extension is now idempotent.
Minor changes: added context-related header names, changed default request priority to null.
Initial prerelease.