diff --git a/src/backend/cdb/cdbvars.c b/src/backend/cdb/cdbvars.c index b1a4fb9ae7b26befbfab7bd3283fb035bec8dde3..7608e1b5645561a4accccbba6e6d0f263ab34af1 100644 --- a/src/backend/cdb/cdbvars.c +++ b/src/backend/cdb/cdbvars.c @@ -198,6 +198,7 @@ int Gp_interconnect_min_rto = 20; int Gp_interconnect_fc_method = INTERCONNECT_FC_METHOD_LOSS; int Gp_interconnect_transmit_timeout = 3600; int Gp_interconnect_min_retries_before_timeout = 100; +int Gp_interconnect_debug_retry_interval= 10; int Gp_interconnect_hash_multiplier = 2; /* sets the size of the * hash table used by diff --git a/src/backend/cdb/motion/ic_udpifc.c b/src/backend/cdb/motion/ic_udpifc.c index fbad9afd3bd6044f03dcf1664998469fe72f9ce3..4a8a6ee0587bc216366ece914848c02adcf0b8ae 100644 --- a/src/backend/cdb/motion/ic_udpifc.c +++ b/src/backend/cdb/motion/ic_udpifc.c @@ -4899,6 +4899,14 @@ checkNetworkTimeout(ICBuffer *buf, uint64 now) * by OS for a long time. In this case, only a few times are tried. * Thus, the GUC Gp_interconnect_min_retries_before_timeout is added here. */ + if (gp_log_interconnect >= GPVARS_VERBOSITY_DEBUG && + buf->nRetry % Gp_interconnect_debug_retry_interval == 0) + { + ereport(LOG, (errmsg("resending packet (seq %d) to %s (pid %d cid %d) with %d retries in %lu seconds", + buf->pkt->seq, buf->conn->remoteHostAndPort, buf->pkt->dstPid, + buf->pkt->dstContentId, buf->nRetry, (now - buf->sentTime) / 1000 / 1000 ))); + } + if ((buf->nRetry > Gp_interconnect_min_retries_before_timeout) && (now - buf->sentTime) > ((uint64)Gp_interconnect_transmit_timeout * 1000 * 1000)) { ereport(ERROR, (errcode(ERRCODE_GP_INTERCONNECTION_ERROR), diff --git a/src/backend/utils/misc/guc_gp.c b/src/backend/utils/misc/guc_gp.c index 87dcf7a60c3d50d1fa14dd40491b951acee27c41..7f93bb09582bddf9045657d78cf25c6c14bceaae 100644 --- a/src/backend/utils/misc/guc_gp.c +++ b/src/backend/utils/misc/guc_gp.c @@ -3831,6 +3831,16 @@ struct config_int ConfigureNamesInt_gp[] = 100, 1, 4096, NULL, NULL }, + { + {"gp_interconnect_debug_retry_interval", PGC_USERSET, GP_ARRAY_TUNING, + gettext_noop("Sets the interval by retry times to record a debug message for retry."), + NULL, + GUC_GPDB_ADDOPT + }, + &Gp_interconnect_debug_retry_interval, + 10, 1, 4096, NULL, NULL + }, + { {"gp_udp_bufsize_k", PGC_BACKEND, GP_ARRAY_TUNING, gettext_noop("Sets recv buf size of UDP interconnect, for testing."), diff --git a/src/include/cdb/cdbvars.h b/src/include/cdb/cdbvars.h index 3b8a0a36136531c7c68a09d7b3e2f49e80c677ab..096740d3ea2a6be03c4aedec9d75555916e694b7 100644 --- a/src/include/cdb/cdbvars.h +++ b/src/include/cdb/cdbvars.h @@ -439,6 +439,7 @@ extern int Gp_interconnect_default_rtt; extern int Gp_interconnect_min_rto; extern int Gp_interconnect_transmit_timeout; extern int Gp_interconnect_min_retries_before_timeout; +extern int Gp_interconnect_debug_retry_interval; /* UDP recv buf size in KB. For testing */ extern int Gp_udp_bufsize_k;