Skip to content

Commit 59b976e

Browse files
committed
RUST-679 Use error references to update topology
1 parent 695e9c4 commit 59b976e

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

src/client/executor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ impl Client {
103103
Err(err) => {
104104
self.inner
105105
.topology
106-
.handle_post_handshake_error(err.clone(), &conn, server)
106+
.handle_post_handshake_error(&err, &conn, server)
107107
.await;
108108

109109
// Retryable writes are only supported by storage engines with document-level
@@ -162,7 +162,7 @@ impl Client {
162162
Err(err) => {
163163
self.inner
164164
.topology
165-
.handle_post_handshake_error(err.clone(), &conn, server)
165+
.handle_post_handshake_error(&err, &conn, server)
166166
.await;
167167

168168
let err = match retryability {

src/sdam/monitor.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ impl HeartbeatMonitor {
218218
}
219219

220220
async fn handle_error(&mut self, error: Error, topology: &Topology, server: &Server) -> bool {
221-
topology.handle_pre_handshake_error(error, server).await
221+
topology.handle_pre_handshake_error(&error, server).await
222222
}
223223
}
224224

@@ -250,9 +250,7 @@ impl UpdateMonitor {
250250
error_generation,
251251
} => {
252252
if *error_generation == self.generation_subscriber.generation() {
253-
topology
254-
.handle_pre_handshake_error(error.clone(), &server)
255-
.await;
253+
topology.handle_pre_handshake_error(&error, &server).await;
256254
}
257255
}
258256
}

src/sdam/state/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,10 @@ impl Topology {
227227

228228
/// Updates the topology based on an error that occurs before the handshake has completed during
229229
/// an operation.
230-
pub(crate) async fn handle_pre_handshake_error(&self, error: Error, server: &Server) -> bool {
230+
pub(crate) async fn handle_pre_handshake_error(&self, error: &Error, server: &Server) -> bool {
231231
let state_lock = self.state.write().await;
232232
let changed = self
233-
.mark_server_as_unknown(error, &server, state_lock)
233+
.mark_server_as_unknown(&error, &server, state_lock)
234234
.await;
235235
if changed {
236236
server.pool.clear();
@@ -241,7 +241,7 @@ impl Topology {
241241
/// Handles an error that occurs after the handshake has completed during an operation.
242242
pub(crate) async fn handle_post_handshake_error(
243243
&self,
244-
error: Error,
244+
error: &Error,
245245
conn: &Connection,
246246
server: SelectedServer,
247247
) {
@@ -255,7 +255,7 @@ impl Topology {
255255
} else if error.is_recovering() || error.is_not_master() {
256256
let state_lock = self.state.write().await;
257257

258-
self.mark_server_as_unknown(error.clone(), &server, state_lock)
258+
self.mark_server_as_unknown(error, &server, state_lock)
259259
.await;
260260

261261
let wire_version = conn
@@ -279,7 +279,7 @@ impl Topology {
279279
/// Returns whether the topology changed as a result of the update.
280280
async fn mark_server_as_unknown(
281281
&self,
282-
error: Error,
282+
error: &Error,
283283
server: &Server,
284284
state_lock: RwLockWriteGuard<'_, TopologyState>,
285285
) -> bool {

0 commit comments

Comments
 (0)