From 27ba74fbac9f367472472d9113b06c382974b927 2020-08-28 11:58:15 From: Christopher Esterhuyse Date: 2020-08-28 11:58:15 Subject: [PATCH] made the (static) logging more modular in preparation for benchmarking --- diff --git a/src/macros.rs b/src/macros.rs index afa88b8b0a305d34db5acc42a6af8f846a5d0a6c..4de21d183a57c7118fd88d946721607a92512703 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -1,16 +1,19 @@ -macro_rules! endptlog { - ($logger:expr, $($arg:tt)*) => {{ - if cfg!(feature = "endpoint_logging") { - if let Some(w) = $logger.line_writer() { - let _ = writeln!(w, $($arg)*); - } - } - }}; -} +/* +Change the definition of these macros to control the logging level statically +*/ + macro_rules! log { + (@ENDPT, $logger:expr, $($arg:tt)*) => {{ + // ignore + }}; + (@COMM_NB, $logger:expr, $($arg:tt)*) => {{ + if let Some(w) = $logger.line_writer() { + let _ = writeln!(w, $($arg)*); + } + }}; ($logger:expr, $($arg:tt)*) => {{ - if let Some(w) = $logger.line_writer() { - let _ = writeln!(w, $($arg)*); - } + if let Some(w) = $logger.line_writer() { + let _ = writeln!(w, $($arg)*); + } }}; } diff --git a/src/runtime/communication.rs b/src/runtime/communication.rs index b16e7a7537fcd8b0fd9498182f9064de078c02fc..b7a263cde8f75c4dc4d45b8bd0d958de39988d13 100644 --- a/src/runtime/communication.rs +++ b/src/runtime/communication.rs @@ -204,6 +204,7 @@ impl Connector { use SyncError as Se; ////////////////////////////////// log!( + @COMM_NB, cu.inner.logger, "~~~ SYNC called with timeout {:?}; starting round {}", &timeout, @@ -254,6 +255,7 @@ impl Connector { } } log!( + @COMM_NB, cu.inner.logger, "All {} proto components are now done with Nonsync phase", branching_proto_components.len(), @@ -284,7 +286,7 @@ impl Connector { getter_buffer: Default::default(), deadline: timeout.map(|to| Instant::now() + to), }; - log!(cu.inner.logger, "Round context structure initialized"); + log!(@COMM_NB, cu.inner.logger, "Round context structure initialized"); // Explore all native branches eagerly. Find solutions, buffer messages, etc. log!( @@ -353,6 +355,7 @@ impl Connector { // restore the invariant: !native_batches.is_empty() comm.native_batches.push(Default::default()); // Call to another big method; keep running this round until a distributed decision is reached + log!(@COMM_NB, cu.inner.logger, "Searching for decision..."); let decision = Self::sync_reach_decision( cu, comm, @@ -360,7 +363,7 @@ impl Connector { &mut branching_proto_components, &mut rctx, )?; - log!(cu.inner.logger, "Committing to decision {:?}!", &decision); + log!(@COMM_NB, cu.inner.logger, "Committing to decision {:?}!", &decision); comm.endpoint_manager.udp_endpoints_round_end(&mut *cu.inner.logger, &decision)?; // propagate the decision to children @@ -402,7 +405,7 @@ impl Connector { Ok(Some(branching_native.collapse_with(&mut *cu.inner.logger, &predicate))) } }; - log!(cu.inner.logger, "Sync round ending! Cleaning up"); + log!(@COMM_NB, cu.inner.logger, "Sync round ending! Cleaning up"); ret } diff --git a/src/runtime/endpoints.rs b/src/runtime/endpoints.rs index d0faa68fcd91726e4d9fcc11f02f0d1d4a2b2ef7..abce03511bc17e7038a05971f2fac31f116fd564 100644 --- a/src/runtime/endpoints.rs +++ b/src/runtime/endpoints.rs @@ -33,7 +33,8 @@ impl NetEndpoint { Err(_e) => return Err(Nee::BrokenNetEndpoint), } } - endptlog!( + log!( + @ENDPT, logger, "Inbox bytes [{:x?}| {:x?}]", DenseDebugHex(&self.inbox[..before_len]), @@ -45,7 +46,8 @@ impl NetEndpoint { Ok(msg) => { let msg_size = monitored.bytes_read(); self.inbox.drain(0..(msg_size.try_into().unwrap())); - endptlog!( + log!( + @ENDPT, logger, "Yielding msg. Inbox len {}-{}=={}: [{:?}]", self.inbox.len() + msg_size, @@ -123,7 +125,7 @@ impl EndpointManager { /////////////////////////////////////////// // try yield undelayed net message if let Some(tup) = self.undelayed_messages.pop() { - endptlog!(logger, "RECV undelayed_msg {:?}", &tup); + log!(@ENDPT, logger, "RECV undelayed_msg {:?}", &tup); return Ok(tup); } loop { @@ -273,7 +275,7 @@ impl EndpointManager { .try_recv(logger) .map_err(|error| TryRecvAnyNetError { error, index })? { - endptlog!(logger, "RECV polled_undrained {:?}", &msg); + log!(@ENDPT, logger, "RECV polled_undrained {:?}", &msg); if !net_endpoint.inbox.is_empty() { // there may be another message waiting! self.net_endpoint_store.polled_undrained.insert(index); @@ -304,7 +306,8 @@ impl EndpointManager { } TokenTarget::NetEndpoint { index } => { self.net_endpoint_store.polled_undrained.insert(index); - endptlog!( + log!( + @ENDPT, logger, "RECV poll event {:?} for NET endpoint index {:?}. undrained: {:?}", &event, @@ -314,7 +317,8 @@ impl EndpointManager { } TokenTarget::UdpEndpoint { index } => { self.udp_endpoint_store.polled_undrained.insert(index); - endptlog!( + log!( + @ENDPT, logger, "RECV poll event {:?} for UDP endpoint index {:?}. undrained: {:?}", &event,