Merge pull request #99 from rustfs/fix-reply

fix reply warnning
This commit is contained in:
junxiangMu
2024-10-25 09:30:24 +08:00
committed by GitHub
5 changed files with 479 additions and 1494 deletions
+3 -6
View File
@@ -287,7 +287,6 @@ impl Locker for LocalLocker {
// TODO: need add timeout mechanism // TODO: need add timeout mechanism
async fn force_unlock(&mut self, args: &LockArgs) -> Result<bool> { async fn force_unlock(&mut self, args: &LockArgs) -> Result<bool> {
let mut reply: bool;
if args.uid.is_empty() { if args.uid.is_empty() {
args.resources.iter().for_each(|resource| { args.resources.iter().for_each(|resource| {
if let Some(lris) = self.lock_map.get(resource) { if let Some(lris) = self.lock_map.get(resource) {
@@ -307,13 +306,12 @@ impl Locker for LocalLocker {
let mut idx = 0; let mut idx = 0;
let mut need_remove_resource = Vec::new(); let mut need_remove_resource = Vec::new();
let mut need_remove_map_id = Vec::new(); let mut need_remove_map_id = Vec::new();
loop { let reply = loop {
let mut map_id = args.uid.to_string(); let mut map_id = args.uid.to_string();
format_uuid(&mut map_id, &idx); format_uuid(&mut map_id, &idx);
match self.lock_uid.get(&map_id) { match self.lock_uid.get(&map_id) {
Some(resource) => match self.lock_map.get_mut(resource) { Some(resource) => match self.lock_map.get_mut(resource) {
Some(lris) => { Some(lris) => {
reply = true;
{ {
lris.retain(|lri| { lris.retain(|lri| {
if lri.uid == args.uid && (args.owner.is_empty() || lri.owner == args.owner) { if lri.uid == args.uid && (args.owner.is_empty() || lri.owner == args.owner) {
@@ -338,11 +336,10 @@ impl Locker for LocalLocker {
} }
}, },
None => { None => {
reply = idx > 0; break idx > 0;
break;
} }
} }
} };
need_remove_resource.into_iter().for_each(|resource| { need_remove_resource.into_iter().for_each(|resource| {
self.lock_map.remove(&resource); self.lock_map.remove(&resource);
}); });
+8 -6
View File
@@ -278,12 +278,14 @@ mod test {
) )
.await; .await;
let result = ns.0.write().await let result =
.get_lock(&Options { ns.0.write()
timeout: Duration::from_secs(5), .await
retry_interval: Duration::from_secs(1), .get_lock(&Options {
}) timeout: Duration::from_secs(5),
.await?; retry_interval: Duration::from_secs(1),
})
.await?;
assert_eq!(result, true); assert_eq!(result, true);
Ok(()) Ok(())
@@ -1,10 +1,9 @@
// automatically generated by the FlatBuffers compiler, do not modify // automatically generated by the FlatBuffers compiler, do not modify
// @generated // @generated
use core::mem;
use core::cmp::Ordering; use core::cmp::Ordering;
use core::mem;
extern crate flatbuffers; extern crate flatbuffers;
use self::flatbuffers::{EndianScalar, Follow}; use self::flatbuffers::{EndianScalar, Follow};
@@ -12,112 +11,114 @@ use self::flatbuffers::{EndianScalar, Follow};
#[allow(unused_imports, dead_code)] #[allow(unused_imports, dead_code)]
pub mod models { pub mod models {
use core::mem; use core::cmp::Ordering;
use core::cmp::Ordering; use core::mem;
extern crate flatbuffers; extern crate flatbuffers;
use self::flatbuffers::{EndianScalar, Follow}; use self::flatbuffers::{EndianScalar, Follow};
pub enum PingBodyOffset {} pub enum PingBodyOffset {}
#[derive(Copy, Clone, PartialEq)] #[derive(Copy, Clone, PartialEq)]
pub struct PingBody<'a> { pub struct PingBody<'a> {
pub _tab: flatbuffers::Table<'a>, pub _tab: flatbuffers::Table<'a>,
}
impl<'a> flatbuffers::Follow<'a> for PingBody<'a> {
type Inner = PingBody<'a>;
#[inline]
unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
Self { _tab: flatbuffers::Table::new(buf, loc) }
}
}
impl<'a> PingBody<'a> {
pub const VT_PAYLOAD: flatbuffers::VOffsetT = 4;
pub const fn get_fully_qualified_name() -> &'static str {
"models.PingBody"
}
#[inline]
pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
PingBody { _tab: table }
}
#[allow(unused_mut)]
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
args: &'args PingBodyArgs<'args>
) -> flatbuffers::WIPOffset<PingBody<'bldr>> {
let mut builder = PingBodyBuilder::new(_fbb);
if let Some(x) = args.payload { builder.add_payload(x); }
builder.finish()
}
#[inline]
pub fn payload(&self) -> Option<flatbuffers::Vector<'a, u8>> {
// Safety:
// Created from valid Table for this object
// which contains a valid value in this slot
unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(PingBody::VT_PAYLOAD, None)}
}
}
impl flatbuffers::Verifiable for PingBody<'_> {
#[inline]
fn run_verifier(
v: &mut flatbuffers::Verifier, pos: usize
) -> Result<(), flatbuffers::InvalidFlatbuffer> {
use self::flatbuffers::Verifiable;
v.visit_table(pos)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("payload", Self::VT_PAYLOAD, false)?
.finish();
Ok(())
}
}
pub struct PingBodyArgs<'a> {
pub payload: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
}
impl<'a> Default for PingBodyArgs<'a> {
#[inline]
fn default() -> Self {
PingBodyArgs {
payload: None,
} }
}
}
pub struct PingBodyBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { impl<'a> flatbuffers::Follow<'a> for PingBody<'a> {
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, type Inner = PingBody<'a>;
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>, #[inline]
} unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PingBodyBuilder<'a, 'b, A> { Self {
#[inline] _tab: flatbuffers::Table::new(buf, loc),
pub fn add_payload(&mut self, payload: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) { }
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(PingBody::VT_PAYLOAD, payload); }
}
#[inline]
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PingBodyBuilder<'a, 'b, A> {
let start = _fbb.start_table();
PingBodyBuilder {
fbb_: _fbb,
start_: start,
} }
}
#[inline]
pub fn finish(self) -> flatbuffers::WIPOffset<PingBody<'a>> {
let o = self.fbb_.end_table(self.start_);
flatbuffers::WIPOffset::new(o.value())
}
}
impl core::fmt::Debug for PingBody<'_> { impl<'a> PingBody<'a> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { pub const VT_PAYLOAD: flatbuffers::VOffsetT = 4;
let mut ds = f.debug_struct("PingBody");
ds.field("payload", &self.payload());
ds.finish()
}
}
} // pub mod models
pub const fn get_fully_qualified_name() -> &'static str {
"models.PingBody"
}
#[inline]
pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
PingBody { _tab: table }
}
#[allow(unused_mut)]
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
args: &'args PingBodyArgs<'args>,
) -> flatbuffers::WIPOffset<PingBody<'bldr>> {
let mut builder = PingBodyBuilder::new(_fbb);
if let Some(x) = args.payload {
builder.add_payload(x);
}
builder.finish()
}
#[inline]
pub fn payload(&self) -> Option<flatbuffers::Vector<'a, u8>> {
// Safety:
// Created from valid Table for this object
// which contains a valid value in this slot
unsafe {
self._tab
.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(PingBody::VT_PAYLOAD, None)
}
}
}
impl flatbuffers::Verifiable for PingBody<'_> {
#[inline]
fn run_verifier(v: &mut flatbuffers::Verifier, pos: usize) -> Result<(), flatbuffers::InvalidFlatbuffer> {
use self::flatbuffers::Verifiable;
v.visit_table(pos)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("payload", Self::VT_PAYLOAD, false)?
.finish();
Ok(())
}
}
pub struct PingBodyArgs<'a> {
pub payload: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
}
impl<'a> Default for PingBodyArgs<'a> {
#[inline]
fn default() -> Self {
PingBodyArgs { payload: None }
}
}
pub struct PingBodyBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
}
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PingBodyBuilder<'a, 'b, A> {
#[inline]
pub fn add_payload(&mut self, payload: flatbuffers::WIPOffset<flatbuffers::Vector<'b, u8>>) {
self.fbb_
.push_slot_always::<flatbuffers::WIPOffset<_>>(PingBody::VT_PAYLOAD, payload);
}
#[inline]
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PingBodyBuilder<'a, 'b, A> {
let start = _fbb.start_table();
PingBodyBuilder {
fbb_: _fbb,
start_: start,
}
}
#[inline]
pub fn finish(self) -> flatbuffers::WIPOffset<PingBody<'a>> {
let o = self.fbb_.end_table(self.start_);
flatbuffers::WIPOffset::new(o.value())
}
}
impl core::fmt::Debug for PingBody<'_> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let mut ds = f.debug_struct("PingBody");
ds.field("payload", &self.payload());
ds.finish()
}
}
} // pub mod models
File diff suppressed because it is too large Load Diff
+8 -6
View File
@@ -59,12 +59,14 @@ async fn test_lock_unlock_ns_lock() -> Result<(), Box<dyn Error>> {
) )
.await; .await;
assert_eq!( assert_eq!(
ns.0.write().await.get_lock(&Options { ns.0.write()
timeout: Duration::from_secs(5), .await
retry_interval: Duration::from_secs(1), .get_lock(&Options {
}) timeout: Duration::from_secs(5),
.await retry_interval: Duration::from_secs(1),
.unwrap(), })
.await
.unwrap(),
true true
); );