Rate limit enable option

This commit is contained in:
Dominik Werder
2022-12-06 21:45:46 +01:00
parent 53bbd2b99c
commit b3bd344f5d
6 changed files with 43 additions and 22 deletions

View File

@@ -1250,6 +1250,7 @@ impl CaConn {
do_wake_again = true;
}
CaMsgTy::EventAddRes(k) => {
trace!("got EventAddRes: {k:?}");
self.stats.caconn_recv_data_inc();
let res = Self::handle_event_add_res(self, k, tsnow);
let ts2 = Instant::now();

View File

@@ -259,7 +259,7 @@ impl FindIocStream {
}
let mut nb = crate::netbuf::NetBuf::new(2048);
nb.put_slice(&buf[..ec as usize])?;
let mut msgs = vec![];
let mut msgs = Vec::new();
let mut accounted = 0;
loop {
let n = nb.data().len();
@@ -291,10 +291,14 @@ impl FindIocStream {
if msgs.len() != 2 {
info!("expect always 2 commands in the response, instead got {}", msgs.len());
}
let mut res = vec![];
for m in &msgs {
debug!("m: {m:?}");
}
let mut res = Vec::new();
for msg in msgs.iter() {
match &msg.ty {
CaMsgTy::SearchRes(k) => {
info!("SearchRes: {k:?}");
let addr = SocketAddrV4::new(src_addr, k.tcp_port);
res.push((SearchId(k.id), addr));
}
@@ -330,8 +334,8 @@ impl FindIocStream {
fn create_in_flight(&mut self) {
let bid = BATCH_ID.fetch_add(1, Ordering::AcqRel);
let bid = BatchId(bid as u32);
let mut sids = vec![];
let mut chs = vec![];
let mut sids = Vec::new();
let mut chs = Vec::new();
while chs.len() < self.channels_per_batch && self.channels_input.len() > 0 {
let sid = SEARCH_ID2.fetch_add(1, Ordering::AcqRel);
let sid = SearchId(sid as u32);
@@ -344,14 +348,14 @@ impl FindIocStream {
channels: chs,
tgts: self.tgts.iter().enumerate().map(|x| x.0).collect(),
sids,
done: vec![],
done: Vec::new(),
};
self.in_flight.insert(bid.clone(), batch);
self.batch_send_queue.push_back(bid);
}
fn handle_result(&mut self, src: SocketAddrV4, res: Vec<(SearchId, SocketAddrV4)>) {
let mut sids_remove = vec![];
let mut sids_remove = Vec::new();
for (sid, addr) in res {
self.sids_done.insert(sid.clone(), ());
match self.bid_by_sid.get(&sid) {
@@ -420,9 +424,9 @@ impl FindIocStream {
fn clear_timed_out(&mut self) {
let now = Instant::now();
let mut bids = vec![];
let mut sids = vec![];
let mut chns = vec![];
let mut bids = Vec::new();
let mut sids = Vec::new();
let mut chns = Vec::new();
for (bid, batch) in &mut self.in_flight {
if now.duration_since(batch.ts_beg) > self.batch_run_max {
self.bids_timed_out.insert(bid.clone(), ());

View File

@@ -46,6 +46,7 @@ async fn resolve_address(addr_str: &str) -> Result<SocketAddr, Error> {
}
pub async fn ca_search(opts: ListenFromFileOpts) -> Result<(), Error> {
info!("ca_search begin");
let facility = "scylla";
let opts = parse_config(opts.config).await?;
let d = Database {
@@ -74,7 +75,7 @@ pub async fn ca_search(opts: ListenFromFileOpts) -> Result<(), Error> {
.await
.unwrap()
};
let mut addrs = vec![];
let mut addrs = Vec::new();
for s in &opts.search {
match resolve_address(s).await {
Ok(addr) => {
@@ -87,7 +88,7 @@ pub async fn ca_search(opts: ListenFromFileOpts) -> Result<(), Error> {
}
}
let gw_addrs = {
let mut gw_addrs = vec![];
let mut gw_addrs = Vec::new();
for s in &opts.search_blacklist {
match resolve_address(s).await {
Ok(addr) => {