Compare commits

..

1 Commits

Author SHA1 Message Date
Mostafa
cbcc507150 Another no-op release 2024-11-02 18:03:38 -05:00
9 changed files with 3 additions and 50 deletions

View File

@@ -5,4 +5,4 @@ maintainers:
- name: Wildcard - name: Wildcard
email: support@w6d.io email: support@w6d.io
appVersion: "1.2.0" appVersion: "1.2.0"
version: 0.2.4 version: 0.2.3

View File

@@ -1,2 +1 @@
sign: false sign: false
pages_branch: main

View File

@@ -179,8 +179,7 @@ primary_reads_enabled = true
# `random`: picks a shard at random # `random`: picks a shard at random
# `random_healthy`: picks a shard at random favoring shards with the least number of recent errors # `random_healthy`: picks a shard at random favoring shards with the least number of recent errors
# `shard_<number>`: e.g. shard_0, shard_4, etc. picks a specific shard, everytime # `shard_<number>`: e.g. shard_0, shard_4, etc. picks a specific shard, everytime
# `fail`: fails to pick up shard. (require explicit shard setup) # no_shard_specified_behavior = "shard_0"
# default_shard = "shard_0"
# So what if you wanted to implement a different hashing function, # So what if you wanted to implement a different hashing function,
# or you've already built one and you want this pooler to use it? # or you've already built one and you want this pooler to use it?

View File

@@ -881,7 +881,6 @@ where
}; };
query_router.update_pool_settings(&pool.settings); query_router.update_pool_settings(&pool.settings);
query_router.set_default_role();
// Our custom protocol loop. // Our custom protocol loop.
// We expect the client to either start a transaction with regular queries // We expect the client to either start a transaction with regular queries

View File

@@ -773,7 +773,6 @@ pub enum DefaultShard {
Shard(usize), Shard(usize),
Random, Random,
RandomHealthy, RandomHealthy,
Fail,
} }
impl Default for DefaultShard { impl Default for DefaultShard {
fn default() -> Self { fn default() -> Self {
@@ -788,7 +787,6 @@ impl serde::Serialize for DefaultShard {
} }
DefaultShard::Random => serializer.serialize_str("random"), DefaultShard::Random => serializer.serialize_str("random"),
DefaultShard::RandomHealthy => serializer.serialize_str("random_healthy"), DefaultShard::RandomHealthy => serializer.serialize_str("random_healthy"),
DefaultShard::Fail => serializer.serialize_str("fail"),
} }
} }
} }
@@ -806,7 +804,6 @@ impl<'de> serde::Deserialize<'de> for DefaultShard {
match s.as_str() { match s.as_str() {
"random" => Ok(DefaultShard::Random), "random" => Ok(DefaultShard::Random),
"random_healthy" => Ok(DefaultShard::RandomHealthy), "random_healthy" => Ok(DefaultShard::RandomHealthy),
"fail" => Ok(DefaultShard::Fail),
_ => Err(serde::de::Error::custom( _ => Err(serde::de::Error::custom(
"invalid value for no_shard_specified_behavior", "invalid value for no_shard_specified_behavior",
)), )),

View File

@@ -30,7 +30,6 @@ pub enum Error {
QueryRouterError(String), QueryRouterError(String),
InvalidShardId(usize), InvalidShardId(usize),
PreparedStatementError, PreparedStatementError,
NoShardSelected,
} }
#[derive(Clone, PartialEq, Debug)] #[derive(Clone, PartialEq, Debug)]

View File

@@ -720,7 +720,6 @@ impl ConnectionPool {
.unwrap() .unwrap()
}); });
} }
DefaultShard::Fail => return Err(Error::NoShardSelected),
}, },
}; };

View File

@@ -1061,11 +1061,6 @@ impl QueryRouter {
self.active_shard self.active_shard
} }
/// Set active_role as the default_role specified in the pool.
pub fn set_default_role(&mut self) {
self.active_role = self.pool_settings.default_role;
}
/// Get the current desired server role we should be talking to. /// Get the current desired server role we should be talking to.
pub fn role(&self) -> Option<Role> { pub fn role(&self) -> Option<Role> {
self.active_role self.active_role

View File

@@ -56,41 +56,6 @@ describe "Random Load Balancing" do
end end
end end
end end
context "when all replicas are down " do
let(:processes) { Helpers::Pgcat.single_shard_setup("sharded_db", 5, "transaction", "random", "debug", {"default_role" => "replica"}) }
it "unbans them automatically to prevent false positives in health checks that could make all replicas unavailable" do
conn = PG.connect(processes.pgcat.connection_string("sharded_db", "sharding_user"))
failed_count = 0
number_of_replicas = processes[:replicas].length
# Take down all replicas
processes[:replicas].each(&:take_down)
(number_of_replicas + 1).times do |n|
conn.async_exec("SELECT 1 + 2")
rescue
conn = PG.connect(processes.pgcat.connection_string("sharded_db", "sharding_user"))
failed_count += 1
end
expect(failed_count).to eq(number_of_replicas + 1)
failed_count = 0
# Ban_time is configured to 60 so this reset will only work
# if the replicas are unbanned automatically
processes[:replicas].each(&:reset)
number_of_replicas.times do
conn.async_exec("SELECT 1 + 2")
rescue
conn = PG.connect(processes.pgcat.connection_string("sharded_db", "sharding_user"))
failed_count += 1
end
expect(failed_count).to eq(0)
end
end
end end
describe "Least Outstanding Queries Load Balancing" do describe "Least Outstanding Queries Load Balancing" do
@@ -196,3 +161,4 @@ describe "Least Outstanding Queries Load Balancing" do
end end
end end
end end