Skip to content

Commit 1ed820a

Browse files
committed
remove 1 layer of lock
1 parent 4898069 commit 1ed820a

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

src/logs_store.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,31 +101,28 @@ fn extract_query_logs(content: &str) -> HashMap<String, Vec<QueryLog>> {
101101

102102
#[derive(Debug, Clone, Default)]
103103
pub struct LogsStore {
104-
logs_store: Arc<Mutex<HashMap<String, Arc<Mutex<Vec<QueryLog>>>>>>,
104+
logs_store: Arc<Mutex<HashMap<String, Vec<QueryLog>>>>,
105105
}
106106

107107
impl LogsStore {
108108
pub fn remove_expired_logs(&self) {
109109
let query_time_cutoff = Utc::now() - Duration::minutes(10);
110110

111-
let logs_store_guard = self.logs_store.lock().unwrap();
112-
for query_logs in logs_store_guard.values() {
113-
query_logs
114-
.lock()
115-
.unwrap()
116-
.retain(|q| q.query_time > query_time_cutoff);
111+
let mut logs_store_guard = self.logs_store.lock().unwrap();
112+
for query_logs in logs_store_guard.values_mut() {
113+
query_logs.retain(|q| q.query_time > query_time_cutoff);
117114
}
118115
}
119116

120117
pub fn merge_logs(&self, logs_hash_map: HashMap<String, Vec<QueryLog>>) {
121118
let mut logs_store_guard = self.logs_store.lock().unwrap();
122119
for (ip, logs) in logs_hash_map.into_iter() {
123-
match logs_store_guard.get(&ip) {
120+
match logs_store_guard.get_mut(&ip) {
124121
Some(existing_logs) => {
125-
existing_logs.lock().unwrap().extend(logs);
122+
existing_logs.extend(logs);
126123
}
127124
None => {
128-
logs_store_guard.insert(ip, Arc::new(Mutex::new(logs)));
125+
logs_store_guard.insert(ip, logs);
129126
}
130127
}
131128
}
@@ -143,7 +140,7 @@ impl LogsStore {
143140

144141
pub fn get_logs_for_ip(&self, ip: &str) -> Vec<QueryLog> {
145142
match self.logs_store.lock().unwrap().get(ip).cloned() {
146-
Some(logs) => logs.lock().unwrap().clone(),
143+
Some(logs) => logs,
147144
None => Vec::new(),
148145
}
149146
}

0 commit comments

Comments
 (0)