[debug] Fine grained event tracing (#31105)

* moved-from-stats

* [debug] Fine grained event tracing

* Automated change: Fix sanity tests

* comment

* Automated change: Fix sanity tests

* iwyu

* Automated change: Fix sanity tests

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
pull/31058/head
Craig Tiller 2 years ago committed by GitHub
parent 945fe012ed
commit e8df8185e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 32
      BUILD
  2. 2
      CMakeLists.txt
  3. 2
      Makefile
  4. 6
      build_autogenerated.yaml
  5. 1
      config.m4
  6. 1
      config.w32
  7. 4
      gRPC-C++.podspec
  8. 5
      gRPC-Core.podspec
  9. 3
      grpc.gemspec
  10. 2
      grpc.gyp
  11. 3
      package.xml
  12. 89
      src/core/lib/debug/event_log.cc
  13. 81
      src/core/lib/debug/event_log.h
  14. 46
      src/core/lib/gprpp/per_cpu.h
  15. 5
      src/core/lib/iomgr/tcp_posix.cc
  16. 1
      src/python/grpcio/grpc_core_dependencies.py
  17. 1
      test/core/end2end/generate_tests.bzl
  18. 16
      test/core/end2end/tests/invoke_large_request.cc
  19. 3
      tools/doxygen/Doxyfile.c++.internal
  20. 3
      tools/doxygen/Doxyfile.core.internal

32
BUILD

@ -3097,6 +3097,37 @@ grpc_cc_library(
],
)
grpc_cc_library(
name = "per_cpu",
hdrs = [
"src/core/lib/gprpp/per_cpu.h",
],
deps = [
"exec_ctx",
"gpr",
],
)
grpc_cc_library(
name = "event_log",
srcs = [
"src/core/lib/debug/event_log.cc",
],
hdrs = [
"src/core/lib/debug/event_log.h",
],
external_deps = [
"absl/base:core_headers",
"absl/strings",
"absl/types:span",
],
deps = [
"gpr",
"gpr_public_hdrs",
"per_cpu",
],
)
grpc_cc_library(
name = "grpc_base",
srcs = [
@ -3356,6 +3387,7 @@ grpc_cc_library(
"dual_ref_counted",
"error",
"event_engine_common",
"event_log",
"exec_ctx",
"experiments",
"gpr",

2
CMakeLists.txt generated

@ -2101,6 +2101,7 @@ add_library(grpc
src/core/lib/compression/compression_internal.cc
src/core/lib/compression/message_compress.cc
src/core/lib/config/core_configuration.cc
src/core/lib/debug/event_log.cc
src/core/lib/debug/stats.cc
src/core/lib/debug/stats_data.cc
src/core/lib/debug/trace.cc
@ -2710,6 +2711,7 @@ add_library(grpc_unsecure
src/core/lib/compression/compression_internal.cc
src/core/lib/compression/message_compress.cc
src/core/lib/config/core_configuration.cc
src/core/lib/debug/event_log.cc
src/core/lib/debug/stats.cc
src/core/lib/debug/stats_data.cc
src/core/lib/debug/trace.cc

2
Makefile generated

@ -1382,6 +1382,7 @@ LIBGRPC_SRC = \
src/core/lib/compression/compression_internal.cc \
src/core/lib/compression/message_compress.cc \
src/core/lib/config/core_configuration.cc \
src/core/lib/debug/event_log.cc \
src/core/lib/debug/stats.cc \
src/core/lib/debug/stats_data.cc \
src/core/lib/debug/trace.cc \
@ -1855,6 +1856,7 @@ LIBGRPC_UNSECURE_SRC = \
src/core/lib/compression/compression_internal.cc \
src/core/lib/compression/message_compress.cc \
src/core/lib/config/core_configuration.cc \
src/core/lib/debug/event_log.cc \
src/core/lib/debug/stats.cc \
src/core/lib/debug/stats_data.cc \
src/core/lib/debug/trace.cc \

@ -726,6 +726,7 @@ libs:
- src/core/lib/compression/compression_internal.h
- src/core/lib/compression/message_compress.h
- src/core/lib/config/core_configuration.h
- src/core/lib/debug/event_log.h
- src/core/lib/debug/stats.h
- src/core/lib/debug/stats_data.h
- src/core/lib/debug/trace.h
@ -765,6 +766,7 @@ libs:
- src/core/lib/gprpp/orphanable.h
- src/core/lib/gprpp/overload.h
- src/core/lib/gprpp/packed_table.h
- src/core/lib/gprpp/per_cpu.h
- src/core/lib/gprpp/ref_counted.h
- src/core/lib/gprpp/ref_counted_ptr.h
- src/core/lib/gprpp/single_set_ptr.h
@ -1438,6 +1440,7 @@ libs:
- src/core/lib/compression/compression_internal.cc
- src/core/lib/compression/message_compress.cc
- src/core/lib/config/core_configuration.cc
- src/core/lib/debug/event_log.cc
- src/core/lib/debug/stats.cc
- src/core/lib/debug/stats_data.cc
- src/core/lib/debug/trace.cc
@ -1925,6 +1928,7 @@ libs:
- src/core/lib/compression/compression_internal.h
- src/core/lib/compression/message_compress.h
- src/core/lib/config/core_configuration.h
- src/core/lib/debug/event_log.h
- src/core/lib/debug/stats.h
- src/core/lib/debug/stats_data.h
- src/core/lib/debug/trace.h
@ -1964,6 +1968,7 @@ libs:
- src/core/lib/gprpp/orphanable.h
- src/core/lib/gprpp/overload.h
- src/core/lib/gprpp/packed_table.h
- src/core/lib/gprpp/per_cpu.h
- src/core/lib/gprpp/ref_counted.h
- src/core/lib/gprpp/ref_counted_ptr.h
- src/core/lib/gprpp/single_set_ptr.h
@ -2278,6 +2283,7 @@ libs:
- src/core/lib/compression/compression_internal.cc
- src/core/lib/compression/message_compress.cc
- src/core/lib/config/core_configuration.cc
- src/core/lib/debug/event_log.cc
- src/core/lib/debug/stats.cc
- src/core/lib/debug/stats_data.cc
- src/core/lib/debug/trace.cc

1
config.m4 generated

@ -465,6 +465,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/compression/compression_internal.cc \
src/core/lib/compression/message_compress.cc \
src/core/lib/config/core_configuration.cc \
src/core/lib/debug/event_log.cc \
src/core/lib/debug/stats.cc \
src/core/lib/debug/stats_data.cc \
src/core/lib/debug/trace.cc \

1
config.w32 generated

@ -431,6 +431,7 @@ if (PHP_GRPC != "no") {
"src\\core\\lib\\compression\\compression_internal.cc " +
"src\\core\\lib\\compression\\message_compress.cc " +
"src\\core\\lib\\config\\core_configuration.cc " +
"src\\core\\lib\\debug\\event_log.cc " +
"src\\core\\lib\\debug\\stats.cc " +
"src\\core\\lib\\debug\\stats_data.cc " +
"src\\core\\lib\\debug\\trace.cc " +

4
gRPC-C++.podspec generated

@ -677,6 +677,7 @@ Pod::Spec.new do |s|
'src/core/lib/compression/compression_internal.h',
'src/core/lib/compression/message_compress.h',
'src/core/lib/config/core_configuration.h',
'src/core/lib/debug/event_log.h',
'src/core/lib/debug/stats.h',
'src/core/lib/debug/stats_data.h',
'src/core/lib/debug/trace.h',
@ -734,6 +735,7 @@ Pod::Spec.new do |s|
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/overload.h',
'src/core/lib/gprpp/packed_table.h',
'src/core/lib/gprpp/per_cpu.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
'src/core/lib/gprpp/single_set_ptr.h',
@ -1540,6 +1542,7 @@ Pod::Spec.new do |s|
'src/core/lib/compression/compression_internal.h',
'src/core/lib/compression/message_compress.h',
'src/core/lib/config/core_configuration.h',
'src/core/lib/debug/event_log.h',
'src/core/lib/debug/stats.h',
'src/core/lib/debug/stats_data.h',
'src/core/lib/debug/trace.h',
@ -1597,6 +1600,7 @@ Pod::Spec.new do |s|
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/overload.h',
'src/core/lib/gprpp/packed_table.h',
'src/core/lib/gprpp/per_cpu.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
'src/core/lib/gprpp/single_set_ptr.h',

5
gRPC-Core.podspec generated

@ -1038,6 +1038,8 @@ Pod::Spec.new do |s|
'src/core/lib/compression/message_compress.h',
'src/core/lib/config/core_configuration.cc',
'src/core/lib/config/core_configuration.h',
'src/core/lib/debug/event_log.cc',
'src/core/lib/debug/event_log.h',
'src/core/lib/debug/stats.cc',
'src/core/lib/debug/stats.h',
'src/core/lib/debug/stats_data.cc',
@ -1156,6 +1158,7 @@ Pod::Spec.new do |s|
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/overload.h',
'src/core/lib/gprpp/packed_table.h',
'src/core/lib/gprpp/per_cpu.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
'src/core/lib/gprpp/single_set_ptr.h',
@ -2167,6 +2170,7 @@ Pod::Spec.new do |s|
'src/core/lib/compression/compression_internal.h',
'src/core/lib/compression/message_compress.h',
'src/core/lib/config/core_configuration.h',
'src/core/lib/debug/event_log.h',
'src/core/lib/debug/stats.h',
'src/core/lib/debug/stats_data.h',
'src/core/lib/debug/trace.h',
@ -2224,6 +2228,7 @@ Pod::Spec.new do |s|
'src/core/lib/gprpp/orphanable.h',
'src/core/lib/gprpp/overload.h',
'src/core/lib/gprpp/packed_table.h',
'src/core/lib/gprpp/per_cpu.h',
'src/core/lib/gprpp/ref_counted.h',
'src/core/lib/gprpp/ref_counted_ptr.h',
'src/core/lib/gprpp/single_set_ptr.h',

3
grpc.gemspec generated

@ -950,6 +950,8 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/compression/message_compress.h )
s.files += %w( src/core/lib/config/core_configuration.cc )
s.files += %w( src/core/lib/config/core_configuration.h )
s.files += %w( src/core/lib/debug/event_log.cc )
s.files += %w( src/core/lib/debug/event_log.h )
s.files += %w( src/core/lib/debug/stats.cc )
s.files += %w( src/core/lib/debug/stats.h )
s.files += %w( src/core/lib/debug/stats_data.cc )
@ -1068,6 +1070,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/gprpp/orphanable.h )
s.files += %w( src/core/lib/gprpp/overload.h )
s.files += %w( src/core/lib/gprpp/packed_table.h )
s.files += %w( src/core/lib/gprpp/per_cpu.h )
s.files += %w( src/core/lib/gprpp/ref_counted.h )
s.files += %w( src/core/lib/gprpp/ref_counted_ptr.h )
s.files += %w( src/core/lib/gprpp/single_set_ptr.h )

2
grpc.gyp generated

@ -796,6 +796,7 @@
'src/core/lib/compression/compression_internal.cc',
'src/core/lib/compression/message_compress.cc',
'src/core/lib/config/core_configuration.cc',
'src/core/lib/debug/event_log.cc',
'src/core/lib/debug/stats.cc',
'src/core/lib/debug/stats_data.cc',
'src/core/lib/debug/trace.cc',
@ -1247,6 +1248,7 @@
'src/core/lib/compression/compression_internal.cc',
'src/core/lib/compression/message_compress.cc',
'src/core/lib/config/core_configuration.cc',
'src/core/lib/debug/event_log.cc',
'src/core/lib/debug/stats.cc',
'src/core/lib/debug/stats_data.cc',
'src/core/lib/debug/trace.cc',

3
package.xml generated

@ -932,6 +932,8 @@
<file baseinstalldir="/" name="src/core/lib/compression/message_compress.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/config/core_configuration.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/config/core_configuration.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/debug/event_log.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/debug/event_log.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/debug/stats.cc" role="src" />
<file baseinstalldir="/" name="src/core/lib/debug/stats.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/debug/stats_data.cc" role="src" />
@ -1050,6 +1052,7 @@
<file baseinstalldir="/" name="src/core/lib/gprpp/orphanable.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/overload.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/packed_table.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/per_cpu.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/ref_counted.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/ref_counted_ptr.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/gprpp/single_set_ptr.h" role="src" />

@ -0,0 +1,89 @@
// Copyright 2022 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <grpc/support/port_platform.h>
#include "src/core/lib/debug/event_log.h"
#include <algorithm>
#include <atomic>
#include <cstdint>
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
#include <grpc/support/log.h>
namespace grpc_core {
std::atomic<EventLog*> EventLog::g_instance_{nullptr};
EventLog::~EventLog() {
GPR_ASSERT(g_instance_.load(std::memory_order_acquire) != this);
}
void EventLog::BeginCollection() {
for (auto& fragment : fragments_) {
MutexLock lock(&fragment.mu);
fragment.entries.clear();
}
collection_begin_ = gpr_get_cycle_counter();
g_instance_.store(this, std::memory_order_release);
Append("logging", 1);
}
std::vector<EventLog::Entry> EventLog::EndCollection(
absl::Span<const absl::string_view> wanted_events) {
Append("logging", -1);
g_instance_.store(nullptr, std::memory_order_release);
std::vector<Entry> result;
for (auto& fragment : fragments_) {
MutexLock lock(&fragment.mu);
for (const auto& entry : fragment.entries) {
if (std::find(wanted_events.begin(), wanted_events.end(), entry.event) !=
wanted_events.end()) {
result.push_back(entry);
}
}
fragment.entries.clear();
}
std::stable_sort(
result.begin(), result.end(),
[](const Entry& a, const Entry& b) { return a.when < b.when; });
return result;
}
void EventLog::AppendInternal(absl::string_view event, int64_t delta) {
auto& fragment = fragments_.this_cpu();
MutexLock lock(&fragment.mu);
fragment.entries.push_back({gpr_get_cycle_counter(), event, delta});
}
std::string EventLog::EndCollectionAndReportCsv(
absl::Span<const absl::string_view> columns) {
auto events = EndCollection(columns);
std::vector<int64_t> values(columns.size(), 0);
std::string result =
absl::StrCat("timestamp,", absl::StrJoin(columns, ","), "\n");
for (const auto& entry : events) {
auto idx = std::find(columns.begin(), columns.end(), entry.event) -
columns.begin();
values[idx] += entry.delta;
absl::StrAppend(&result, entry.when - collection_begin_, ",",
absl::StrJoin(values, ","), "\n");
}
return result;
}
} // namespace grpc_core

@ -0,0 +1,81 @@
// Copyright 2022 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef GRPC_CORE_LIB_DEBUG_EVENT_LOG_H
#define GRPC_CORE_LIB_DEBUG_EVENT_LOG_H
#include <grpc/support/port_platform.h>
#include <stdint.h>
#include <atomic>
#include <string>
#include <vector>
#include "absl/base/thread_annotations.h"
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
#include "src/core/lib/gpr/time_precise.h"
#include "src/core/lib/gprpp/per_cpu.h"
#include "src/core/lib/gprpp/sync.h"
namespace grpc_core {
// Debug utility to collect a burst of events and then later log them as a
// detailed sequence.
// Collects (timestamp, counter-name, delta) and gives back a csv with
// timestamps and accumulated values for each counter in separate columns.
class EventLog {
public:
EventLog() = default;
~EventLog();
EventLog(const EventLog&) = delete;
EventLog& operator=(const EventLog&) = delete;
void BeginCollection();
std::string EndCollectionAndReportCsv(
absl::Span<const absl::string_view> columns);
static void Append(absl::string_view event, int64_t delta) {
EventLog* log = g_instance_.load(std::memory_order_acquire);
if (log == nullptr) return;
log->AppendInternal(event, delta);
}
private:
struct Entry {
gpr_cycle_counter when;
absl::string_view event;
int64_t delta;
};
struct Fragment {
Mutex mu;
std::vector<Entry> entries ABSL_GUARDED_BY(mu);
};
void AppendInternal(absl::string_view event, int64_t delta);
std::vector<Entry> EndCollection(
absl::Span<const absl::string_view> wanted_events);
PerCpu<Fragment> fragments_;
gpr_cycle_counter collection_begin_;
static std::atomic<EventLog*> g_instance_;
};
} // namespace grpc_core
#endif // GRPC_CORE_LIB_DEBUG_EVENT_LOG_H

@ -0,0 +1,46 @@
// Copyright 2022 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef GRPC_CORE_LIB_GPRPP_PER_CPU_H
#define GRPC_CORE_LIB_GPRPP_PER_CPU_H
#include <grpc/support/port_platform.h>
#include <cstddef>
#include <memory>
#include <grpc/support/cpu.h>
#include "src/core/lib/iomgr/exec_ctx.h"
namespace grpc_core {
template <typename T>
class PerCpu {
public:
T& this_cpu() { return data_[ExecCtx::Get()->starting_cpu()]; }
T* begin() { return data_.get(); }
T* end() { return data_.get() + cpus_; }
const T* begin() const { return data_.get(); }
const T* end() const { return data_.get() + cpus_; }
private:
const size_t cpus_ = gpr_cpu_num_cores();
std::unique_ptr<T[]> data_{new T[cpus_]};
};
} // namespace grpc_core
#endif // GRPC_CORE_LIB_GPRPP_PER_CPU_H

@ -48,6 +48,7 @@
#include <grpc/support/time.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/debug/event_log.h"
#include "src/core/lib/debug/stats.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/experiments/experiments.h"
@ -1641,6 +1642,7 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
return true;
}
}
grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
tcp->bytes_counter += sent_length;
record->UpdateOffsetForBytesSent(sending_length,
static_cast<size_t>(sent_length));
@ -1758,6 +1760,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
}
GPR_ASSERT(tcp->outgoing_byte_idx == 0);
grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
tcp->bytes_counter += sent_length;
trailing = sending_length - static_cast<size_t>(sent_length);
while (trailing > 0) {
@ -1828,6 +1831,8 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
grpc_error_handle error = GRPC_ERROR_NONE;
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
grpc_core::EventLog::Append("tcp-write-outstanding", buf->length);
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
size_t i;

@ -440,6 +440,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/compression/compression_internal.cc',
'src/core/lib/compression/message_compress.cc',
'src/core/lib/config/core_configuration.cc',
'src/core/lib/debug/event_log.cc',
'src/core/lib/debug/stats.cc',
'src/core/lib/debug/stats_data.cc',
'src/core/lib/debug/trace.cc',

@ -439,6 +439,7 @@ def grpc_end2end_tests():
"//:grpc_authorization_provider",
"//test/core/compression:args_utils",
"//:grpc_http_filters",
"//:event_log",
],
)
for f, fopt in END2END_FIXTURES.items():

