Skip to content

Commit 02b3464

Browse files
committed
use RuntimeOptionsView to access runtime options
1 parent 0ae8987 commit 02b3464

File tree

2 files changed

+14
-30
lines changed

2 files changed

+14
-30
lines changed

sdk/cosmos/azure_data_cosmos_driver/src/driver/cosmos_driver.rs

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::{
1313
CosmosOperation, DatabaseProperties, DatabaseReference,
1414
},
1515
options::{
16-
ConnectionPoolOptions, DiagnosticsOptions, DriverOptions, OperationOptions, RuntimeOptions,
16+
ConnectionPoolOptions, DiagnosticsOptions, DriverOptions, OperationOptions,
1717
RuntimeOptionsView, ThroughputControlGroupSnapshot,
1818
},
1919
};
@@ -696,11 +696,11 @@ impl CosmosDriver {
696696
/// Returns `None` if no applicable control group is found.
697697
pub(crate) fn effective_throughput_control_group(
698698
&self,
699-
effective_options: &RuntimeOptions,
699+
effective_options: &RuntimeOptionsView<'_>,
700700
container: &ContainerReference,
701701
) -> Option<ThroughputControlGroupSnapshot> {
702702
// First, check if an explicit group name is specified in options
703-
if let Some(group_name) = &effective_options.throughput_control_group_name {
703+
if let Some(group_name) = effective_options.throughput_control_group_name() {
704704
if let Some(group) = self
705705
.runtime
706706
.get_throughput_control_group(container, group_name)
@@ -784,21 +784,8 @@ impl CosmosDriver {
784784
}
785785
tracing::debug!("operation started");
786786

787-
// Step 1: Build the runtime options view for layered resolution and
788-
// materialize a resolved snapshot for the pipeline.
789-
let view = self.runtime_options_view(&options);
790-
let effective_options = RuntimeOptions {
791-
throughput_control_group_name: view.throughput_control_group_name().cloned(),
792-
dedicated_gateway_options: view.dedicated_gateway_options().cloned(),
793-
diagnostics_thresholds: view.diagnostics_thresholds().cloned(),
794-
end_to_end_latency_policy: view.end_to_end_latency_policy().cloned(),
795-
excluded_regions: view.excluded_regions().cloned(),
796-
read_consistency_strategy: view.read_consistency_strategy().copied(),
797-
content_response_on_write: view.content_response_on_write().copied(),
798-
max_failover_retry_count: view.max_failover_retry_count().copied(),
799-
max_session_retry_count: view.max_session_retry_count().copied(),
800-
endpoint_unavailability_ttl: view.endpoint_unavailability_ttl().copied(),
801-
};
787+
// Step 1: Build the runtime options view for layered resolution.
788+
let effective_options = self.runtime_options_view(&options);
802789

803790
// Step 2: Resolve effective throughput control group (if any).
804791
// Step 1 transport pipeline does not consume this yet.

sdk/cosmos/azure_data_cosmos_driver/src/driver/pipeline/operation_pipeline.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::{
2222
AccountEndpoint, ActivityId, CosmosOperation, CosmosResponse, CosmosResponseHeaders,
2323
Credential, SubStatusCode,
2424
},
25-
options::{OperationOptions, RuntimeOptions},
25+
options::{OperationOptions, RuntimeOptionsView},
2626
};
2727

2828
use super::{
@@ -46,7 +46,7 @@ use crate::driver::transport::{
4646
pub(crate) async fn execute_operation_pipeline(
4747
operation: &CosmosOperation,
4848
_options: &OperationOptions,
49-
effective_options: &RuntimeOptions,
49+
effective_options: &RuntimeOptionsView<'_>,
5050
location_state_store: &LocationStateStore,
5151
transport: &CosmosTransport,
5252
account_endpoint: &AccountEndpoint,
@@ -59,9 +59,10 @@ pub(crate) async fn execute_operation_pipeline(
5959
) -> azure_core::Result<CosmosResponse> {
6060
let mut diagnostics = diagnostics;
6161
let location_snapshot = location_state_store.snapshot();
62-
let max_failover_retries = effective_options.max_failover_retry_count.unwrap_or(3);
62+
let max_failover_retries = effective_options.max_failover_retry_count().copied().unwrap_or(3);
6363
let max_session_retries = effective_options
64-
.max_session_retry_count
64+
.max_session_retry_count()
65+
.copied()
6566
.unwrap_or_else(|| {
6667
// Java SDK parity: 2 for single-write, endpoints.len() for multi-write.
6768
// Uses the original endpoint count (before unavailability filtering).
@@ -80,17 +81,15 @@ pub(crate) async fn execute_operation_pipeline(
8081
location_snapshot.account.generation,
8182
location_snapshot.account.multiple_write_locations_enabled,
8283
effective_options
83-
.excluded_regions
84-
.as_ref()
84+
.excluded_regions()
8585
.map(|r| r.0.clone())
8686
.unwrap_or_default(),
8787
max_failover_retries,
8888
max_session_retries,
8989
);
9090

9191
let deadline = effective_options
92-
.end_to_end_latency_policy
93-
.as_ref()
92+
.end_to_end_latency_policy()
9493
.map(|p| Instant::now() + p.timeout());
9594

9695
let mut attempt = 0;
@@ -195,8 +194,7 @@ pub(crate) async fn execute_operation_pipeline(
195194
if let Some(d) = deadline {
196195
if Instant::now() >= d {
197196
let timeout_duration = effective_options
198-
.end_to_end_latency_policy
199-
.as_ref()
197+
.end_to_end_latency_policy()
200198
.map(|p| p.timeout())
201199
.unwrap_or_default();
202200

@@ -226,8 +224,7 @@ pub(crate) async fn execute_operation_pipeline(
226224
if let Some(d) = deadline {
227225
if Instant::now() >= d {
228226
let timeout_duration = effective_options
229-
.end_to_end_latency_policy
230-
.as_ref()
227+
.end_to_end_latency_policy()
231228
.map(|p| p.timeout())
232229
.unwrap_or_default();
233230

0 commit comments

Comments
 (0)