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
This commit is contained in:
Thomas Orozco 2019-10-09 06:18:22 -07:00 committed by Facebook Github Bot
parent e8b33179a6
commit 1147c48791
3 changed files with 25 additions and 1 deletions

View File

@ -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)

View File

@ -107,6 +107,13 @@ pub enum Event {
items: BTreeMap<String, String>,
},
/// 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 {

View File

@ -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)