@ -19,6 +19,9 @@
#include <stdint.h>
#include <string.h>
#include <string>
#include <vector>
#include <grpc/byte_buffer.h>
#include <grpc/grpc.h>
#include <grpc/impl/codegen/propagation_bits.h>
@ -26,8 +29,10 @@
#include <grpc/status.h>
#include <grpc/support/log.h>
#include "src/core/lib/debug/event_log.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "test/core/end2end/cq_verifier.h"
#include "test/core/end2end/end2end_tests.h"
#include "test/core/util/test_config.h"
@ -252,7 +257,18 @@ static void test_invoke_large_request(grpc_end2end_test_config config,
}
void invoke_large_request(grpc_end2end_test_config config) {
grpc_core::EventLog event_log;
{
grpc_core::ExecCtx exec_ctx;
event_log.BeginCollection();
}
test_invoke_large_request(config, 10 * 1024 * 1024);
std::vector<std::string> events;
grpc_core::ExecCtx exec_ctx;
gpr_log(
GPR_ERROR, "event_log:\n%s",
event_log.EndCollectionAndReportCsv({"logging", "tcp-write-outstanding"})
.c_str());
}
void invoke_large_request_pre_init(void) {}

@ -1935,6 +1935,8 @@ src/core/lib/compression/message_compress.cc \
src/core/lib/compression/message_compress.h \
src/core/lib/config/core_configuration.cc \
src/core/lib/config/core_configuration.h \
src/core/lib/debug/event_log.cc \
src/core/lib/debug/event_log.h \
src/core/lib/debug/stats.cc \
src/core/lib/debug/stats.h \
src/core/lib/debug/stats_data.cc \
@ -2053,6 +2055,7 @@ src/core/lib/gprpp/notification.h \
src/core/lib/gprpp/orphanable.h \
src/core/lib/gprpp/overload.h \
src/core/lib/gprpp/packed_table.h \
src/core/lib/gprpp/per_cpu.h \
src/core/lib/gprpp/ref_counted.h \
src/core/lib/gprpp/ref_counted_ptr.h \
src/core/lib/gprpp/single_set_ptr.h \

@ -1723,6 +1723,8 @@ src/core/lib/compression/message_compress.cc \
src/core/lib/compression/message_compress.h \
src/core/lib/config/core_configuration.cc \
src/core/lib/config/core_configuration.h \
src/core/lib/debug/event_log.cc \
src/core/lib/debug/event_log.h \
src/core/lib/debug/stats.cc \
src/core/lib/debug/stats.h \
src/core/lib/debug/stats_data.cc \
@ -1843,6 +1845,7 @@ src/core/lib/gprpp/notification.h \
src/core/lib/gprpp/orphanable.h \
src/core/lib/gprpp/overload.h \
src/core/lib/gprpp/packed_table.h \
src/core/lib/gprpp/per_cpu.h \
src/core/lib/gprpp/ref_counted.h \
src/core/lib/gprpp/ref_counted_ptr.h \
src/core/lib/gprpp/single_set_ptr.h \

Loading…
Cancel
Save