File tree Expand file tree Collapse file tree 3 files changed +43
-1
lines changed Expand file tree Collapse file tree 3 files changed +43
-1
lines changed Original file line number Diff line number Diff line change @@ -3124,6 +3124,27 @@ CASS_EXPORT void
3124
3124
cass_cluster_set_compression (CassCluster * cluster ,
3125
3125
CassCompressionType compression_type );
3126
3126
3127
+ /**
3128
+ * Sets the server-side timeout for metadata queries.
3129
+ *
3130
+ * It means that all metadata queries will be set the given timeout
3131
+ * no matter what timeout is set as a cluster default.
3132
+ * This prevents timeouts of schema queries when the schema is large
3133
+ * and the default timeout is configured as tight.
3134
+ *
3135
+ * <b>Default:</b> 2 seconds.
3136
+ *
3137
+ * @public @memberof CassCluster
3138
+ *
3139
+ * @param[in] cluster
3140
+ * @param[in] timeout_ms Request timeout in milliseconds. Pass 0 to use cluster default timeout.
3141
+ */
3142
+ CASS_EXPORT void
3143
+ cass_cluster_set_metadata_request_serverside_timeout (CassCluster * cluster ,
3144
+ cass_duration_t timeout_ms );
3145
+
3146
+
3147
+
3127
3148
/***********************************************************************************
3128
3149
*
3129
3150
* 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 @@ -1570,6 +1570,26 @@ pub unsafe extern "C" fn cass_cluster_set_num_threads_io(
1570
1570
CassError :: CASS_OK
1571
1571
}
1572
1572
1573
+ #[ unsafe( no_mangle) ]
1574
+ pub unsafe extern "C" fn cass_cluster_set_metadata_request_serverside_timeout (
1575
+ cluster : CassBorrowedExclusivePtr < CassCluster , CMut > ,
1576
+ timeout_ms : cass_duration_t ,
1577
+ ) {
1578
+ let Some ( cluster_from_raw) = BoxFFI :: as_mut_ref ( cluster) else {
1579
+ tracing:: error!(
1580
+ "Provided null cluster pointer to cass_cluster_set_metadata_request_serverside_timeout!"
1581
+ ) ;
1582
+ return ;
1583
+ } ;
1584
+
1585
+ let metadata_request_timeout = ( timeout_ms > 0 ) . then ( || Duration :: from_millis ( timeout_ms) ) ;
1586
+
1587
+ cluster_from_raw
1588
+ . session_builder
1589
+ . config
1590
+ . metadata_request_serverside_timeout = metadata_request_timeout;
1591
+ }
1592
+
1573
1593
#[ cfg( test) ]
1574
1594
mod tests {
1575
1595
use crate :: testing:: { assert_cass_error_eq, setup_tracing} ;
You can’t perform that action at this time.
0 commit comments