11use std:: sync:: Arc ;
22
33use lambda_runtime:: { run, service_fn, Error , LambdaEvent } ;
4- use mongodb:: { bson:: doc, event:: { cmap:: CmapEvent , command:: CommandEvent , sdam:: SdamEvent , EventHandler } , options:: ClientOptions , Client } ;
4+ use mongodb:: {
5+ bson:: doc,
6+ event:: { cmap:: CmapEvent , command:: CommandEvent , sdam:: SdamEvent , EventHandler } ,
7+ options:: ClientOptions ,
8+ Client ,
9+ } ;
510use serde:: { Deserialize , Serialize } ;
611use tokio:: sync:: OnceCell ;
712
@@ -40,7 +45,8 @@ impl Stats {
4045 }
4146 SdamEvent :: ServerHeartbeatFailed ( ev) => {
4247 assert ! ( !ev. awaited) ;
43- self . failed_heartbeat_durations_millis . push ( ev. duration . as_millis ( ) ) ;
48+ self . failed_heartbeat_durations_millis
49+ . push ( ev. duration . as_millis ( ) ) ;
4450 }
4551 _ => ( ) ,
4652 }
@@ -49,10 +55,12 @@ impl Stats {
4955 fn handle_command ( & mut self , event : & CommandEvent ) {
5056 match event {
5157 CommandEvent :: Succeeded ( ev) => {
52- self . command_succeeded_durations_millis . push ( ev. duration . as_millis ( ) ) ;
58+ self . command_succeeded_durations_millis
59+ . push ( ev. duration . as_millis ( ) ) ;
5360 }
5461 CommandEvent :: Failed ( ev) => {
55- self . command_failed_durations_millis . push ( ev. duration . as_millis ( ) ) ;
62+ self . command_failed_durations_millis
63+ . push ( ev. duration . as_millis ( ) ) ;
5664 }
5765 _ => ( ) ,
5866 }
@@ -62,7 +70,8 @@ impl Stats {
6270 match event {
6371 CmapEvent :: ConnectionCreated ( _) => {
6472 self . connections_open += 1 ;
65- self . max_connections_open = std:: cmp:: max ( self . connections_open , self . max_connections_open ) ;
73+ self . max_connections_open =
74+ std:: cmp:: max ( self . connections_open , self . max_connections_open ) ;
6675 }
6776 CmapEvent :: ConnectionClosed ( _) => {
6877 self . connections_open -= 1 ;
@@ -76,23 +85,31 @@ impl State {
7685 async fn new ( ) -> Self {
7786 let uri = std:: env:: var ( "MONGODB_URI" )
7887 . expect ( "MONGODB_URI must be set to the URI of the MongoDB deployment" ) ;
79- let mut options = ClientOptions :: parse ( uri) . await . expect ( "Failed to parse URI" ) ;
88+ let mut options = ClientOptions :: parse ( uri)
89+ . await
90+ . expect ( "Failed to parse URI" ) ;
8091 let stats = Arc :: new ( std:: sync:: Mutex :: new ( Stats :: new ( ) ) ) ;
8192 {
8293 let stats = Arc :: clone ( & stats) ;
83- options. sdam_event_handler = Some ( EventHandler :: callback ( move |ev| stats. lock ( ) . unwrap ( ) . handle_sdam ( & ev) ) ) ;
94+ options. sdam_event_handler = Some ( EventHandler :: callback ( move |ev| {
95+ stats. lock ( ) . unwrap ( ) . handle_sdam ( & ev)
96+ } ) ) ;
8497 }
8598 {
8699 let stats = Arc :: clone ( & stats) ;
87- options. command_event_handler = Some ( EventHandler :: callback ( move |ev| stats. lock ( ) . unwrap ( ) . handle_command ( & ev) ) ) ;
100+ options. command_event_handler = Some ( EventHandler :: callback ( move |ev| {
101+ stats. lock ( ) . unwrap ( ) . handle_command ( & ev)
102+ } ) ) ;
88103 }
89104 {
90105 let stats = Arc :: clone ( & stats) ;
91- options. cmap_event_handler = Some ( EventHandler :: callback ( move |ev| stats. lock ( ) . unwrap ( ) . handle_cmap ( & ev) ) ) ;
106+ options. cmap_event_handler = Some ( EventHandler :: callback ( move |ev| {
107+ stats. lock ( ) . unwrap ( ) . handle_cmap ( & ev)
108+ } ) ) ;
92109 }
93110
94111 let client = Client :: with_options ( options) . expect ( "Failed to create MongoDB Client" ) ;
95-
112+
96113 Self { client, stats }
97114 }
98115}
@@ -104,14 +121,13 @@ async fn get_state() -> &'static State {
104121}
105122
106123#[ derive( Deserialize ) ]
107- struct Request {
108- }
124+ struct Request { }
109125
110126async fn function_handler ( _event : LambdaEvent < Request > ) -> Result < Stats , Error > {
111127 let state = get_state ( ) . await ;
112128 let coll = state. client . database ( "faas_test" ) . collection ( "faas_test" ) ;
113- let id = coll. insert_one ( doc ! { } , None ) . await ?. inserted_id ;
114- coll. delete_one ( doc ! { "id" : id } , None ) . await ?;
129+ let id = coll. insert_one ( doc ! { } ) . await ?. inserted_id ;
130+ coll. delete_one ( doc ! { "id" : id } ) . await ?;
115131
116132 let stats = {
117133 let mut guard = state. stats . lock ( ) . unwrap ( ) ;
@@ -125,4 +141,4 @@ async fn function_handler(_event: LambdaEvent<Request>) -> Result<Stats, Error>
125141#[ tokio:: main]
126142async fn main ( ) -> Result < ( ) , Error > {
127143 run ( service_fn ( function_handler) ) . await
128- }
144+ }
0 commit comments