test(e2e): classify failed lock nodes as quorum loss (#5513)

This commit is contained in:
Zhengchao An
2026-08-01 18:56:57 +08:00
committed by GitHub
parent bc41e567a5
commit b0bb0bbd3a
2 changed files with 6 additions and 8 deletions
-4
View File
@@ -300,9 +300,6 @@ path = "junit.xml"
# negative-path siblings of each family stay in as regression guards. # negative-path siblings of each family stay in as regression guards.
# * rustfs#4843 — over-limit archive entry paths hard-reject the whole # * rustfs#4843 — over-limit archive entry paths hard-reject the whole
# archive even under ignore-errors semantics. # archive even under ignore-errors semantics.
# * rustfs#4846 — distributed-lock quorum tests misclassify as timeout
# under parallel load (multi-node in-process clusters; natural home is
# ci-7's nightly cluster lane).
[profile.e2e-full] [profile.e2e-full]
default-filter = """ default-filter = """
package(e2e_test) package(e2e_test)
@@ -311,7 +308,6 @@ default-filter = """
& !test(/^replication_extension_test::/) & !test(/^replication_extension_test::/)
& !test(/^multipart_auth_test::test_signed_put_object_extract_skips_invalid_entry_when_ignore_errors_enabled$/) & !test(/^multipart_auth_test::test_signed_put_object_extract_skips_invalid_entry_when_ignore_errors_enabled$/)
& !test(/^snowball_auto_extract_test::tests::snowball_auto_extract_(ignores_invalid_entries_when_requested|supports_standard_headers_with_combined_extract_options)$/) & !test(/^snowball_auto_extract_test::tests::snowball_auto_extract_(ignores_invalid_entries_when_requested|supports_standard_headers_with_combined_extract_options)$/)
& !test(/^reliant::lock::test_distributed_lock_(2_nodes_grpc_read_survives_failed_node|4_nodes_grpc_read_write_quorum_split_with_two_failed_nodes)$/)
""" """
fail-fast = false fail-fast = false
+6 -4
View File
@@ -15,9 +15,7 @@
use super::{grpc_lock_client::GrpcLockClient, grpc_lock_server::spawn_lock_server}; use super::{grpc_lock_client::GrpcLockClient, grpc_lock_server::spawn_lock_server};
use rustfs_lock::client::{LockClient, local::LocalClient}; use rustfs_lock::client::{LockClient, local::LocalClient};
use rustfs_lock::{ use rustfs_lock::{GlobalLockManager, LockInfo, LockRequest, LockResponse, LockStats, LockType, NamespaceLock, ObjectKey};
GlobalLockManager, LockError, LockInfo, LockRequest, LockResponse, LockStats, LockType, NamespaceLock, ObjectKey,
};
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration; use std::time::Duration;
@@ -35,7 +33,11 @@ struct FailingClient;
#[async_trait::async_trait] #[async_trait::async_trait]
impl rustfs_lock::LockClient for FailingClient { impl rustfs_lock::LockClient for FailingClient {
async fn acquire_lock(&self, _request: &rustfs_lock::LockRequest) -> rustfs_lock::Result<LockResponse> { async fn acquire_lock(&self, _request: &rustfs_lock::LockRequest) -> rustfs_lock::Result<LockResponse> {
Err(LockError::internal("simulated gRPC node failure")) // Match RemoteClient's transport-failure response so the coordinator can count this node toward quorum loss.
Ok(LockResponse::failure(
"Remote lock RPC failed: simulated gRPC node failure",
Duration::ZERO,
))
} }
async fn release(&self, _lock_id: &rustfs_lock::LockId) -> rustfs_lock::Result<bool> { async fn release(&self, _lock_id: &rustfs_lock::LockId) -> rustfs_lock::Result<bool> {