mirror of
https://github.com/postgresml/pgcat.git
synced 2026-03-28 03:06:29 +00:00
@@ -73,6 +73,9 @@ pub struct Client<S, T> {
|
|||||||
/// Last server process id we talked to.
|
/// Last server process id we talked to.
|
||||||
last_server_id: Option<i32>,
|
last_server_id: Option<i32>,
|
||||||
|
|
||||||
|
/// Connected to server
|
||||||
|
connected_to_server: bool,
|
||||||
|
|
||||||
/// Name of the server pool for this client (This comes from the database name in the connection string)
|
/// Name of the server pool for this client (This comes from the database name in the connection string)
|
||||||
target_pool_name: String,
|
target_pool_name: String,
|
||||||
|
|
||||||
@@ -429,6 +432,7 @@ where
|
|||||||
target_pool_name: target_pool_name.clone(),
|
target_pool_name: target_pool_name.clone(),
|
||||||
target_user_name: target_user_name.clone(),
|
target_user_name: target_user_name.clone(),
|
||||||
shutdown_event_receiver: shutdown_event_receiver,
|
shutdown_event_receiver: shutdown_event_receiver,
|
||||||
|
connected_to_server: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,6 +465,7 @@ where
|
|||||||
target_pool_name: String::from("undefined"),
|
target_pool_name: String::from("undefined"),
|
||||||
target_user_name: String::from("undefined"),
|
target_user_name: String::from("undefined"),
|
||||||
shutdown_event_receiver: shutdown_event_receiver,
|
shutdown_event_receiver: shutdown_event_receiver,
|
||||||
|
connected_to_server: false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -652,6 +657,7 @@ where
|
|||||||
// Server is assigned to the client in case the client wants to
|
// Server is assigned to the client in case the client wants to
|
||||||
// cancel a query later.
|
// cancel a query later.
|
||||||
server.claim(self.process_id, self.secret_key);
|
server.claim(self.process_id, self.secret_key);
|
||||||
|
self.connected_to_server = true;
|
||||||
|
|
||||||
// Update statistics.
|
// Update statistics.
|
||||||
if let Some(last_address_id) = self.last_address_id {
|
if let Some(last_address_id) = self.last_address_id {
|
||||||
@@ -875,6 +881,7 @@ where
|
|||||||
// The server is no longer bound to us, we can't cancel it's queries anymore.
|
// The server is no longer bound to us, we can't cancel it's queries anymore.
|
||||||
debug!("Releasing server back into the pool");
|
debug!("Releasing server back into the pool");
|
||||||
self.stats.server_idle(server.process_id(), address.id);
|
self.stats.server_idle(server.process_id(), address.id);
|
||||||
|
self.connected_to_server = false;
|
||||||
self.release();
|
self.release();
|
||||||
self.stats.client_idle(self.process_id, address.id);
|
self.stats.client_idle(self.process_id, address.id);
|
||||||
}
|
}
|
||||||
@@ -1002,7 +1009,9 @@ impl<S, T> Drop for Client<S, T> {
|
|||||||
let mut guard = self.client_server_map.lock();
|
let mut guard = self.client_server_map.lock();
|
||||||
guard.remove(&(self.process_id, self.secret_key));
|
guard.remove(&(self.process_id, self.secret_key));
|
||||||
|
|
||||||
// Update statistics.
|
// Dirty shutdown
|
||||||
|
// TODO: refactor, this is not the best way to handle state management.
|
||||||
|
if self.connected_to_server {
|
||||||
if let Some(address_id) = self.last_address_id {
|
if let Some(address_id) = self.last_address_id {
|
||||||
self.stats.client_disconnecting(self.process_id, address_id);
|
self.stats.client_disconnecting(self.process_id, address_id);
|
||||||
|
|
||||||
@@ -1010,7 +1019,6 @@ impl<S, T> Drop for Client<S, T> {
|
|||||||
self.stats.server_idle(process_id, address_id);
|
self.stats.server_idle(process_id, address_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// self.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user