@@ -101,31 +101,28 @@ fn extract_query_logs(content: &str) -> HashMap<String, Vec<QueryLog>> {
101
101
102
102
#[ derive( Debug , Clone , Default ) ]
103
103
pub struct LogsStore {
104
- logs_store : Arc < Mutex < HashMap < String , Arc < Mutex < Vec < QueryLog > > > > > > ,
104
+ logs_store : Arc < Mutex < HashMap < String , Vec < QueryLog > > > > ,
105
105
}
106
106
107
107
impl LogsStore {
108
108
pub fn remove_expired_logs ( & self ) {
109
109
let query_time_cutoff = Utc :: now ( ) - Duration :: minutes ( 10 ) ;
110
110
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) ;
117
114
}
118
115
}
119
116
120
117
pub fn merge_logs ( & self , logs_hash_map : HashMap < String , Vec < QueryLog > > ) {
121
118
let mut logs_store_guard = self . logs_store . lock ( ) . unwrap ( ) ;
122
119
for ( ip, logs) in logs_hash_map. into_iter ( ) {
123
- match logs_store_guard. get ( & ip) {
120
+ match logs_store_guard. get_mut ( & ip) {
124
121
Some ( existing_logs) => {
125
- existing_logs. lock ( ) . unwrap ( ) . extend ( logs) ;
122
+ existing_logs. extend ( logs) ;
126
123
}
127
124
None => {
128
- logs_store_guard. insert ( ip, Arc :: new ( Mutex :: new ( logs) ) ) ;
125
+ logs_store_guard. insert ( ip, logs) ;
129
126
}
130
127
}
131
128
}
@@ -143,7 +140,7 @@ impl LogsStore {
143
140
144
141
pub fn get_logs_for_ip ( & self , ip : & str ) -> Vec < QueryLog > {
145
142
match self . logs_store . lock ( ) . unwrap ( ) . get ( ip) . cloned ( ) {
146
- Some ( logs) => logs. lock ( ) . unwrap ( ) . clone ( ) ,
143
+ Some ( logs) => logs,
147
144
None => Vec :: new ( ) ,
148
145
}
149
146
}
0 commit comments