File tree Expand file tree Collapse file tree 3 files changed +44
-1
lines changed Expand file tree Collapse file tree 3 files changed +44
-1
lines changed Original file line number Diff line number Diff line change @@ -3097,6 +3097,27 @@ CASS_EXPORT void
3097
3097
cass_cluster_set_compression (CassCluster * cluster ,
3098
3098
CassCompressionType compression_type );
3099
3099
3100
+ /**
3101
+ * Sets the server-side timeout for metadata queries.
3102
+ *
3103
+ * It means that all metadata queries will be set the given timeout
3104
+ * no matter what timeout is set as a cluster default.
3105
+ * This prevents timeouts of schema queries when the schema is large
3106
+ * and the default timeout is configured as tight.
3107
+ *
3108
+ * <b>Default:</b> 2 seconds.
3109
+ *
3110
+ * @public @memberof CassCluster
3111
+ *
3112
+ * @param[in] cluster
3113
+ * @param[in] timeout_ms Request timeout in milliseconds. Pass 0 to use cluster default timeout.
3114
+ */
3115
+ CASS_EXPORT void
3116
+ cass_cluster_set_metadata_request_serverside_timeout (CassCluster * cluster ,
3117
+ cass_duration_t timeout_ms );
3118
+
3119
+
3120
+
3100
3121
/***********************************************************************************
3101
3122
*
3102
3123
* Session
Original file line number Diff line number Diff line change @@ -98,8 +98,9 @@ pub mod cluster {
98
98
// cass_cluster_set_max_connections_per_host, UNIMPLEMENTED
99
99
// cass_cluster_set_max_requests_per_flush, UNIMPLEMENTED
100
100
// cass_cluster_set_max_reusable_write_objects, UNIMPLEMENTED
101
- // cass_cluster_set_monitor_reporting_interval, UNIMPLEMENTED
102
101
cass_cluster_set_max_schema_wait_time,
102
+ cass_cluster_set_metadata_request_serverside_timeout,
103
+ // cass_cluster_set_monitor_reporting_interval, UNIMPLEMENTED
103
104
// cass_cluster_set_new_request_ratio, UNIMPLEMENTED
104
105
// cass_cluster_set_no_compact, UNIMPLEMENTED
105
106
cass_cluster_set_no_speculative_execution_policy,
Original file line number Diff line number Diff line change @@ -1531,6 +1531,27 @@ pub unsafe extern "C" fn cass_cluster_set_execution_profile_n(
1531
1531
CassError :: CASS_OK
1532
1532
}
1533
1533
1534
+ #[ unsafe( no_mangle) ]
1535
+ pub unsafe extern "C" fn cass_cluster_set_metadata_request_serverside_timeout (
1536
+ cluster : CassBorrowedExclusivePtr < CassCluster , CMut > ,
1537
+ timeout_ms : cass_duration_t ,
1538
+ ) {
1539
+ let Some ( cluster_from_raw) = BoxFFI :: as_mut_ref ( cluster) else {
1540
+ tracing:: error!(
1541
+ "Provided null cluster pointer to cass_cluster_set_metadata_request_serverside_timeout!"
1542
+ ) ;
1543
+ return ;
1544
+ } ;
1545
+
1546
+ let metadata_request_timeout =
1547
+ ( timeout_ms > 0 ) . then ( || Duration :: from_millis ( timeout_ms as u64 ) ) ;
1548
+
1549
+ cluster_from_raw
1550
+ . session_builder
1551
+ . config
1552
+ . metadata_request_serverside_timeout = metadata_request_timeout;
1553
+ }
1554
+
1534
1555
#[ cfg( test) ]
1535
1556
mod tests {
1536
1557
use crate :: testing:: { assert_cass_error_eq, setup_tracing} ;
You can’t perform that action at this time.
0 commit comments