@@ -31,19 +31,19 @@ use proto::observe::{
3131 LogItem , Signal as PosixSignal , WorkloadType , observe_service_server,
3232} ;
3333use std:: collections:: HashMap ;
34+ use std:: sync:: Arc ;
3435use std:: time:: Duration ;
35- use std:: { ffi:: OsString , sync:: Arc } ;
3636use tokio:: sync:: mpsc;
3737use tokio:: sync:: { Mutex , broadcast:: Receiver } ;
3838use tokio_stream:: wrappers:: ReceiverStream ;
3939use tonic:: { Request , Response , Status } ;
40- use tracing:: info;
40+ use tracing:: { info, instrument } ;
4141
4242#[ derive( Debug , Clone ) ]
4343pub struct ObserveService {
44- aurae_logger : Arc < LogChannel > ,
45- cgroup_cache : Arc < Mutex < CgroupCache > > ,
46- proc_cache : Option < Arc < Mutex < ProcCache > > > ,
44+ aurae_logger : LogChannel ,
45+ cgroup_cache : CgroupCache ,
46+ proc_cache : Option < ProcCache > ,
4747 posix_signals : Option < PerfEventBroadcast < Signal > > ,
4848 sub_process_consumer_list :
4949 Arc < Mutex < HashMap < i32 , HashMap < LogChannelType , LogChannel > > > > ,
@@ -56,24 +56,20 @@ type PerfEvents = (
5656) ;
5757
5858impl ObserveService {
59- pub fn new ( aurae_logger : Arc < LogChannel > , perf_events : PerfEvents ) -> Self {
59+ pub fn new ( aurae_logger : LogChannel , perf_events : PerfEvents ) -> Self {
6060 let proc_cache = match perf_events {
61- ( Some ( f) , Some ( e) , _) => {
62- Some ( Arc :: new ( Mutex :: new ( ProcCache :: new (
63- Duration :: from_secs ( 60 ) ,
64- Duration :: from_secs ( 60 ) ,
65- f,
66- e,
67- ProcfsProcessInfo { } ,
68- ) ) ) )
69- }
61+ ( Some ( f) , Some ( e) , _) => Some ( ProcCache :: new (
62+ Duration :: from_secs ( 60 ) ,
63+ Duration :: from_secs ( 60 ) ,
64+ f,
65+ e,
66+ ProcfsProcessInfo { } ,
67+ ) ) ,
7068 _ => None ,
7169 } ;
7270 Self {
7371 aurae_logger,
74- cgroup_cache : Arc :: new ( Mutex :: new ( CgroupCache :: new (
75- OsString :: from ( "/sys/fs/cgroup" ) ,
76- ) ) ) ,
72+ cgroup_cache : CgroupCache :: new ( "/sys/fs/cgroup" . into ( ) ) ,
7773 proc_cache,
7874 posix_signals : perf_events. 2 ,
7975 sub_process_consumer_list : Arc :: new ( Mutex :: new ( HashMap :: new ( ) ) ) ,
@@ -133,7 +129,8 @@ impl ObserveService {
133129 self . aurae_logger . subscribe ( )
134130 }
135131
136- async fn get_posix_signals_stream (
132+ #[ instrument( skip( self ) ) ]
133+ fn get_posix_signals_stream (
137134 & self ,
138135 filter : Option < ( WorkloadType , String ) > ,
139136 ) -> ReceiverStream < Result < GetPosixSignalsStreamResponse , Status > > {
@@ -212,11 +209,11 @@ impl observe_service_server::ObserveService for ObserveService {
212209 & self ,
213210 request : Request < GetSubProcessStreamRequest > ,
214211 ) -> Result < Response < Self :: GetSubProcessStreamStream > , Status > {
215- let channel = LogChannelType :: try_from ( request . get_ref ( ) . channel_type )
216- . map_err ( |_| ObserveServiceError :: InvalidLogChannelType {
217- channel_type : request . get_ref ( ) . channel_type ,
218- } ) ? ;
219- let pid : i32 = request . get_ref ( ) . process_id ;
212+ let GetSubProcessStreamRequest { process_id : pid , channel_type } =
213+ request . into_inner ( ) ;
214+ let channel = LogChannelType :: try_from ( channel_type ) . map_err ( |_| {
215+ ObserveServiceError :: InvalidLogChannelType { channel_type }
216+ } ) ? ;
220217
221218 println ! ( "Requested Channel {channel:?}" ) ;
222219 println ! ( "Requested Process ID {pid}" ) ;
@@ -269,15 +266,9 @@ impl observe_service_server::ObserveService for ObserveService {
269266 ) ) ;
270267 }
271268
272- Ok ( Response :: new (
273- self . get_posix_signals_stream (
274- request
275- . into_inner ( )
276- . workload
277- . map ( |w| ( w. workload_type ( ) , w. id ) ) ,
278- )
279- . await ,
280- ) )
269+ Ok ( Response :: new ( self . get_posix_signals_stream (
270+ request. into_inner ( ) . workload . map ( |w| ( w. workload_type ( ) , w. id ) ) ,
271+ ) ) )
281272 }
282273}
283274
@@ -286,12 +277,11 @@ mod tests {
286277 use super :: ObserveService ;
287278 use crate :: logging:: log_channel:: LogChannel ;
288279 use proto:: observe:: LogChannelType ;
289- use std:: sync:: Arc ;
290280
291281 #[ tokio:: test]
292282 async fn test_register_sub_process_channel_success ( ) {
293283 let svc = ObserveService :: new (
294- Arc :: new ( LogChannel :: new ( String :: from ( "auraed" ) ) ) ,
284+ LogChannel :: new ( String :: from ( "auraed" ) ) ,
295285 ( None , None , None ) ,
296286 ) ;
297287 assert ! (
@@ -310,7 +300,7 @@ mod tests {
310300 #[ tokio:: test]
311301 async fn test_register_sub_process_channel_duplicate_error ( ) {
312302 let svc = ObserveService :: new (
313- Arc :: new ( LogChannel :: new ( String :: from ( "auraed" ) ) ) ,
303+ LogChannel :: new ( String :: from ( "auraed" ) ) ,
314304 ( None , None , None ) ,
315305 ) ;
316306 assert ! (
@@ -338,7 +328,7 @@ mod tests {
338328 #[ tokio:: test]
339329 async fn test_unregister_sub_process_channel_success ( ) {
340330 let svc = ObserveService :: new (
341- Arc :: new ( LogChannel :: new ( String :: from ( "auraed" ) ) ) ,
331+ LogChannel :: new ( String :: from ( "auraed" ) ) ,
342332 ( None , None , None ) ,
343333 ) ;
344334 assert ! (
@@ -362,7 +352,7 @@ mod tests {
362352 #[ tokio:: test]
363353 async fn test_unregister_sub_process_channel_no_pid_error ( ) {
364354 let svc = ObserveService :: new (
365- Arc :: new ( LogChannel :: new ( String :: from ( "auraed" ) ) ) ,
355+ LogChannel :: new ( String :: from ( "auraed" ) ) ,
366356 ( None , None , None ) ,
367357 ) ;
368358 assert ! (
@@ -377,7 +367,7 @@ mod tests {
377367 #[ tokio:: test]
378368 async fn test_unregister_sub_process_channel_no_channel_type_error ( ) {
379369 let svc = ObserveService :: new (
380- Arc :: new ( LogChannel :: new ( String :: from ( "auraed" ) ) ) ,
370+ LogChannel :: new ( String :: from ( "auraed" ) ) ,
381371 ( None , None , None ) ,
382372 ) ;
383373 assert ! (
0 commit comments