More admin (#53)

* more admin

* more admin

* show lists

* tests
This commit is contained in:
Lev Kokotov
2022-03-01 22:49:43 -08:00
committed by GitHub
parent aaeef69d59
commit d4186b7815
4 changed files with 157 additions and 16 deletions

View File

@@ -49,7 +49,8 @@ impl ConnectionPool {
for shard_idx in shard_ids {
let shard = &config.shards[&shard_idx];
let mut pools = Vec::new();
let mut replica_addresses = Vec::new();
let mut servers = Vec::new();
let mut replica_number = 0;
for server in shard.servers.iter() {
let role = match server.2.as_ref() {
@@ -65,9 +66,14 @@ impl ConnectionPool {
host: server.0.clone(),
port: server.1.to_string(),
role: role,
replica_number,
shard: shard_idx.parse::<usize>().unwrap(),
};
if role == Role::Replica {
replica_number += 1;
}
let manager = ServerPool::new(
address.clone(),
config.user.clone(),
@@ -87,11 +93,11 @@ impl ConnectionPool {
.unwrap();
pools.push(pool);
replica_addresses.push(address);
servers.push(address);
}
shards.push(pools);
addresses.push(replica_addresses);
addresses.push(servers);
banlist.push(HashMap::new());
}
@@ -337,6 +343,14 @@ impl ConnectionPool {
self.addresses[shard].len()
}
pub fn databases(&self) -> usize {
let mut databases = 0;
for shard in 0..self.shards() {
databases += self.servers(shard);
}
databases
}
pub fn pool_state(&self, shard: usize, server: usize) -> bb8::State {
self.databases[shard][server].state()
}