From 1147c48791bcc0a7b9965e82ac93efb3c112a808 Mon Sep 17 00:00:00 2001 From: Thomas Orozco Date: Wed, 9 Oct 2019 06:18:22 -0700 Subject: [PATCH] clienttelemetry: log peer name to blackbox Summary: This updates clienttelemetry to log the peer name to the hg blackbox (on every connection). This might make it easier to understand which host a given hg is connecting to even if we can't get to its logs (e.g. in our external sync processes, we are capturing output to match it for errors, so it's not trivial to get the remote hostname even with clienttelemetry.announceremotehostname. It's possible to retrieve the peer name with e.g.: ` hg blackbox --pattern '{"clienttelemetry": "_"}'` Reviewed By: ikostia Differential Revision: D17808834 fbshipit-source-id: 5c8afca6bd8b3bbbf14ec8d8efb3f9b1f6b25986 --- edenscm/hgext/clienttelemetry.py | 11 ++++++++++- lib/blackbox/src/event.rs | 10 ++++++++++ tests/test-clienttelemetry.t | 5 +++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/edenscm/hgext/clienttelemetry.py b/edenscm/hgext/clienttelemetry.py index 7fa76b4ca1..e85dab4667 100644 --- a/edenscm/hgext/clienttelemetry.py +++ b/edenscm/hgext/clienttelemetry.py @@ -16,7 +16,15 @@ from __future__ import absolute_import import socket import string -from edenscm.mercurial import dispatch, extensions, hg, perftrace, util, wireproto +from edenscm.mercurial import ( + blackbox, + dispatch, + extensions, + hg, + perftrace, + util, + wireproto, +) from edenscm.mercurial.i18n import _ @@ -95,6 +103,7 @@ def _peersetup(ui, peer): logargs.update(_clienttelemetrydata) peername = peer._call("clienttelemetry", **logargs) ui.log("clienttelemetry", server_realhostname=peername) + blackbox.log({"clienttelemetry": {"peername": peername}}) ann = ui.configbool("clienttelemetry", "announceremotehostname", None) if ann is None: ann = not ui.plain() and ui._isatty(ui.ferr) diff --git a/lib/blackbox/src/event.rs b/lib/blackbox/src/event.rs index 020a1631af..7dc164e908 100644 --- a/lib/blackbox/src/event.rs +++ b/lib/blackbox/src/event.rs @@ -107,6 +107,13 @@ pub enum Event { items: BTreeMap, }, + /// Client Telemetry Data + #[serde(rename = "CT", alias = "clienttelemetry")] + ClientTelemetry { + #[serde(rename = "P", alias = "peername")] + peer_name: String, + }, + /// Free-form debug message. #[serde(rename = "D", alias = "debug")] Debug { @@ -554,6 +561,9 @@ impl fmt::Display for Event { .join(" ") )?; } + ClientTelemetry { peer_name } => { + write!(f, "[clienttelemetry] peer name: {}", peer_name)? + } Debug { value } => write!(f, "[debug] {}", json_to_string(value))?, Exception { msg } => write!(f, "[command_exception] {}", msg)?, Finish { diff --git a/tests/test-clienttelemetry.t b/tests/test-clienttelemetry.t index 6c8b97590a..9921d97d18 100644 --- a/tests/test-clienttelemetry.t +++ b/tests/test-clienttelemetry.t @@ -46,3 +46,8 @@ check telemetry command: pull fullcommand: pull --config 'clienttelemetry.announceremotehostname=False' +check blackbox + $ hg blackbox --pattern '{"clienttelemetry": "_"}' + * [clienttelemetry] peer name: * (glob) + * [clienttelemetry] peer name: * (glob) + * [clienttelemetry] peer name: * (glob)