mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-20 03:22:18 +00:00
fix(rpc): keep snapshot lease checks CI-compatible
This commit is contained in:
@@ -23,7 +23,8 @@ use rustfs_protos::{
|
|||||||
proto_gen::node_service::{
|
proto_gen::node_service::{
|
||||||
BatchGenerallyLockRequest, BatchGenerallyLockResponse, BatchReadVersionRequest, BatchReadVersionResponse,
|
BatchGenerallyLockRequest, BatchGenerallyLockResponse, BatchReadVersionRequest, BatchReadVersionResponse,
|
||||||
GenerallyLockRequest, GenerallyLockResponse, GenerallyLockResult, PingRequest, PingResponse,
|
GenerallyLockRequest, GenerallyLockResponse, GenerallyLockResult, PingRequest, PingResponse,
|
||||||
node_service_server::NodeService,
|
SnapshotLeaseMutationResponse, SnapshotLeaseReleaseRequest, SnapshotLeaseRenewRequest, SnapshotLeaseRequest,
|
||||||
|
SnapshotLeaseResponse, node_service_server::NodeService,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
@@ -104,6 +105,27 @@ impl NodeService for MinimalLockNodeService {
|
|||||||
Err(Status::unimplemented("MinimalLockNodeService only supports lock RPCs"))
|
Err(Status::unimplemented("MinimalLockNodeService only supports lock RPCs"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn acquire_snapshot_lease(
|
||||||
|
&self,
|
||||||
|
_request: Request<SnapshotLeaseRequest>,
|
||||||
|
) -> Result<Response<SnapshotLeaseResponse>, Status> {
|
||||||
|
Err(Status::unimplemented("MinimalLockNodeService only supports lock RPCs"))
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn renew_snapshot_lease(
|
||||||
|
&self,
|
||||||
|
_request: Request<SnapshotLeaseRenewRequest>,
|
||||||
|
) -> Result<Response<SnapshotLeaseResponse>, Status> {
|
||||||
|
Err(Status::unimplemented("MinimalLockNodeService only supports lock RPCs"))
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn release_snapshot_lease(
|
||||||
|
&self,
|
||||||
|
_request: Request<SnapshotLeaseReleaseRequest>,
|
||||||
|
) -> Result<Response<SnapshotLeaseMutationResponse>, Status> {
|
||||||
|
Err(Status::unimplemented("MinimalLockNodeService only supports lock RPCs"))
|
||||||
|
}
|
||||||
|
|
||||||
async fn lock(&self, request: Request<GenerallyLockRequest>) -> Result<Response<GenerallyLockResponse>, Status> {
|
async fn lock(&self, request: Request<GenerallyLockRequest>) -> Result<Response<GenerallyLockResponse>, Status> {
|
||||||
let request = request.into_inner();
|
let request = request.into_inner();
|
||||||
let args: LockRequest = match serde_json::from_str(&request.args) {
|
let args: LockRequest = match serde_json::from_str(&request.args) {
|
||||||
|
|||||||
@@ -120,19 +120,6 @@ fn snapshot_lease_ttl(ttl_ms: u64) -> Result<Duration, Status> {
|
|||||||
Ok(ttl)
|
Ok(ttl)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod snapshot_lease_tests {
|
|
||||||
use super::{SNAPSHOT_LEASE_MAX_TTL, SNAPSHOT_LEASE_MIN_TTL, snapshot_lease_ttl};
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn snapshot_lease_ttl_rejects_values_outside_server_bounds() {
|
|
||||||
assert!(snapshot_lease_ttl(4_999).is_err());
|
|
||||||
assert_eq!(snapshot_lease_ttl(5_000).unwrap(), SNAPSHOT_LEASE_MIN_TTL);
|
|
||||||
assert_eq!(snapshot_lease_ttl(300_000).unwrap(), SNAPSHOT_LEASE_MAX_TTL);
|
|
||||||
assert!(snapshot_lease_ttl(300_001).is_err());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn decode_msgpack_or_json<T: DeserializeOwned>(
|
fn decode_msgpack_or_json<T: DeserializeOwned>(
|
||||||
binary: &[u8],
|
binary: &[u8],
|
||||||
json: &str,
|
json: &str,
|
||||||
@@ -1605,8 +1592,9 @@ impl NodeService {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::{
|
use super::{
|
||||||
compat_response_json, decode_msgpack_or_json, encode_batch_read_version_response_payloads, encode_msgpack,
|
SNAPSHOT_LEASE_MAX_TTL, SNAPSHOT_LEASE_MIN_TTL, compat_response_json, decode_msgpack_or_json,
|
||||||
encode_msgpack_named, encode_read_multiple_response_payloads,
|
encode_batch_read_version_response_payloads, encode_msgpack, encode_msgpack_named,
|
||||||
|
encode_read_multiple_response_payloads, snapshot_lease_ttl,
|
||||||
};
|
};
|
||||||
use crate::storage::storage_api::ReadMultipleResp;
|
use crate::storage::storage_api::ReadMultipleResp;
|
||||||
use crate::storage::storage_api::rpc_consumer::node_service::BatchReadVersionResp;
|
use crate::storage::storage_api::rpc_consumer::node_service::BatchReadVersionResp;
|
||||||
@@ -1619,6 +1607,14 @@ mod tests {
|
|||||||
count: u32,
|
count: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn snapshot_lease_ttl_rejects_values_outside_server_bounds() {
|
||||||
|
assert!(snapshot_lease_ttl(4_999).is_err());
|
||||||
|
assert_eq!(snapshot_lease_ttl(5_000).unwrap(), SNAPSHOT_LEASE_MIN_TTL);
|
||||||
|
assert_eq!(snapshot_lease_ttl(300_000).unwrap(), SNAPSHOT_LEASE_MAX_TTL);
|
||||||
|
assert!(snapshot_lease_ttl(300_001).is_err());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn decode_msgpack_or_json_prefers_binary_payload() {
|
fn decode_msgpack_or_json_prefers_binary_payload() {
|
||||||
let payload = SamplePayload {
|
let payload = SamplePayload {
|
||||||
|
|||||||
Reference in New Issue
Block a user