1diff -Naur grpc-1.41.1/src/core/lib/debug/stats_data.cc third_party_grpc_sxy/src/core/lib/debug/stats_data.cc 2--- grpc-1.41.1/src/core/lib/debug/stats_data.cc 2021-10-20 04:14:40.000000000 +0800 3+++ third_party_grpc_sxy/src/core/lib/debug/stats_data.cc 2023-04-20 14:24:54.000000000 +0800 4@@ -282,8 +282,8 @@ 5 "Number of streams terminated per TCP write", 6 "Number of flow control updates written per TCP write", 7 // NOLINTNEXTLINE(bugprone-suspicious-missing-comma) 8- "How many completion queues were checked looking for a CQ that had " 9- "requested the incoming call", 10+ ("How many completion queues were checked looking for a CQ that had " 11+ "requested the incoming call"), 12 }; 13 const int grpc_stats_table_0[65] = { 14 0, 1, 2, 3, 4, 5, 7, 9, 11, 14, 15diff -Naur grpc-1.41.1/src/core/lib/debug/trace.cc third_party_grpc_sxy/src/core/lib/debug/trace.cc 16--- grpc-1.41.1/src/core/lib/debug/trace.cc 2021-10-20 04:14:40.000000000 +0800 17+++ third_party_grpc_sxy/src/core/lib/debug/trace.cc 2023-04-20 14:24:54.000000000 +0800 18@@ -40,45 +40,51 @@ 19 TraceFlag* TraceFlagList::root_tracer_ = nullptr; 20 21 bool TraceFlagList::Set(const char* name, bool enabled) { 22- TraceFlag* t; 23- if (0 == strcmp(name, "all")) { 24- for (t = root_tracer_; t; t = t->next_tracer_) { 25+ if (0 == strlen(name)) { 26+ gpr_log(GPR_DEBUG, "No trace flags are changed"); 27+ } else if (0 == strcmp(name, "all")) { 28+ for (auto t = root_tracer_; t != nullptr; t = t->next_tracer_) { 29 t->set_enabled(enabled); 30 } 31 } else if (0 == strcmp(name, "list_tracers")) { 32 LogAllTracers(); 33 } else if (0 == strcmp(name, "refcount")) { 34- for (t = root_tracer_; t; t = t->next_tracer_) { 35+ for (auto t = root_tracer_; t != nullptr; t = t->next_tracer_) { 36 if (strstr(t->name_, "refcount") != nullptr) { 37 t->set_enabled(enabled); 38+ break; 39 } 40 } 41 } else { 42- bool found = false; 43- for (t = root_tracer_; t; t = t->next_tracer_) { 44+ for (auto t = root_tracer_; t != nullptr; t = t->next_tracer_) { 45 if (0 == strcmp(name, t->name_)) { 46 t->set_enabled(enabled); 47- found = true; 48+ return true; 49 } 50 } 51 // check for unknowns, but ignore "", to allow to GRPC_TRACE= 52- if (!found && 0 != strcmp(name, "")) { 53- gpr_log(GPR_ERROR, "Unknown trace var: '%s'", name); 54- return false; /* early return */ 55- } 56+ gpr_log(GPR_ERROR, "Unknown trace var: '%s'", name); 57+ return false; /* early return */ 58 } 59 return true; 60 } 61 62 void TraceFlagList::Add(TraceFlag* flag) { 63+ gpr_log(GPR_DEBUG, "Add tracer:\t%s", flag->name_); 64+ // prevent cycles at 'Add' flag to 'root_tracer_' 65+ for (auto t = root_tracer_; t != nullptr; t = t->next_tracer_) { 66+ // check if flag is already part of 'root_tracer_' 67+ if (t == flag) { 68+ return; 69+ } 70+ } 71 flag->next_tracer_ = root_tracer_; 72 root_tracer_ = flag; 73 } 74 75 void TraceFlagList::LogAllTracers() { 76 gpr_log(GPR_DEBUG, "available tracers:"); 77- TraceFlag* t; 78- for (t = root_tracer_; t != nullptr; t = t->next_tracer_) { 79+ for (auto t = root_tracer_; t != nullptr; t = t->next_tracer_) { 80 gpr_log(GPR_DEBUG, "\t%s", t->name_); 81 } 82 } 83