Add option for logging keepalive pings
This commit is contained in:
parent
3dca4a3213
commit
edc2a6b988
|
|
@ -66,6 +66,7 @@ some configuration as environment variables that can be set.
|
|||
- http2_stream_state - traces all http2 stream state mutations.
|
||||
- http1 - traces HTTP/1.x operations performed by gRPC
|
||||
- inproc - traces the in-process transport
|
||||
- keepalive - traces keepalive pings
|
||||
- flowctl - traces http2 flow control
|
||||
- lrs_lb - traces lrs LB policy
|
||||
- op_failure - traces error information when failure is pushed onto a
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ static int g_default_max_ping_strikes = DEFAULT_MAX_PING_STRIKES;
|
|||
|
||||
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
|
||||
grpc_core::TraceFlag grpc_http_trace(false, "http");
|
||||
grpc_core::TraceFlag grpc_keepalive_trace(false, "keepalive");
|
||||
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
||||
"chttp2_refcount");
|
||||
|
||||
|
|
@ -2771,6 +2772,7 @@ static void init_keepalive_ping(void* arg, grpc_error* error) {
|
|||
|
||||
static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
||||
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
||||
|
||||
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
||||
if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
|
||||
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
||||
|
|
@ -2817,7 +2819,8 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|||
if (t->channelz_socket != nullptr) {
|
||||
t->channelz_socket->RecordKeepaliveSent();
|
||||
}
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
||||
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
|
||||
}
|
||||
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
||||
|
|
@ -2840,7 +2843,8 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|||
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
||||
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
||||
if (error == GRPC_ERROR_NONE) {
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
||||
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
|
||||
}
|
||||
if (!t->keepalive_ping_started) {
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "src/core/lib/transport/transport.h"
|
||||
|
||||
extern grpc_core::TraceFlag grpc_http_trace;
|
||||
extern grpc_core::TraceFlag grpc_keepalive_trace;
|
||||
extern grpc_core::TraceFlag grpc_trace_http2_stream_state;
|
||||
extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount;
|
||||
extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
||||
#include "src/core/ext/transport/chttp2/transport/context_list.h"
|
||||
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
||||
|
||||
|
|
@ -54,7 +55,8 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
|
|||
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
||||
/* ping already in-flight: wait */
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace)) {
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
||||
gpr_log(GPR_INFO, "%s: Ping delayed [%p]: already pinging",
|
||||
t->is_client ? "CLIENT" : "SERVER", t->peer_string);
|
||||
}
|
||||
|
|
@ -64,7 +66,8 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
|
|||
t->ping_policy.max_pings_without_data != 0) {
|
||||
/* need to receive something of substance before sending a ping again */
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace)) {
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
||||
gpr_log(GPR_INFO, "%s: Ping delayed [%p]: too many recent pings: %d/%d",
|
||||
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
||||
t->ping_state.pings_before_data_required,
|
||||
|
|
@ -85,7 +88,8 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
|
|||
if (next_allowed_ping > now) {
|
||||
/* not enough elapsed time between successive pings */
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace)) {
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
||||
gpr_log(GPR_INFO,
|
||||
"%s: Ping delayed [%p]: not enough time elapsed since last ping. "
|
||||
" Last ping %f: Next ping %f: Now %f",
|
||||
|
|
@ -116,7 +120,8 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
|
|||
GRPC_STATS_INC_HTTP2_PINGS_SENT();
|
||||
t->ping_state.last_ping_sent_time = now;
|
||||
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace)) {
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
||||
gpr_log(GPR_INFO, "%s: Ping sent [%s]: %d/%d",
|
||||
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
||||
t->ping_state.pings_before_data_required,
|
||||
|
|
|
|||
Loading…
Reference in New Issue