Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TLS Session Keys export for GRPC C++ #26812

Merged
merged 48 commits into from Jan 18, 2022
Merged

Conversation

Vignesh2208
Copy link
Contributor

@Vignesh2208 Vignesh2208 commented Jul 28, 2021

This PR adds the TLS Key export logic for GRPC C++ which allows decrypting packet captures using tools like wireshark.

Tracking Github issue: #24944

Relevant GRFC: grpc/proposal#252

@ctiller, @ZhenLian, @yihuazhang


This change is Reviewable

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Jul 28, 2021

CLA Signed

The committers are authorized under a signed CLA.

include/grpcpp/security/tls_credentials_options.h Outdated Show resolved Hide resolved
include/grpcpp/security/tls_credentials_options.h Outdated Show resolved Hide resolved
test/cpp/end2end/tls_key_export_test.cc Outdated Show resolved Hide resolved
@Vignesh2208 Vignesh2208 marked this pull request as ready for review July 29, 2021 17:52
@Vignesh2208 Vignesh2208 added release notes: no Indicates if PR should not be in release notes lang/c++ labels Jul 29, 2021
Copy link
Contributor

@ZhenLian ZhenLian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for making the change! I left some high-level comments.
This PR contains multiple file changes, and it spans multiple layers. Since this is a newly added feature and no one is using it, it is probably better reviewed if we can divide it into several PRs, instead of one huge PR(for example, we can have the TSI changes first, and then the core changes, and then C++ changes on top of it).
Feel free to let me know if you have any questions/concerns. Thank you so much!

include/grpc/grpc_security_constants.h Outdated Show resolved Hide resolved
include/grpc/grpc_security_constants.h Outdated Show resolved Hide resolved
include/grpcpp/security/tls_credentials_options.h Outdated Show resolved Hide resolved
include/grpcpp/security/tls_credentials_options.h Outdated Show resolved Hide resolved
include/grpcpp/security/tls_credentials_options.h Outdated Show resolved Hide resolved
src/core/lib/security/credentials/tls/tls_credentials.cc Outdated Show resolved Hide resolved
src/core/tsi/ssl_transport_security.h Outdated Show resolved Hide resolved
/// A Wrapper class which enables key logging to the a file based on specified
/// configuration. A unique KeyLogger Container is bound to each Tls
/// security connector.
class TlsKeyLoggerContainer
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit confused on why we need a TlsKeyLoggerContainer in addition to TlsKeyLogger...can we make them into one class?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have renamed the classes here for more clarity. There are two classes: TlsKeyLogFileWriter and TlsKeyLogger. TlsKeyLogger is bound to a tls key log configuration i.e on object of TlsKeyLogger exists for each specified configuration. On the other hand one instance of TlsKeyLogFileWriter exists for each unique log file. So a two TlsKeyLoggers may share the same TlsKeyLogFileWriter instance if their key log configuration specifies the same log file. Having two separate classes like this allows the key log configuration (with addition of new entries) to grow over time while the TlsKeyLogFileWriter class can remain unchanged.

Copy link
Contributor Author

@Vignesh2208 Vignesh2208 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 7 of 42 files reviewed, 21 unresolved discussions (waiting on @ctiller, @markdroth, @yihuazhang, and @ZhenLian)


src/core/lib/security/security_connector/tls/tls_security_connector.h, line 29 at r10 (raw file):

Previously, ZhenLian wrote…

I think using is slightly preferable to typedef, per https://google.github.io/styleguide/cppguide.html#Aliases

Done.


src/core/tsi/ssl_transport_security.h, line 84 at r7 (raw file):

Previously, ZhenLian wrote…

Same question as grpc_tls_session_key_logger: what was the reason for defining these opaque types here? Sometimes we need to do that because certain header files have to be pure C, and can't include C++ classes. In those scenarios, we have to define an opaque type, and do a type casting later on.

But this header file doesn't belong to that directory. Can we just use the C++ types instead?
(there are a few places following the similar patterns here...)

This is removed in latest commit. I used the C++ types.


src/core/tsi/ssl_transport_security.h, line 84 at r10 (raw file):

Previously, ZhenLian wrote…

I still felt like it was unnecessary to re-declare a new type for this here. I was not sure why the ssl_session_cache implementation was doing that way, but if there were some caveats, we'd better document them out.
Can we try to use its original type(TlsSessionKeyLogger) directly in this file, to avoid doing type-casting, please? If something goes wrong, we at least know the reason why we should design structs like this, which could be useful for our future implementations.
Thank you so much!

This is removed in latest commit. I used the C++ types.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 49 at r10 (raw file):

Previously, ZhenLian wrote…

What is the reason that we define Ref() and Unref() for TlsSessionKeyLoggerCache? Can its caller use grpc_core::RefCountedPtr<TlsSessionKeyLoggerCache> directly?

TlsSessionKeyLogger class needs TlsSessionKeyLoggerCache object to be alive for its lifetime. So it calls Ref() and Unref() methods on the cache object. We can change TlsSessionKeyLoggerCache into a RefCounted class as well. However, the object of the cache will be a static global instance. Currently its defined in ssl_key_logging.cc as per snipper below. If we are to make TlsSessionKeyLoggerCache as a RefCounted object, we would have to declare static grpc_core::RefcountedPtr<::tsi::TlsSessionKeyLoggerCache> g_cache_instance_. However this is not allowed because a static global object cannot have non default destructor. So to keep it simple, I defined TlsSessionKeyLoggerCache as a normal class with explicit Ref, Unref methods.

Code snippet:

static ::tsi::TlsSessionKeyLoggerCache* g_cache_instance_

src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 77 at r10 (raw file):

Previously, ZhenLian wrote…

Can we just define this class as a nested class of TlsSessionKeyLoggerCache?

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 84 at r10 (raw file):

Previously, ZhenLian wrote…

I think TlsSessionKeyLogger needs TlsSessionKeyLoggerCache to always be available through its lifetime? If so, should we use grpc_core::RefCountedPtr<TlsSessionKeyLoggerCache> cache here?

I explained in a previous comment why TlsSessionKeyLoggerCache is not implemented as a RefcountedPtr. We would be forced to use a weird global definition like: (the current impl avoids this but instead uses explicit Ref and Unref methods)

Code snippet:

static grpc_core::RefcountedPtr<::tsi::TlsSessionKeyLoggerCache>* g_cache_instance_. // Note that g_cache_instance_ is a pointer to RefcountedPtr. This is because global variables cannot have non default destructor. So they can only be pointers.

src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 85 at r4 (raw file):

Previously, ZhenLian wrote…

Is "\r\n" going to work on Linux and MacOS as well? If so, this is probably OK.
I think a better approach might be to determine what the current system is(not sure if it is possible), or ask users to configure what kind of system they want their logs to be in, as a input parameter.
@ctiller @markdroth would you mind suggesting some other options as well?

I tested this on Linux VM, Windows VM and Mac machine and it seems to work


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 42 at r10 (raw file):

Previously, ZhenLian wrote…

Can we create a ref-counted instance instead of a plain pointer here?

Discussed in a previous comment. I can make the change if you think it might not be confusing.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 138 at r10 (raw file):

Previously, ZhenLian wrote…

I think the comments are a bit out-of-date?

Thanks for pointing it out. I removed them.

Copy link
Contributor

@ZhenLian ZhenLian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking pretty good! Thanks again for the effort to add session key logging into gRPC. I believe it will be very beneficial to users who have some problems setting up mTLS and hence have to debug their session keys!

Reviewed 11 of 35 files at r11, 24 of 24 files at r12, all commit messages.
Reviewable status: all files reviewed, 16 unresolved discussions (waiting on @ctiller, @markdroth, @Vignesh2208, and @yihuazhang)


include/grpc/grpc_security.h, line 1279 at r12 (raw file):

/**
 * EXPERIMENTAL API - Subject to change.
 * Associates a session key logging config with a

nit: the comment needs to be updated as we don't have "key logging config" anymore


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 49 at r10 (raw file):

Previously, Vignesh2208 (Vignesh Babu) wrote…

TlsSessionKeyLogger class needs TlsSessionKeyLoggerCache object to be alive for its lifetime. So it calls Ref() and Unref() methods on the cache object. We can change TlsSessionKeyLoggerCache into a RefCounted class as well. However, the object of the cache will be a static global instance. Currently its defined in ssl_key_logging.cc as per snipper below. If we are to make TlsSessionKeyLoggerCache as a RefCounted object, we would have to declare static grpc_core::RefcountedPtr<::tsi::TlsSessionKeyLoggerCache> g_cache_instance_. However this is not allowed because a static global object cannot have non default destructor. So to keep it simple, I defined TlsSessionKeyLoggerCache as a normal class with explicit Ref, Unref methods.

I see. Thank you so much for the explanation!


test/cpp/end2end/tls_key_export_test.cc, line 110 at r12 (raw file):

}

int CountOccurancesInFileContents(std::string file_contents,

nit: s/Occurances/Occurrences

Copy link
Contributor Author

@Vignesh2208 Vignesh2208 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 22 of 42 files reviewed, 15 unresolved discussions (waiting on @ctiller, @markdroth, @Vignesh2208, @yihuazhang, and @ZhenLian)


include/grpc/grpc_security.h, line 1279 at r12 (raw file):

Previously, ZhenLian wrote…

nit: the comment needs to be updated as we don't have "key logging config" anymore

Updated the comment. thanks for pointing it out.


test/cpp/end2end/tls_key_export_test.cc, line 110 at r12 (raw file):

Previously, ZhenLian wrote…

nit: s/Occurances/Occurrences

Done.

@Vignesh2208
Copy link
Contributor Author

@markdroth Just wanted to send a gentle reminder on this one. Could you ptal when you have some time ? Thanks!

Copy link
Member

@markdroth markdroth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking much simpler now! There are a few details to be cleaned up, but the overall structure looks very good.

Please let me know if you have any questions. Thanks!

Reviewed 9 of 35 files at r11, 6 of 24 files at r12, 20 of 20 files at r13, all commit messages.
Reviewable status: all files reviewed, 38 unresolved discussions (waiting on @ctiller, @Vignesh2208, @yihuazhang, and @ZhenLian)


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h, line 28 at r13 (raw file):

#include <grpc/grpc_security.h>

#include "src/core/lib/gpr/env.h"

I don't think this include is needed anymore.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h, line 34 at r13 (raw file):

#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
#include "src/core/tsi/ssl/key_logging/ssl_key_logging.h"

I don't think this one is needed either.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 103 at r13 (raw file):

    grpc_tls_credentials_options* options, const char* path) {
  if (!tsi_tls_session_key_logging_supported() || options == nullptr ||
      path == nullptr) {

I think that if path is null, we don't want to return; instead, we want to set the path to the empty string. That way, the caller has a way to unset the option after setting it if they want to.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 109 at r13 (raw file):

      "grpc_tls_credentials_options_set_tls_session_key_log_config(options=%p)",
      1, (options));

Please remove unnecessary blank line.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 112 at r13 (raw file):

  // Tls session key logging is assumed to be enabled if the specified log
  // file is non-empty.
  if (strlen(path) > 0) {

I think this can just be if (path != nullptr).


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 266 at r13 (raw file):

          overridden_target_name == nullptr ? "" : overridden_target_name),
      ssl_session_cache_(ssl_session_cache) {
  if (options_ != nullptr) {

No need to check whether options_ is null. That will never happen here, because it's checked when the TlsCreds object is created.


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 267 at r13 (raw file):

      ssl_session_cache_(ssl_session_cache) {
  if (options_ != nullptr) {
    std::string tls_session_key_log_file_path =

This should be a const reference to avoid making an unnecessary copy of the string.


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 584 at r13 (raw file):

                                     std::move(server_creds)),
      options_(std::move(options)) {
  if (options_ != nullptr) {

No need to check whether options_ is null.


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 585 at r13 (raw file):

      options_(std::move(options)) {
  if (options_ != nullptr) {
    std::string tls_session_key_log_file_path =

This should be a const reference.


src/core/tsi/ssl_transport_security.cc, line 2009 at r13 (raw file):

#if OPENSSL_VERSION_NUMBER >= 0x10101000 && !defined(LIBRESSL_VERSION_NUMBER)
  if (options->key_logger != nullptr) {
    // Unref is manually called on factory destruction

This comment is a little misleading. We are actually storing this as a RefCountedPtr<>, not as a raw pointer, so we're not really unreffing it manually.

It's true that we are creating and destroying the object with gpr_malloc() and gpr_free() instead of new and delete, which means that we need to manually clean up the elements, but that's a separate problem. And when we eventually fix that, we will not remember to remove the comment here.

I suggest just removing this comment.


src/core/tsi/ssl_transport_security.cc, line 2011 at r13 (raw file):

    // Unref is manually called on factory destruction
    impl->key_logger =
        reinterpret_cast<TlsSessionKeyLogger*>(options->key_logger)->Ref();

I don't think the reinterpret_cast<> is necessary here. That field is already the right type, so you're just casting it back to its own type here.


src/core/tsi/ssl_transport_security.cc, line 2162 at r13 (raw file):

  if (options->key_logger != nullptr) {
    // Unref is manually called on factory destruction.

Same as above: Please remove this comment.


src/core/tsi/ssl_transport_security.cc, line 2164 at r13 (raw file):

    // Unref is manually called on factory destruction.
    impl->key_logger =
        reinterpret_cast<TlsSessionKeyLogger*>(options->key_logger)->Ref();

Same as above: no need for the cast.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 63 at r7 (raw file):

Previously, Vignesh2208 (Vignesh Babu) wrote…

The enums in this case would be the same. I didn't understand how we could implement a static_cast here. Could you point me to an example ? Thanks.

It looks like this is no longer relevant to this PR, but for your information, here's an example of using a static cast to ensure that two enums have the same values:

static_assert(static_cast<ResourceMetadata::ClientResourceStatus>(


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 49 at r10 (raw file):

Previously, ZhenLian wrote…

I see. Thank you so much for the explanation!

There is no need to use RefCountedPtr<> for the global static pointer, because that pointer should not hold a ref. Refs should be held only by active TlsSessionKeyLogger objects, and it can use RefCountedPtr<> for those refs. The global static pointer should be a raw pointer, not holding a ref, and the TlsSessionKeyLoggerCache dtor can reset the raw pointer to null.

There's no reason to reinvent the wheel here. Let's just make this use RefCounted<>.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 1 at r13 (raw file):

/*

Please use C++-style comments.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 62 at r13 (raw file):

   public:
    // Instantiates a TlsSessionKeyLogger instance bound to a specific path.
    explicit TlsSessionKeyLogger(std::string tls_session_key_log_file_path,

No need for explicit, since there are two arguments here.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 63 at r13 (raw file):

    // Instantiates a TlsSessionKeyLogger instance bound to a specific path.
    explicit TlsSessionKeyLogger(std::string tls_session_key_log_file_path,
                                 TlsSessionKeyLoggerCache* cache);

This parameter should be of type RefCountedPtr<TslSessionKeyLoggerCache>.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 77 at r13 (raw file):

   private:
    FILE* fd_;

Please add an ABSL_GUARDED_BY(lock_) annotation here, so that the compiler can enforce the lock ownership.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 80 at r13 (raw file):

    grpc_core::Mutex lock_;  // protects appends to file
    std::string tls_session_key_log_file_path_;
    TlsSessionKeyLoggerCache* cache_;

This data member should be of type RefCountedPtr<TlsSessionKeyLoggerCache>.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 1 at r13 (raw file):

/*

Please use C++-style comments.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 33 at r13 (raw file):

using TlsSessionKeyLogger = tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger;

static gpr_once g_cache_init = GPR_ONCE_INIT;

Please use an anonymous namespace instead of declaring individual symbols as static.

Also, you can put the anonymous namespace inside of the tsi namespace, so that you don't need to say ::tsi:: in front of the types.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 42 at r13 (raw file):

  g_tls_session_key_log_cache_mu = new grpc_core::Mutex();
  grpc_core::MutexLock lock(g_tls_session_key_log_cache_mu);
  g_cache_instance_ = new ::tsi::TlsSessionKeyLoggerCache();

No need to create this here, because it will be done in TlsSessionKeyLoggerCache::Get() instead.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 47 at r13 (raw file):

namespace tsi {

TlsSessionKeyLoggerCache ::TlsSessionKeyLogger::TlsSessionKeyLogger(

Please remove the space before the ::.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 49 at r13 (raw file):

TlsSessionKeyLoggerCache ::TlsSessionKeyLogger::TlsSessionKeyLogger(
    std::string tls_session_key_log_file_path, TlsSessionKeyLoggerCache* cache)
    : fd_(nullptr),

No need to initialize this to null, since you're going to unconditionally set it to a different value below.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 51 at r13 (raw file):

    : fd_(nullptr),
      tls_session_key_log_file_path_(std::move(tls_session_key_log_file_path)),
      cache_(cache) {

Once you convert to using RefCountedPtr<> for this, you should use std::move() here.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 54 at r13 (raw file):

  GPR_ASSERT(!tls_session_key_log_file_path_.empty());
  GPR_ASSERT(cache_ != nullptr);
  cache_->Ref();

Once you convert to using RefCountedPtr<> for this, this won't be needed.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 69 at r13 (raw file):

  {
    grpc_core::MutexLock lock(g_tls_session_key_log_cache_mu);
    cache_->tls_session_key_logger_map_.erase(tls_session_key_log_file_path_);

Just as you're removing the entry from the cache here, I think you should add the entry to the cache in the ctor. That way, creation and destruction are more symmetrical, and the logic in TlsSessionKeyLoggerCache::Get() will be a bit simpler.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 71 at r13 (raw file):

    cache_->tls_session_key_logger_map_.erase(tls_session_key_log_file_path_);
  }
  cache_->Unref();

This shouldn't be needed.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 77 at r13 (raw file):

    SSL_CTX* /* ssl_context */, const std::string& session_keys_info) {
  grpc_core::MutexLock lock(&lock_);

Please remove blank lines within functions.

Same thing throughout.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 82 at r13 (raw file):

  // Append to key log file under lock
  bool err;
  err = (fwrite((session_keys_info + "\r\n").c_str(), sizeof(char),

This can be combined with the previous line.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 82 at r13 (raw file):

  // Append to key log file under lock
  bool err;
  err = (fwrite((session_keys_info + "\r\n").c_str(), sizeof(char),

No need for the outer parens here.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 99 at r13 (raw file):

TlsSessionKeyLoggerCache::~TlsSessionKeyLoggerCache() {
  grpc_core::MutexLock lock(g_tls_session_key_log_cache_mu);
  g_cache_instance_ = nullptr;

Just as you're unsetting the global pointer in the dtor, I suggest that you set it in the ctor (g_cache_instance_ = this). That way, creation and destruction will be symmetrical, and the logic in TlsSessionKeyLoggerCache::Get() can be a bit simpler.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 108 at r13 (raw file):

  {
    grpc_core::MutexLock lock(g_tls_session_key_log_cache_mu);
    if (g_cache_instance_ == nullptr) {

As part of converting the cache to use RefCountedPtr<>, I think you can inline CreateTlsSessionKeyLogger() within this method. The combined logic can look something like this:

// Create the cache if it doesn't already exist.
RefCountedPtr<TlsSessionKeyLoggerCache> cache;
if (g_cache_instance_ == nullptr) {
  // This will automatically set g_cache_instance.
  cache = MakeRefCounted<TlsSessionKeyLoggerCache>();
} else {
  cache = g_cache_instance->Ref();
}
// Check cache for entry.
auto it = cache->tls_session_key_logger_map_.find(tls_session_key_log_file_path);
if (it != cache->tls_session_key_logger_map_.end()) return it->second.Ref();
// Not found in cache, so create new entry.
// This will automatically add itself to tls_session_key_logger_map_.
return grpc_core::MakeRefCounted<TlsSessionKeyLogger>(
    std::move(tls_session_key_log_file_path), std::move(cache));
}

src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 112 at r13 (raw file):

    }
    return g_cache_instance_->CreateTlsSessionKeyLogger(
        tls_session_key_log_file_path);

std::move()


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 119 at r13 (raw file):

TlsSessionKeyLoggerCache::CreateTlsSessionKeyLogger(
    std::string tls_session_key_log_file_path) {
  if (tls_session_key_log_file_path.empty()) {

This check can move into the start of TlsSessionKeyLoggerCache::Get(), before you even acquire the lock.


test/cpp/end2end/tls_key_export_test.cc, line 32 at r13 (raw file):

#include <grpcpp/support/channel_arguments.h>

#include "src/core/lib/gpr/env.h"

This include doesn't appear to be needed.


test/cpp/end2end/tls_key_export_test.cc, line 123 at r13 (raw file):

class TlsKeyLoggingEnd2EndTest : public ::testing::TestWithParam<TestScenario> {
 protected:
  TlsKeyLoggingEnd2EndTest() = default;

No need to declare this if you don't need it to do anything.

Copy link
Contributor Author

@Vignesh2208 Vignesh2208 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking a look. I have modified the code as per your suggestions. Could you let me know if any other changes are required. Thanks!

Reviewable status: 15 of 42 files reviewed, 38 unresolved discussions (waiting on @ctiller, @markdroth, @yihuazhang, and @ZhenLian)


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h, line 28 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I don't think this include is needed anymore.

Done.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h, line 34 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I don't think this one is needed either.

Done.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 103 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I think that if path is null, we don't want to return; instead, we want to set the path to the empty string. That way, the caller has a way to unset the option after setting it if they want to.

Done.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 109 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please remove unnecessary blank line.

Done.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 112 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I think this can just be if (path != nullptr).

Replaced it with inline checking in the line options->set_tls_session_key_log_file_path


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 266 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need to check whether options_ is null. That will never happen here, because it's checked when the TlsCreds object is created.

Done.


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 267 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This should be a const reference to avoid making an unnecessary copy of the string.

Done.


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 584 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need to check whether options_ is null.

Done.


src/core/lib/security/security_connector/tls/tls_security_connector.cc, line 585 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This should be a const reference.

Done.


src/core/tsi/ssl_transport_security.cc, line 2009 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This comment is a little misleading. We are actually storing this as a RefCountedPtr<>, not as a raw pointer, so we're not really unreffing it manually.

It's true that we are creating and destroying the object with gpr_malloc() and gpr_free() instead of new and delete, which means that we need to manually clean up the elements, but that's a separate problem. And when we eventually fix that, we will not remember to remove the comment here.

I suggest just removing this comment.

Done.


src/core/tsi/ssl_transport_security.cc, line 2011 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I don't think the reinterpret_cast<> is necessary here. That field is already the right type, so you're just casting it back to its own type here.

Done.


src/core/tsi/ssl_transport_security.cc, line 2162 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Same as above: Please remove this comment.

Done.


src/core/tsi/ssl_transport_security.cc, line 2164 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Same as above: no need for the cast.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 63 at r7 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

It looks like this is no longer relevant to this PR, but for your information, here's an example of using a static cast to ensure that two enums have the same values:

static_assert(static_cast<ResourceMetadata::ClientResourceStatus>(

Thanks for the info


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 49 at r10 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

There is no need to use RefCountedPtr<> for the global static pointer, because that pointer should not hold a ref. Refs should be held only by active TlsSessionKeyLogger objects, and it can use RefCountedPtr<> for those refs. The global static pointer should be a raw pointer, not holding a ref, and the TlsSessionKeyLoggerCache dtor can reset the raw pointer to null.

There's no reason to reinvent the wheel here. Let's just make this use RefCounted<>.

Thanks for pointing it out. I hadn't thought of that. I made the changes as per your suggestions.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 1 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please use C++-style comments.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 62 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need for explicit, since there are two arguments here.

Removed


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 63 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This parameter should be of type RefCountedPtr<TslSessionKeyLoggerCache>.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 77 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please add an ABSL_GUARDED_BY(lock_) annotation here, so that the compiler can enforce the lock ownership.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.h, line 80 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This data member should be of type RefCountedPtr<TlsSessionKeyLoggerCache>.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 1 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please use C++-style comments.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 33 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please use an anonymous namespace instead of declaring individual symbols as static.

Also, you can put the anonymous namespace inside of the tsi namespace, so that you don't need to say ::tsi:: in front of the types.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 42 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need to create this here, because it will be done in TlsSessionKeyLoggerCache::Get() instead.

I moved it to the ::Get() method.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 47 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please remove the space before the ::.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 49 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need to initialize this to null, since you're going to unconditionally set it to a different value below.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 51 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Once you convert to using RefCountedPtr<> for this, you should use std::move() here.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 54 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Once you convert to using RefCountedPtr<> for this, this won't be needed.

Removed.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 69 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Just as you're removing the entry from the cache here, I think you should add the entry to the cache in the ctor. That way, creation and destruction are more symmetrical, and the logic in TlsSessionKeyLoggerCache::Get() will be a bit simpler.

I put this logic (inserting into the map) now in the constructor


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 71 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This shouldn't be needed.

Removed.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 77 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please remove blank lines within functions.

Same thing throughout.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 82 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This can be combined with the previous line.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 82 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need for the outer parens here.

Removed


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 99 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Just as you're unsetting the global pointer in the dtor, I suggest that you set it in the ctor (g_cache_instance_ = this). That way, creation and destruction will be symmetrical, and the logic in TlsSessionKeyLoggerCache::Get() can be a bit simpler.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 108 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

As part of converting the cache to use RefCountedPtr<>, I think you can inline CreateTlsSessionKeyLogger() within this method. The combined logic can look something like this:

// Create the cache if it doesn't already exist.
RefCountedPtr<TlsSessionKeyLoggerCache> cache;
if (g_cache_instance_ == nullptr) {
  // This will automatically set g_cache_instance.
  cache = MakeRefCounted<TlsSessionKeyLoggerCache>();
} else {
  cache = g_cache_instance->Ref();
}
// Check cache for entry.
auto it = cache->tls_session_key_logger_map_.find(tls_session_key_log_file_path);
if (it != cache->tls_session_key_logger_map_.end()) return it->second.Ref();
// Not found in cache, so create new entry.
// This will automatically add itself to tls_session_key_logger_map_.
return grpc_core::MakeRefCounted<TlsSessionKeyLogger>(
    std::move(tls_session_key_log_file_path), std::move(cache));
}

I modified the logic to be like this.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 112 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

std::move()

This function is now removed entirely.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 119 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This check can move into the start of TlsSessionKeyLoggerCache::Get(), before you even acquire the lock.

Done.


test/cpp/end2end/tls_key_export_test.cc, line 32 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This include doesn't appear to be needed.

Done.


test/cpp/end2end/tls_key_export_test.cc, line 123 at r13 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

No need to declare this if you don't need it to do anything.

Removed.

Copy link
Member

@markdroth markdroth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very close now! There's only one significant remaining issue, which is the one about the race condition.

Please let me know if you have any questions. Thanks!

Reviewed 22 of 27 files at r14, 5 of 8 files at r15, 3 of 3 files at r16, all commit messages.
Reviewable status: all files reviewed, 10 unresolved discussions (waiting on @ctiller, @Vignesh2208, @yihuazhang, and @ZhenLian)


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 117 at r16 (raw file):

  // file is non-empty.
  gpr_log(GPR_INFO, "Enabling TLS session key logging with keys stored at: %s",
          path ? path : "");

Please use path != nullptr to emphasize to the reader that this is a pointer, not a bool.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 117 at r16 (raw file):

  // file is non-empty.
  gpr_log(GPR_INFO, "Enabling TLS session key logging with keys stored at: %s",
          path ? path : "");

If path is null, we should log something like "" instead of the empty string.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 118 at r16 (raw file):

  gpr_log(GPR_INFO, "Enabling TLS session key logging with keys stored at: %s",
          path ? path : "");
  options->set_tls_session_key_log_file_path(path ? path : "");

Please use path != nullptr to emphasize to the reader that this is a pointer, not a bool.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 60 at r16 (raw file):

            grpc_error_std_string(error).c_str());
  }
  cache_->tls_session_key_logger_map_.insert(

I think this can be written as:

cache_->tls_session_key_logger_map_.emplace(tls_session_key_log_file_path_, this);

src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 66 at r16 (raw file):

TlsSessionKeyLoggerCache::TlsSessionKeyLogger::~TlsSessionKeyLogger() {
  grpc_core::MutexLock lock(&lock_);

I suggest putting these two lines in their own scope, just so that we release the lock in this key logger before we acquire the global lock. (Shouldn't actually matter in this case, but in general it's better to be defensive and avoid potential lock inversion problems.)


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 69 at r16 (raw file):

  if (fd_ != nullptr) fclose(fd_);
  {
    grpc_core::MutexLock lock(g_tls_session_key_log_cache_mu);

I just realized that there's a race condition here. Consider the following sequence of events:

  1. Thread 1 drops the last ref to a key logger. Ref-count goes to zero and the dtor is invoked.
  2. Thread 2 calls TlsSessionKeyLoggerCache::Get() for the same path. It acquires the global lock, finds the entry in the map, and calls Ref() on it. This increases the ref-count from 0 back to 1, and the caller thinks that it is holding a ref to an existing key logger.
  3. Thread 1, still in the dtor, now acquires the global lock and removes the entry. The dtor now returns and the object is destroyed.

This becomes a use-after-free bug.

I think the right solution is to change TlsSessionKeyLoggerCache::Get() to use RefIfNonZero() instead of Ref(). Instead of this:

      return it->second->Ref();

We can say this:

      auto key_logger = it->second->RefIfNonZero();
      if (key_logger != nullptr) return key_logger;

Then the code here in the TlsSessionKeyLogger dtor can remove the cache entry only if it still points to this object:

auto it = cache_->tls_session_key_logger_map_.find(tls_session_key_log_file_path_);
if (it != cache_->tls_session_key_logger_map_.end() &&
    it->second == this) {
  cache_->tls_session_key_logger_map_.erase(it);
}

src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 95 at r16 (raw file):

TlsSessionKeyLoggerCache::TlsSessionKeyLoggerCache() {
  // constructor is already called under the lock g_tls_session_key_log_cache_mu

You can use a lock annotation to have the compiler enforce this.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 110 at r16 (raw file):

    return nullptr;
  }
  GPR_DEBUG_ASSERT(g_tls_session_key_log_cache_mu != nullptr);

This should probably move up to be right after the gpr_once_init(), since it's verifying the result of that call.

Copy link
Contributor Author

@Vignesh2208 Vignesh2208 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking a look. I addressed your comments.

Reviewable status: 21 of 42 files reviewed, 10 unresolved discussions (waiting on @ctiller, @markdroth, @yihuazhang, and @ZhenLian)


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 117 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please use path != nullptr to emphasize to the reader that this is a pointer, not a bool.

Done.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 117 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

If path is null, we should log something like "" instead of the empty string.

Done.


src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc, line 118 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

Please use path != nullptr to emphasize to the reader that this is a pointer, not a bool.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 60 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I think this can be written as:

cache_->tls_session_key_logger_map_.emplace(tls_session_key_log_file_path_, this);

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 66 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I suggest putting these two lines in their own scope, just so that we release the lock in this key logger before we acquire the global lock. (Shouldn't actually matter in this case, but in general it's better to be defensive and avoid potential lock inversion problems.)

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 69 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

I just realized that there's a race condition here. Consider the following sequence of events:

  1. Thread 1 drops the last ref to a key logger. Ref-count goes to zero and the dtor is invoked.
  2. Thread 2 calls TlsSessionKeyLoggerCache::Get() for the same path. It acquires the global lock, finds the entry in the map, and calls Ref() on it. This increases the ref-count from 0 back to 1, and the caller thinks that it is holding a ref to an existing key logger.
  3. Thread 1, still in the dtor, now acquires the global lock and removes the entry. The dtor now returns and the object is destroyed.

This becomes a use-after-free bug.

I think the right solution is to change TlsSessionKeyLoggerCache::Get() to use RefIfNonZero() instead of Ref(). Instead of this:

      return it->second->Ref();

We can say this:

      auto key_logger = it->second->RefIfNonZero();
      if (key_logger != nullptr) return key_logger;

Then the code here in the TlsSessionKeyLogger dtor can remove the cache entry only if it still points to this object:

auto it = cache_->tls_session_key_logger_map_.find(tls_session_key_log_file_path_);
if (it != cache_->tls_session_key_logger_map_.end() &&
    it->second == this) {
  cache_->tls_session_key_logger_map_.erase(it);
}

Thanks for catching this. Fixed it as per your suggestions


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 95 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

You can use a lock annotation to have the compiler enforce this.

Done.


src/core/tsi/ssl/key_logging/ssl_key_logging.cc, line 110 at r16 (raw file):

Previously, markdroth (Mark D. Roth) wrote…

This should probably move up to be right after the gpr_once_init(), since it's verifying the result of that call.

Done.

Copy link
Member

@markdroth markdroth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great!

Reviewed 21 of 21 files at r17, all commit messages.
Reviewable status: all files reviewed, 2 unresolved discussions (waiting on @ctiller, @yihuazhang, and @ZhenLian)

@Vignesh2208 Vignesh2208 merged commit aeea02f into grpc:master Jan 18, 2022
@copybara-service copybara-service bot added the imported Specifies if the PR has been imported to the internal repository label Jan 19, 2022
drfloob added a commit to drfloob/grpc that referenced this pull request Feb 12, 2022
commit 1baca37a9e2adc08c6a7c7a1dd9c0018e26a02e5
Author: donnadionne <donnadionne@google.com>
Date:   Fri Feb 11 16:16:26 2022 -0800

    Applying aggregate ringhash policy (#28861)

    * Applying aggregate ringhash policy

    * Fixing according to code review comments.

    * typo

commit b8ee9ac7e5601e84f04d9af4f8219e7201dc0079
Author: Richard Belleville <gnossen@gmail.com>
Date:   Fri Feb 11 15:18:18 2022 -0800

    Make Compatible with Bazel 5.0 (#28683)

    * See what happens when we remove NDK

    * Try to debug Kokoro in a super hacky way

    * And echo the external IP too

    * Attempt to fix NDK installation

    * And actually run the portion of the code I need to test out

    * Clean up

    * Actually test against bazel 5

    * Put export in proper file

    * Make android an optional dependency

    * Escape paths for Windows

    * Revert switch to Bazel 5.0

commit 55e4af1b140a8d43c895c70bc5d1857e0a98ac6b
Author: Ashitha Santhosh <55257063+ashithasantosh@users.noreply.github.com>
Date:   Fri Feb 11 14:03:24 2022 -0800

    Revert "Revert "Update to rbac policy struct and end2end authz test. (#27074)" (#28552)" (#28620)

    This reverts commit 8ca42ec6f88c7cd0c45afa02eb61edd75af00246.

commit 066a310df1fe9d68a00f346bd36e6c965d62e528
Author: Richard Belleville <gnossen@gmail.com>
Date:   Fri Feb 11 13:43:01 2022 -0800

    Revert "Revert "Reimplement Gevent Integration (#28276)" (#28862)" (#28863)

    This reverts commit c02784bfa37f5e290c59506db08839d88363ceb3.

commit c02784bfa37f5e290c59506db08839d88363ceb3
Author: Richard Belleville <gnossen@gmail.com>
Date:   Fri Feb 11 13:02:28 2022 -0800

    Revert "Reimplement Gevent Integration (#28276)" (#28862)

    This reverts commit 27bc6fe7797e43298dc931b96dc57322d0852a9f.

commit df943da2c4c6362e7518bfba4278fb6f08cda4a9
Author: Craig Tiller <ctiller@google.com>
Date:   Fri Feb 11 12:47:35 2022 -0800

    Promise based sleeps (#28722)

    * Promise based sleep

    * Embrace absl::Status

    * Automated change: Fix sanity tests

    * Add another test, fix bug

    * fix

    * fix

    * review feedback

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit 6565584c7b0392711c5e9f32dc5698aedf209514
Author: Esun Kim <veblush@google.com>
Date:   Fri Feb 11 10:31:25 2022 -0800

    Bump the minimum gcc to 5 (#28786)

commit 9d73b3e85a4acc38adf520f3d7d8094302760a29
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Fri Feb 11 18:58:04 2022 +0100

    Use ninja for all grpc_csharp_ext builds on windows (#28841)

    * cleanup C# win artifact build

    * build C# basictests on win with ninja

    * specify default parallelism for C# win artifact

    * honor GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS in build_artifact_python.bat

    * set --inner_jobs for windows grpc_build_artifact job

    * fixup C# build picking env variables from C core build

    * get rid of no longer needed NativeDependenciesConfiguration C# setting

commit fc6f0277a4659eeba56b2f755e369b06ba82c806
Author: AJ Heller <hork@google.com>
Date:   Fri Feb 11 08:47:36 2022 -0800

    Update third_party/protobuf to v3.19.4 (#28842)

    * Update third_party/protobuf

    * run tools/distrib/python/make_grpcio_tools.py

    * update build_handwritten.yaml

    * regenerate projects

commit e324bf5eeefcefc8868dc45eaec43c39a71d2146
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Fri Feb 11 09:59:51 2022 +0100

    Speed up windows C/C++ builds by using cmake Ninja generator (#28833)

    * support building C/C++ with ninja

    * make cmake_ninja_vs2015 build the default for C/C++

    * fix vcvarsall location for vs2017

commit 27bc6fe7797e43298dc931b96dc57322d0852a9f
Author: Richard Belleville <rbellevi@google.com>
Date:   Thu Feb 10 18:25:12 2022 -0800

    Reimplement Gevent Integration (#28276)

    * WIP

    * Add gevent test suite run under Bazel.

    * Fix things up

    * Yapf

    * Fix up Bazel files

    * Make py_grpc_test fancier

    * Attempt to fix Windows RBE

    * Attempt to kick GitHub

    * Fix Python 2 runs

    * Yet more fixes

    * And the patch file too

    * I am an idiot

    * Mark gevent tests flaky

    * Try to make rules_python more tolerant

    * Typo

    * Exclude reconnect test from gevent

    * Remove unnecessary parts of patch

    * Buildifier

    * You saw nothing

    * isort

    * Move py_grpc_test to an internal-only file

    * Review comments

    * More reviewer comments

    * Review

    * Add initial changes for gevent

    * WIP. Run completion_queue_next in a threadpool

    * WIP.

    * WIP

    * Re-remove skip annotation

    * Finally working

    * Reactivate tests

    * Clean up

    * Move C++ threading utilities to grpc.pxi

    * Unbreak sync stack

    * Refix test flake

    * WIP. Trying to get things working properly

    * Move test stuff to test runner

    * Clean up

    * Can't handle exceptions if you don't compile with exceptions

    * Remove debug stuff unintentionally left in

    * Add greenlet switch loggging and fix threading issue

    * Only run a greenlet scheduling greenlet when there are open channels

    * Format

    * Add threadpool modifications to old runner

    * And actually import gevent

commit 09e7e7456b2b976815be98b568b0043c5d1d4e13
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Feb 10 16:07:11 2022 -0800

    Uniquify channel args keys (#28799)

    Ensures only one value for each key in channel args... may cause breakage for some usages where two values are being passed in a channel_arg and whatever arbitrary order we were reading them was used. Workarounds are in place for things we know about.

commit 6166815d11eaf1fbf033a1042611889161b9964b
Author: Mark D. Roth <roth@google.com>
Date:   Thu Feb 10 15:11:09 2022 -0800

    chttp2: add trace message when receiving RST_STREAM (#28828)

commit cd4261b946d87a732b5b2bb83a826644a1f418f4
Author: Lidi Zheng <lidiz@google.com>
Date:   Thu Feb 10 14:14:56 2022 -0800

    Support musllinux binary wheels on x64 and x86 (#28092)

    * Support musllinux binary wheels

    * Skip aarach64 for now
    * Consolidate the difference of mktemp
    * Extend linux artifact building time && install bash for distribtest
    * Stop using grpc.tools, use grpc_tools
    * Update the README to use grpc_tools
    * Force static link libc++ for alpine binaries
    * Rebase recent build script changes

    * Install ccache for musllinux distribtest images

    * Revert timeout change to grpc_build_artifacts

commit 64fd698172ba827e56f6b589dcb9d5aef52e9890
Author: Ashitha Santhosh <55257063+ashithasantosh@users.noreply.github.com>
Date:   Thu Feb 10 14:09:29 2022 -0800

    Reduce log traffic at INFO level by logging only for denied requests (#28829)

commit 20aec3b2c142b18f244209a49e7dc4a373198498
Author: Yash Tibrewal <yashkt@google.com>
Date:   Thu Feb 10 13:36:18 2022 -0800

    Set trailing_metadata_available for recv_initial_metadata ops when generating a fake status (#28827)

    * Set trailing_metadata_available for recv_initial_metadata ops when generating a fake status

    * Remove log

    * Fix

    * Revert "Convert filter to a promise (#28815)"

    This reverts commit 361809aabbbf73f1e167e8ea342f9bce0116a205.

    * Add testing

commit 9cb0747ab0f613d78ce775984fe5399aaed8ffd3
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Feb 10 12:18:33 2022 -0800

    Improve promise-based-filter APIs (#28839)

    * Improve promise-based-filter APIs

    * review feedback

    * comment

    * fix

commit 66cf5ea6e070be3a2b81ddb519ef9ecd0022c876
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Feb 10 11:53:24 2022 -0800

    Fix use after free (#28840)

    Previously we'd use an explicit arena->Destroy() call to free memory.
    This change makes the arena a scoped pointer, and in doing so lets the
    grpc_metadata_batch destructors run prior to the arena being destroyed,
    preventing a use-after-free we've seen in production code.

commit b458db9246a38ec3faa131044bed38020b19f9f2
Author: yihuaz <yihuaz@google.com>
Date:   Thu Feb 10 11:17:18 2022 -0800

    Eliminate gRPC insecure build (#25586)

    * force submit

    * fix test error

    * remove is_client from local tsi and its callsites

    * fix too_many_pings_test

    * add missing dep

commit dd84445074920912ec0d6f7ccc7699ac5b588153
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Thu Feb 10 19:12:52 2022 +0100

    More cleanup of docker run machinery. (#28734)

    * update copyrights as per review comments

    * docker run.sh cleanup: unnecessary to set CONFIG

    Originally added in as
    https://github.com/grpc/grpc/pull/2225/files#diff-156ef223959550cc6280d4747c600c187f275e5bb1a8f73c297e282898bf5a60R34
    and no longer needed.

    * XML_REPORT env variable is not used anywhere, run_tests_cmd carries the args

    * remove unnecessary POST_GIT_STEP setting

    It was originally added in gcc4.4 compatibility test and gcc4.4 is no
    longer supported
    https://github.com/grpc/grpc/pull/5384

    * more docker_run.sh cleanup

commit 14169dd0c5d8c9baf6773902e6fca1accd78d7e4
Author: scwhittle <scwhittle@users.noreply.github.com>
Date:   Thu Feb 10 18:48:57 2022 +0100

    [issue #28771] Fix pick_first policy to clear selected_ when deleting subchannel_list_ (#28824)

    * [issue #28771] Fix pick_first policy to clear selected_ when promoting
    a pending subchannel list to the active subchannel list when all
    subchannels have been attempted and are in an error state.

    * address comments

    * revert idle_filter

commit 172120f6b4404ea99d9ba7730c3595cb7fed0a0e
Author: Yousuk Seung <ysseung@google.com>
Date:   Wed Feb 9 15:33:17 2022 -0800

    Move XdsChannelCreds to CoreConfiguration (#28746)

    * Move XdsChannelCreds to CoreConfiguration

    * move xDS channel creds files to src/core/lib/security/credentials/xds

    * Change back to returning a RefCountedPtr.

    * make remove "xds_" from xds_channel_* files.

    * Renamed to address comments.

    * clang fix

    * Fix another clang error

commit 4169f24dccb635dedd29f2b342532f98b70a7ae3
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Feb 9 11:14:47 2022 -0800

    Revert "Revert "Transport channel arg (#28802)" (#28818)" (#28820)

    This reverts commit 2532cf5321bcacf9b22a5c031b0e742a9e04bb37.

commit 08181286e326b6e68339d89ad598bbce39587c2f
Author: Ming-Chuan <mingcl@google.com>
Date:   Wed Feb 9 13:54:27 2022 +0800

    Add a ChannelArguments option for sepcify custom binder intent (#28723)

    User can use
    `grpc::ChannelArguments::SetString("grpc.binder.custom_android_intent_action_name", "...")`
    to set custom binder intent.

commit 361809aabbbf73f1e167e8ea342f9bce0116a205
Author: Craig Tiller <ctiller@google.com>
Date:   Tue Feb 8 20:54:17 2022 -0800

    Convert filter to a promise (#28815)

    * Convert filter to a promise

    * copy/paste fix

    * fix

commit 8adc21f78df9c0f4e97af250e48494bff679b21e
Author: Esun Kim <veblush@google.com>
Date:   Tue Feb 8 16:24:26 2022 -0800

    Removed grpc_error_string usage (#28819)

commit 2532cf5321bcacf9b22a5c031b0e742a9e04bb37
Author: Craig Tiller <ctiller@google.com>
Date:   Tue Feb 8 15:18:44 2022 -0800

    Revert "Transport channel arg (#28802)" (#28818)

    This reverts commit 99e339136d85c93725813ec85a035358b82058c3.

commit f55c7ebeb4f36dd1c057b3901abe60bce946d414
Author: Craig Tiller <ctiller@google.com>
Date:   Tue Feb 8 14:49:41 2022 -0800

    Non-encodable tweaking (#28733)

    * log non-encodables

    * add a place to capture errors into trailing metadata without risking encoding it

    * bs

commit 99e339136d85c93725813ec85a035358b82058c3
Author: Craig Tiller <ctiller@google.com>
Date:   Tue Feb 8 14:11:07 2022 -0800

    Transport channel arg (#28802)

    Instead of passing transport optionally as an argument adjacent to channel args, pass it as a channel arg directly.
    Doing so does not affect semantics, but does allow a cleaner API for channel creation which will become increasingly important as we move towards promises.

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit 84101427d0a699e65837af43f4f0ac326c7a2aca
Author: Esun Kim <veblush@google.com>
Date:   Tue Feb 8 12:53:21 2022 -0800

    Fix CFStreamEndpointTests (#28812)

commit d5fc37f706162a148c5e1dfd0c382d8996e71f24
Author: Mark D. Roth <roth@google.com>
Date:   Tue Feb 8 11:12:23 2022 -0800

    rls: add routeLookupChannelServiceConfig field to LB policy config (#28731)

    * rls: add routeLookupChannelServiceConfig field to LB policy config

    * fix error refcount bug

commit dacf3eca970f577c169bed6afad77a9bdfc94612
Author: David E. Weekly <david@weekly.org>
Date:   Tue Feb 8 08:00:12 2022 -1000

    Add grpc-swift to language list (#28743)

    Swift doesn't seem to be on this "front page" list, but development is vibrant and seems officially supported.

commit 79d7959c3d626be69f400e54a5dd21db33afa6c1
Author: ZHANG Dapeng <zdapeng@google.com>
Date:   Tue Feb 8 09:49:00 2022 -0800

    Update client_matrix for Java v1.43.1 (#28368)

    * Update client_matrix for Java v1.43.0

    * Bump java version again

commit 0ec0479ded1f8c291610bee0f6a5771e416edfc2
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Feb 8 18:41:56 2022 +0100

    run_tests.py cleanup and simplification (#28808)

    * only support cmake for CLanguage in run_tests.py

    * add support for run_tests.py build step environ

    * switch C/C++ run_tests.py build to build_cxx script

    * CLanguage cleanup

    * build C# entirely with build_csharp script

    * move entire PHP build to build_php.sh

    * fixup C# build on linux and mac

    * run_dep_checks Makefile target is deprecated

    * get rid of the "makefile" logic in run_tests.py

    * fixup C# build on linux and mac

    * XML_REPORT env variable is useless for --use_docker runs

    * add a TODO

    * move "main" functionality towards end of run_tests.py

    * use self.args instead of global

    * yapf format

    * remove the no longer useful --update_submodules features of run_tests.py

    * fix check_epollexclusive check in run_tests.py

commit caa67ccc5e877f7c1c71eb8de6d004ad7155f60e
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Feb 7 20:10:49 2022 -0800

    Ban std::random_device (#28638)

commit b25a5b667b99f60bff951a35da916cc0b3b4a59b
Author: donnadionne <donnadionne@google.com>
Date:   Mon Feb 7 18:31:28 2022 -0800

    passing repo manager to markdroth (#28796)

commit ccd8d577d063f97d02ce80a134c33cf51de530d1
Author: Paulo Castello da Costa <6579971+paulosjca@users.noreply.github.com>
Date:   Mon Feb 7 17:06:15 2022 -0800

    Fix python os import. (#28805)

commit bfd1bcfc094fb2a5c69487b8054239bd994f87e3
Author: AJ Heller <hork@google.com>
Date:   Mon Feb 7 16:38:55 2022 -0800

    Fix -Wunused-value build error in c2p resolver (#28806)

commit 5a4ba15346f2dc75960e91148f5f77aa682e0f6a
Author: Esun Kim <veblush@google.com>
Date:   Mon Feb 7 14:06:24 2022 -0800

    Fix build & test errors when `GRPC_ERROR_IS_ABSEIL_STATUS` enabled. (#28784)

    * Fix xds_bootstrap_test

    * Fix sanity test

    * Fix ev_apple

    * Fix debug_location

commit e89152cacd74a3a0b0836602abb93fb6e54ca3cd
Author: Paulo Castello da Costa <6579971+paulosjca@users.noreply.github.com>
Date:   Mon Feb 7 12:11:20 2022 -0800

    Unfreeze benchmarks reference to test-infra repo. (#28801)

    Follow-up to #28797.

commit abc0f3e88185340c4778631f1bc38fa8fcb6b26a
Author: Wanlin Du <67486458+wanlin31@users.noreply.github.com>
Date:   Mon Feb 7 14:08:00 2022 -0600

    Update templates (#28797)

    This pr updates the templates required by the change made in grpc/test-infra#267.

commit 64082940a5e9f9129968acf590bdc2d259debbb8
Author: apolcyn <apolcyn@google.com>
Date:   Mon Feb 7 11:36:33 2022 -0800

    Fix google c2p resolver shutdown during metadata server queries (#28519)

    * Fix c2p resolver shutdown during metadata server queries

    * handle lame channels in XDS client

commit 9ffd1a7b0a240e65534942dcabf4d3828d0c6be1
Author: Yash Tibrewal <yashkt@google.com>
Date:   Fri Feb 4 17:36:26 2022 -0800

    Fix for a racy WorkSerializer shutdown (#28769)

    * Fix for a racy WorkSerializer shutdown

    * Reviewer comments

    * Additional test

    * Fix test compilation on cmake

commit b8d3a0909276296671394e3087093bd8a39f023e
Author: krestofur <83723727+krestofur@users.noreply.github.com>
Date:   Fri Feb 4 15:08:05 2022 -0800

    Update CRL test credentials (#28794)

    * remove old files

    * update credentials

    * fix README

commit 1dbda3b147793665f3845367b920637c79b7d0d6
Author: Menghan Li <menghanl@google.com>
Date:   Fri Feb 4 11:46:18 2022 -0800

    xds/interop: move definition of flag force_cleanup so that it is defined in all scripts (#28791)

commit c2da6f099f0a1a5d2fbe970a2f60e680543403f9
Author: Paulo Castello da Costa <6579971+paulosjca@users.noreply.github.com>
Date:   Fri Feb 4 10:59:12 2022 -0800

    Fix benchmark jobs. (#28790)

commit a8ba47ac55886e3682cd0d5d9cf890a9ae1cbcd0
Author: Yash Tibrewal <yashkt@google.com>
Date:   Thu Feb 3 21:24:45 2022 -0800

    InsecureCredentials: singleton object (#28777)

    * InsecureCredentials: Allow special case comparison

    * Update security connector

    * Use a singleton object instead

commit 608970f78309b219ef3c0219f1f1ed81a25a7f1a
Author: Denny C. Dai <dennycd@google.com>
Date:   Thu Feb 3 16:17:35 2022 -0800

    gRPC Package.swift patch (#28355)

commit 36bfb56fc20f4e516fe0b8977e583a807452772b
Author: Esun Kim <veblush@google.com>
Date:   Thu Feb 3 16:01:03 2022 -0800

    Added iproute2 to grpc_flaky_network_in_docker.sh (#28785)

commit 6069b3bcd6ad5188d163f0b9d438e0b38f1aa28e
Author: Paulo Castello da Costa <6579971+paulosjca@users.noreply.github.com>
Date:   Thu Feb 3 15:15:44 2022 -0800

    Freeze benchmarks reference to test-infra repo. (#28781)

    Freezing reference to account for incompatible change in grpc/test-infra#267.

    Will unfreeze once loadtest templates are updated.

commit 342cb4457c0154a0881224870b5b07d44cdfc0b4
Author: Esun Kim <veblush@google.com>
Date:   Thu Feb 3 14:47:04 2022 -0800

    Added a temporary trap to prevent Abseil-Status breakages. (#28766)

    * Added a new trap to prevent build errors with use_abseil_status enabled

    * Fix build errors.

commit 3857b075773de62faf5c2669ac21f3882abe66fc
Author: apolcyn <apolcyn@google.com>
Date:   Thu Feb 3 11:36:55 2022 -0800

    Correct the c-ares gitmodule branch name (#28780)

commit 9b42785db2d8883ec9f299bd78ba0821c35ac127
Author: Vignesh Babu <vigneshbabu@google.com>
Date:   Thu Feb 3 09:41:39 2022 -0800

    Removing Te metadata key-value pairs sent through initial or trailing metadata (#28774)

    * Removing invalid Te metadata sent through initial or final metadata

    * tidying up code to unlaterally remove Te metadata

commit dc9e8983100507fc486e042facf9838d9e7f5203
Author: Wanlin Du <67486458+wanlin31@users.noreply.github.com>
Date:   Thu Feb 3 11:35:47 2022 -0600

    Allow --qps_server_target_override to replace the original server (#28686)

    This commit makes sure that the client's server target is only
    from the --qps_server_target_override, once the flag is in use.
    Any prior server targets are cleared away.

commit 9bcabbac325780131a00428feaea70cd1bd2af9d
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Feb 2 23:12:35 2022 -0800

    Disable flaky test (#28776)

commit 92738290ab69ae9baa83fb79f436d1753f13f278
Author: Esun Kim <veblush@google.com>
Date:   Wed Feb 2 15:14:36 2022 -0800

    Upgrade base-builder to the latest for blaze build (#28768)

    * Upgrade base-builder to the latest for blaze build

    * Fix warnings.

    * Added -Wno-deprecated-copy

commit eb8af70ee0b0ae359c9fcb87ecaf577f0e51cf38
Author: Vignesh Babu <vigneshbabu@google.com>
Date:   Wed Feb 2 12:48:47 2022 -0800

    Creating an event_engine_common library that contains code which all event engine implementations can depend on (#28765)

    * creating an event_engine_common library that contains code which all event engine implementations can depend on

    * adding event_engine_common dependency

    * regenerate projects

    * Automated change: Fix sanity tests

    * renaming file

    * regenerate projects

    Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>

commit 2057bfd182c0bb45cfcc3cc5a15ff2617d6e2f3d
Author: Esun Kim <veblush@google.com>
Date:   Wed Feb 2 11:03:26 2022 -0800

    Upgrade clang to 13 for clang-format, clang-tidy, and sanity (#28763)

commit 9317838084a02c800e434ba186120064cdf513fe
Author: Vignesh Babu <vigneshbabu@google.com>
Date:   Wed Feb 2 10:36:09 2022 -0800

    updating ChooseLbPolicy to revert to pick_first lb_policy if an unsupported lb_policy is passed through channel_args (#28651)

    * updating ChooseLbPolicy to revert to pick_first lb_policy if an unsupported lb_policy is passed through channel_args

    * addressing review comments

    * updating comment

    * adding check to ensure policy_name is not nullptr

    * initializing bool variable to avoid ubsan errors

commit 4a35cf9dc9c1759d733edc29842114c845fd5b4d
Author: Esun Kim <veblush@google.com>
Date:   Wed Feb 2 08:16:57 2022 -0800

    Removed php warning options (#28716)

commit 63398540b65c775de36f1e7e370c1800aca6637d
Author: yifeizhuang <zivy@google.com>
Date:   Tue Feb 1 10:17:35 2022 -0800

    fix (#28759)

commit c8c1774ec465ed5ed26a8e856046ec75fc199eeb
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Feb 1 11:33:56 2022 +0100

    Revert "Revert "Cleanup run docker machinery in run_tests.py, task_runner.py and elsewhere (#28704)" (#28741)" (#28748)

    * Revert "Revert "Cleanup run docker machinery in run_tests.py, task_runner.py and elsewhere (#28704)" (#28741)"

    This reverts commit 9a79d44e9b60bdbfda78fe1b1fbe8ee86f14c1d4.

    * fix python distribtest failure on fedora34

commit 7b8fb43b33892b786f1cb8d8d5a086973169c9ac
Author: Nikolai Semenov <semenov.nn@phystech.edu>
Date:   Tue Feb 1 05:36:46 2022 +0300

    WriteOptions::clear_write_through method (#26774)

    * Add WriteOptions::clear_write_through method

    * Rearrange WriteOptions methods in a logical manner

commit 60ee4454fbd1b62f91929c9b24ec5d05ac918711
Author: Esun Kim <veblush@google.com>
Date:   Mon Jan 31 18:30:03 2022 -0800

    To Donna (#28757)

commit 62c1b4f0139cd28c8c17c2f6ffefc8d391e46354
Author: yifeizhuang <zivy@google.com>
Date:   Mon Jan 31 12:36:40 2022 -0800

    fix api_listener parsing logic (#28745)

    * Revert "Revert "Add api listener test for k8s (#27534)" (#28719)"

    This reverts commit c35b93f28d204e3d3df06bc4f3ccb856be2cbb22.

    Fix parsing logic of the RDS response from CSDS to support different response formats. Use common parsing logics from url_map in this test case for parsing.

commit 2b9ffa18e4562e11d5cb68be2db192dd70522e09
Author: AJ Heller <hork@google.com>
Date:   Mon Jan 31 11:29:38 2022 -0800

    Revert "Disable EventEngine smoke tests for ease of import (#28732)" (#28737)

    This reverts commit f42b2a7368923ac3f55d70c9a2aa28324837442d.

commit 03031a89bbd2eca3d3e88a2638f27dfef7847418
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Jan 31 10:52:16 2022 -0800

    Server filter promise wrapper (#28687)

    * Sketch server filter promise wrapper

    * fixes

    * fix

    * fix

    * Fix comments

    * review feedback

commit 33f5a5bb2cece217e2f647b5c8039c384687eea8
Author: Esun Kim <veblush@google.com>
Date:   Mon Jan 31 09:25:47 2022 -0800

    Fix clang-tidy (#28717)

commit 781100f765f09df40cd74c1ae5acbee51a13200d
Author: Esun Kim <veblush@google.com>
Date:   Mon Jan 31 09:24:43 2022 -0800

    Fix thread-analaysis warnings on client_channel (#28744)

commit 436bd933f37173efa083cd4fdcdc301b666ce200
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Jan 31 08:47:33 2022 -0800

    Rewrite reclaimer queue (#28698)

    * New reclaimer queue

    * add test

    * Automated change: Fix sanity tests

    * faster test

    * fix memory ordering

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit b9b6255993dad2a54669710db46fe0f9650cc9b2
Author: Sergii Tkachenko <sergiitk@google.com>
Date:   Fri Jan 28 11:51:14 2022 -0800

    xds-k8s: Fix the issue with parsing Operation.metadata (#28736)

    1. Solves an issue with unpacking Operation.metadata causing
       json_format.ParseError Can not find message descriptor by type_url
    2. Improves the readability of the
       framework.infrastructure.gcp.api.OperationError

commit 9a79d44e9b60bdbfda78fe1b1fbe8ee86f14c1d4
Author: Yash Tibrewal <yashkt@google.com>
Date:   Fri Jan 28 11:42:12 2022 -0800

    Revert "Cleanup run docker machinery in run_tests.py, task_runner.py and elsewhere (#28704)" (#28741)

    This reverts commit be723121fca2a1055aa4078ffdb3a9f414634769.

commit 2c4ae04e06927ef90ca723c82d9526caa15c9430
Author: Mark D. Roth <roth@google.com>
Date:   Fri Jan 28 10:50:32 2022 -0800

    retry: fix memory leak caused by incorrectly replaying recv_message ops (#28718)

commit 5c474b0c84afd72f1b0fe2d9261281a2dc63ce90
Author: Tamir Duberstein <tamird@google.com>
Date:   Fri Jan 28 13:00:54 2022 -0500

    Relocate shared EventEngine APIs (#28721)

    Partially collapse `event_engine_factory.cc` into `event_engine.cc`. Add a
    new function `DefaultEventEngineFactory` which is used to set a default
    event engine factory at link time, separate from the factory that can be
    set at run time. Implemenet this function in
    `default_event_engine_factory.cc`.

    This allows alternative default event engine factories to be implemented
    without requiring the duplication of the implementations of
    `SetDefaultEventEngineFactory`, `CreateEventEngine`, and
    `GetDefaultEventEngine`.

commit be723121fca2a1055aa4078ffdb3a9f414634769
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Fri Jan 28 11:46:36 2022 +0100

    Cleanup run docker machinery in run_tests.py, task_runner.py and elsewhere (#28704)

    * attempt

    * slim down build_docker_and_run_tests.sh

    * HOST_GIT_ROOT is unused

    * config and arch variable no need to propagate to run_tests.py

    * unify unused LOCAL_GIT_ROOT to EXTERNAL_GIT_ROOT

    * mounting gcloud config seems useless

    * reorder docker args

    * cleanup

    * allow passing args to build_docker_and_run_tests.sh

    * converge build_docker_and_run_tests.sh and build_and_run_docker.sh

    * more convergence

    * convergence of docker runners

    * finalize convergence of run_docker scripts

    * GRPC_TEST_REPORT_BASE_DIR might not exist

    * adjust report copying

    * make report_dir and output_dir readable

    * alpine linux does not support cp -t

commit 4a9cfa3130ee69b9de5ba5ad8b937030dea65594
Author: Yash Tibrewal <yashkt@google.com>
Date:   Thu Jan 27 21:27:47 2022 -0800

    HTTP2: Add GrpcNetworkStreamState metadata (#28668)

    * HTTP2: Add GrpcNetworkStreamState metadata for calls that are not sent on wire and for those that are not seen by server

    * Generate projects

    * clang-tidy

    * Fix test

    * clang-tidy

    * Add a negative test

    * Fix for windows

commit f42b2a7368923ac3f55d70c9a2aa28324837442d
Author: AJ Heller <hork@google.com>
Date:   Thu Jan 27 17:17:31 2022 -0800

    Disable EventEngine smoke tests for ease of import (#28732)

    This avoids having to do a cherry-pick import, and is harmless since
    there are no dependencies yet on the EventEngine. This test will be
    re-enabled shortly after both the import and related changes are
    finished.

commit 3c7ae1fc0cfbf5a2ddd2253d39f1330278c7bb67
Author: Menghan Li <menghanl@google.com>
Date:   Thu Jan 27 11:29:50 2022 -0800

    xds/cleanup: list leaked gcloud resources using API instead of gcloud command (#28720)

commit 321379da54b7616cb5d55be37e466ca1ed179dbf
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Thu Jan 27 18:28:52 2022 +0100

    run_tests.py print useful info for reproducing issues as epilogue. (#28726)

    * cleanup: remove the run_tests.py --forever option

    * print debug info at the end of run_tests.py

commit 1289cdae2e65d40db77c456919b2d44f80f3c228
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Thu Jan 27 06:45:52 2022 +0100

    Upgrade PHP docker images to debian11 (#28701)

    * upgrade PHP docker images to debian11

    * regenerate dockerfiles

    * adjust testrunners to php debian11 images

commit 5dfeec7a7e6882a08a6965a7925d7ba6a44172d9
Author: AJ Heller <hork@google.com>
Date:   Wed Jan 26 20:43:44 2022 -0800

    Update docs for ServerAsyncResponseWriter::Finish object lifetimes (#28290)

    Fixes #28239

commit 1cdcd88fb1af19dc6ff0d1875905b6628c9ce6b3
Author: krestofur <83723727+krestofur@users.noreply.github.com>
Date:   Wed Jan 26 20:23:48 2022 -0800

    Add experimental API for CRL checking support to gRPC C++ TlsCredentials (#28407)

commit 47bc953a06a0240a843d99965e443c5309103e6c
Author: AJ Heller <hork@google.com>
Date:   Wed Jan 26 18:13:29 2022 -0800

    Matches the SetDefaultEventEngineFactory definition to its declaration (#28707)

    * Matches the SetDefaultEventEngineFactory definition to its declaration

    +`const`

    * Add smoke test for SetDefaultEventEngineFactory

    * Automated change: Fix sanity tests

    * anonymous namespace

    Co-authored-by: drfloob <drfloob@users.noreply.github.com>

commit f33c587c2ab63407981f419cd06005cd79392856
Author: Ashitha Santhosh <55257063+ashithasantosh@users.noreply.github.com>
Date:   Wed Jan 26 16:41:17 2022 -0800

    Cleanup host getter (#28547)

    * cleanup host getter

    * remove test

commit 3002bd462adc8b632e6e7ba25a07b514360ea765
Author: Tamir Duberstein <tamird@google.com>
Date:   Wed Jan 26 19:03:43 2022 -0500

    Ensure conformance tests are always linked (#28708)

commit d222b5e3944222125bdc2d4aa55bf21bc883eb1f
Author: Menghan Li <menghanl@google.com>
Date:   Wed Jan 26 15:15:53 2022 -0800

    xds/cleanup: make resource prefixes configurable via flags (#28709)

commit c35b93f28d204e3d3df06bc4f3ccb856be2cbb22
Author: Lidi Zheng <lidiz@google.com>
Date:   Wed Jan 26 15:05:36 2022 -0800

    Revert "Add api listener test for k8s (#27534)" (#28719)

    This reverts commit b4b6862352f929d1d1543c1fa3d16ff3524bf459.

commit ae810df5034e60c3395f40e1d562a22dae86b5f2
Author: Denny C. Dai <dennycd@google.com>
Date:   Wed Jan 26 14:28:37 2022 -0800

    Patch GRPCCallOptions for missing property copy (#28696)

    all test pass, merge PR

commit ff0ecd2ff45d5d1080dc8c1c6cb5c4647cfa9294
Author: Vignesh Babu <vigneshbabu@google.com>
Date:   Wed Jan 26 14:24:28 2022 -0800

    sockaddr resolver: skip empty addresses in target URI (#28695)

    * Adding constraints to the number of parsed targets in a specified URI to prevent OOMs

    * removing hard limit on number of addresses in target uri

commit a1d48e7e318c2d53c3d758c69e103180d01730af
Author: Yash Tibrewal <yashkt@google.com>
Date:   Wed Jan 26 13:28:09 2022 -0800

    WorkSerializer:s/uint32_t/uint64_t (#28712)

commit d02a68016e3b57aadd8b6f6b50fc0800eb3c1fb1
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Jan 26 12:37:46 2022 -0800

    Channel stack builder name needs to be static (#28711)

    * Channel stack builder name needs to be static for stream refcount tracing

    * Add test

commit a5be50532734bd340df3ef5578c75d041941f4d6
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Jan 26 12:37:16 2022 -0800

    Fix unknown target behavior, add a test (#28705)

commit 2c1239c7fd6b8c1defde90ad3174dbd98c4f3fbc
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 26 18:58:28 2022 +0100

    add back pip virtualenv back to ruby image for XDS tests (#28703)

commit b0cdd3cba29928da3652bded596a64bda68c75c1
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 26 18:56:46 2022 +0100

    Cleanup (followup for ccache addition) (#28702)

    * nit in python interop dockerfile

    * address TODO in prepare_ccache_symlinks_rc

    * enable ccache for C# and ruby distribtest jobs

    * use debian11 instead of bullseye consistently

commit 890a9de53e7ab1f7836fce464f6c8da42d50b513
Author: Lidi Zheng <lidiz@google.com>
Date:   Wed Jan 26 09:25:01 2022 -0800

    [xDS GKE] use randomized local forwarding port for parallism (#28694)

    * [xDS GKE] use randomized local forwarding port for parallism

    * Implement a PortForwarder class

    * Add missing types and remove unused code

    * Correct the error path

    * Split the connect logic from init

commit ac139598f0a005cddd399f3ad3bf4c301851e7a8
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 26 18:13:48 2022 +0100

    Upmerge 1.44.x branch into master (#28700)

    * xDS: Rbac filter updates (#28568) (#28608)

    * Bump version to v1.44.0-pre1 (on the release branch) (#28593)

    * bump version to 1.44.0-pre1

    * regenerate projects

    * only apply "singleplatform" nuget suffix when actually needed (#28677)

    * Bump version to 1.44.0-pre2 (#28681)

    * bump version to 1.44.0-pre2

    * regenerate projects

    Co-authored-by: Yash Tibrewal <yashkt@google.com>

commit 997bec7f24cc1afab23877cb64d60934de84d0bd
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 26 17:36:02 2022 +0100

    Revert "Fix some clang-tidy issue (#28679)" (#28699)

    This reverts commit b762dce2443d88bc8ec248fe8f5c76aff800bcc8.

commit 26ee00db1e6a3cd413bafa3f9ba63b4cd2a77bb4
Author: Denny C. Dai <dennycd@google.com>
Date:   Tue Jan 25 17:56:21 2022 -0800

    Fixing missing data for ios_unit_test (#28689)

commit b762dce2443d88bc8ec248fe8f5c76aff800bcc8
Author: Esun Kim <veblush@google.com>
Date:   Tue Jan 25 16:19:39 2022 -0800

    Fix some clang-tidy issue (#28679)

    * Fix clang-tidy

    * Generated projects

commit adb8611da4e20b8ecc12e54fdf06101ab645a3d2
Author: Esun Kim <veblush@google.com>
Date:   Tue Jan 25 15:05:52 2022 -0800

    Using tsan_macos config for cfstream_tsan test (#28690)

commit 0fbb34295a72503b2a21678ffc2589e7175bd6c6
Author: Mark D. Roth <roth@google.com>
Date:   Tue Jan 25 15:04:53 2022 -0800

    Revert "transport: add error attributes indicating stream network state (#28546)" (#28680)

    This reverts commit b2939f58d06def0b5995cfeb7a78e955ee2a8a86.

commit 94adc741459afb5a6c303c89f0f9df0e7b13b7c4
Author: Esun Kim <veblush@google.com>
Date:   Tue Jan 25 13:49:57 2022 -0800

    Fix dyld errors on macos (#28684)

commit 1cf6b085f2d43649c6d6d475b965e6cea4e4a9a0
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 25 20:37:04 2022 +0100

    Enable ccache in more builds (#28665)

    * upgrade ruby docker images to debian 11

    * upgrade C# docker images to debian11

    * update sanity dockerimage to debian11

    * upgrade cxx interop to debian11

    * add ccache to python interop images

    * enable use of ccache for interop tests

    * adjust run_tests.py to new docker images

    * add ccache to rake-compiler-dock docker images

    * improve prepare_ccache_symlinks_rc

    * enable use of ccache in rake-compiler-dock docker containers

    * add ccache support for python_manylinux2014_aarch64

    * add ccache support for python_linux_armv7

    * deduplicate python3.9 install

    * ccache for crosscompiled darwin gems is broken

    * fix bash -l resetting of PATH in grpc_artifact_python_linux_armv7

commit f1e79853ed3de5fdbbc6a2eb5530074b1c40e5b1
Author: Esun Kim <veblush@google.com>
Date:   Tue Jan 25 11:19:41 2022 -0800

    Revert "Revert "Buildify Envoy upb (#28558)" (#28648)" (#28649)

    This reverts commit 01011ab259efcde54ff1eeea32d6febf3b103825.

commit faa07774dace3835cf0bcf4451194d6a3a14c3c1
Author: Yash Tibrewal <yashkt@google.com>
Date:   Tue Jan 25 10:42:44 2022 -0800

    Cleanup (#28672)

commit 9f1663fb74e6f5977f6b4bf1ad8b8005ac8616d3
Author: apolcyn <apolcyn@google.com>
Date:   Tue Jan 25 10:41:18 2022 -0800

    Upgrade c-ares to 1.17.2 (#28671)

    Upgrade c-ares dependency to 1.17.2

commit 6bf8e2248444ea331299e80a302f67cbf1de41b5
Author: apolcyn <apolcyn@google.com>
Date:   Tue Jan 25 10:37:05 2022 -0800

    Add http cancel api (#28354)

    Add an API to cancel HTTP1 requests

commit cf81e41162603d229d0c8ef05f137a0afbe1f3c6
Author: Craig Tiller <ctiller@google.com>
Date:   Tue Jan 25 10:26:00 2022 -0800

    Remove direct reference to absl::Status in Activity (#28659)

commit f23f1bb51fe9e8db2a1a11f7fe532745eb9e00a2
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 25 19:18:58 2022 +0100

    Use ccache for selected C++ and python builds (with redis server as cache) (#28661)

    * add cmake support for ccache

    * cleanup: use --env-file for docker run invocations

    * make python build compatible with using ccache

    * enable building using ccache in selected kokoro jobs

    * print ccache stats and the end of run_tests.py

commit 739e739322e15af0a7acc78136dbaba47a33e42a
Author: Paulo Castello da Costa <6579971+paulosjca@users.noreply.github.com>
Date:   Tue Jan 25 10:12:25 2022 -0800

    Update link to performance benchmarks dashboard. (#28635)

commit 5993fa7558b51845f408a2a79b08bbd9d5ef82d0
Author: Esun Kim <veblush@google.com>
Date:   Tue Jan 25 09:59:01 2022 -0800

    Fix bugprone-stringview-nullptr (#28678)

commit 7138f1e854e5f69d6e8492b689dee02f3cb5ede5
Author: Yash Tibrewal <yashkt@google.com>
Date:   Tue Jan 25 08:49:50 2022 -0800

    Repo manager - Esun (#28673)

commit 27b6b45c329b7b4173f506c616d8119520f964fd
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 25 10:23:01 2022 +0100

    Upgrade C++ and Python docker images to debian stable (debian 11) (#28664)

    * upgrade C++ and python docker images

    * regenerate dockerfiles

    * upgrade grpc_artifact_python docker images

    * adjust run_tests scripts to dockerimages upgrades

commit e4107caf26977503f19f56970074762ac202bd37
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Jan 24 15:28:08 2022 -0800

    c++-ize channel stack builder (#28660)

    * c++-ize channel stack builder

    * Automated change: Fix sanity tests

    * Automated change: Fix sanity tests

    * fixes

    * comment

    * move functions out of line

    * Automated change: Fix sanity tests

    * review feedback

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit e523825c75aba052a3e36362fc20cdb9abca0b8d
Author: Menghan Li <menghanl@google.com>
Date:   Mon Jan 24 13:27:13 2022 -0800

    xds/cleanup: update build in cleanup kokoro script (#28654)

commit 17c6a486cd2d71716bb7eb071d6e67160ae370cf
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Jan 24 09:05:32 2022 -0800

    Expose promise-ness to filter proper (#28658)

    * Expose promise-ness to filter proper

    * Make transports able to export promises too

    * Add make promise op to transport

commit 9454ab091243b0539ac9ba578e9ae9d5de5d26f0
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Jan 24 08:21:13 2022 -0800

    Non-encodable attributes for metadata map (#28650)

    * Non-encodable attributes for metadata map

    * trying to placate msvc14

    * better test

    * trying to placate msvc14

    * placate older compilers

    * docs

commit 9bc0732b440a8ae6f74c658d8ed07fb3c57b8102
Author: Easwar Swaminathan <easwars@google.com>
Date:   Mon Jan 24 08:04:57 2022 -0800

    Add v1.43.0 release of grpc-go to interop matrix (#28359)

commit 05e17e92390d4685f1418f535604a201a7f8e1a3
Author: Ming-Chuan <mingcl@google.com>
Date:   Sat Jan 22 15:43:20 2022 +0800

    [BinderTransport] Suppress internal Java checkSignatures warning (#28611)

commit 230349e23939537fdd86d72a2ed1c3d5fe075ac2
Author: Craig Tiller <ctiller@google.com>
Date:   Fri Jan 21 19:49:11 2022 -0800

    Public APIs need ExecCtx (#28655)

commit b4b6862352f929d1d1543c1fa3d16ff3524bf459
Author: yifeizhuang <zivy@google.com>
Date:   Fri Jan 21 15:07:19 2022 -0800

    Add api listener test for k8s (#27534)

    This ports the api listener test case to k8s.

commit d2042c1c057a63b32d43abc806a7b20a84c53bb5
Author: Craig Tiller <ctiller@google.com>
Date:   Fri Jan 21 14:50:07 2022 -0800

    Convert client_authority_filter to a promise. (#28565)

    * Initial ideation

    * progress

    * progress

    * x

    * Automated change: Fix sanity tests

    * erorrs

    * better ordering

    * working on it

    * xx

    * comment

    * comment

    * Get metadata pointer semantics temporarily right

    * fix

    * fix

    * fix

    * fix

    * fix

    * retry: send at most one cancel_stream op on each call attempt

    * fixes

    * revert earlier change

    * split filter defn from impl

    * add tests

    * fixes

    * Automated change: Fix sanity tests

    * review feedback

    * review feedback

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>
    Co-authored-by: Mark D. Roth <roth@google.com>

commit 55d7631a997bfd043ac78e3834ad00665d60c655
Author: Esun Kim <veblush@google.com>
Date:   Fri Jan 21 14:47:04 2022 -0800

    Bump clang 12 to 13 (#28639)

commit dff6ccf8874fc290783f6694cb483bf9f7171a9e
Author: Craig Tiller <ctiller@google.com>
Date:   Fri Jan 21 14:41:49 2022 -0800

    Experiment: Share the log encoder between metadata maps (#28503)

commit 4fdab23143c373262209f98006805674c0521093
Author: Mark D. Roth <roth@google.com>
Date:   Fri Jan 21 12:22:12 2022 -0800

    xds: percent-encode authority name in default client listener template (#28641)

commit 55db347396b2d53141a0aa7f32e6a95fbed296fb
Author: donnadionne <donnadionne@google.com>
Date:   Fri Jan 21 10:55:58 2022 -0800

    LRS changes for federation (#28504)

    * Passing xds server object instead of just a string name

    * Adding xds server to policy

    * Refactor ToJson

    * Using XdsServer for load reporting

    * code review comments

    * fixing code review comments

    * Taking care of lifetime of the XdsServer key

    * code review comments

    * Fixing channel_state storage and re-run tests (1 assert hit)

    * Checking for server in the bootstrap file

    * Adding LRS test

    * adding a bootstrap file ToJson and parse test

    * fixing code review comments

    * fixing code review comments.

    * fixing test

    * break out the federation lrs test

    * Fixed last bit of code review comments

    * fixing error message to be more precise

commit 01011ab259efcde54ff1eeea32d6febf3b103825
Author: Esun Kim <veblush@google.com>
Date:   Fri Jan 21 08:35:13 2022 -0800

    Revert "Buildify Envoy upb (#28558)" (#28648)

    This reverts commit 97584d834609de74b2b57eedea67a18924f31276.

commit 6cdeb9de1ad3e85e736f2a12e675172e18377c60
Author: Mark D. Roth <roth@google.com>
Date:   Fri Jan 21 07:39:44 2022 -0800

    retry: send at most one cancel_stream op on each call attempt (#28607)

commit 97584d834609de74b2b57eedea67a18924f31276
Author: Esun Kim <veblush@google.com>
Date:   Thu Jan 20 22:29:58 2022 -0800

    Buildify Envoy upb (#28558)

    * Buildigy xds

    * Generate project

    * Buildify envoy

    * Added new upb files

    * Removed unused upb targets

    * Fix grpc_cel_engine

    * Update envoy-api to the latest

    * Regen upb

    * Regen projects

    * Fix bazel build on MacOS

    * More fix on bazel mac

    * Disable grpc_tool_test on Mac

    * Regen projects

commit b4d8ec269781eb92e732b66f4dc6b3c3cd4c0881
Author: AJ Heller <hork@google.com>
Date:   Thu Jan 20 17:41:43 2022 -0800

    s/TOOD/TODO/ (#28517)

commit 0a4bbb9510d503b45f9265b570fdf61bbf01f713
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Jan 20 16:24:50 2022 -0800

    Add tests for parsed metadata (#28622)

    * tests for parsed metadata

    * more-tests

    * more-tests

commit 86c483a6782356d09a199e2263d40f886227b4a5
Author: Mark D. Roth <roth@google.com>
Date:   Thu Jan 20 13:34:58 2022 -0800

    fix priority policy to cancel failover timer on IDLE and add test (#28563)

commit ee8a90e4462f0fe956d4526a0915102aa17604c7
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Jan 20 13:01:09 2022 -0800

    Fix rng in rls (#28637)

commit 74a2cb6e2b58baa63c9d8e771f6e5bfd2014a0fd
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Jan 20 12:47:33 2022 -0800

    Revert "Revert "Reland slice changes (#28601)" (#28615)" (#28624)

    * Revert "Revert "Reland slice changes (#28601)" (#28615)"

    This reverts commit 939bbfc336519371f90d0e2acec84828be412f77.

    * Change random seed back to nanoseconds

commit 5c3319c62d78b750cca190ff8a74abc595a09608
Author: Denny C. Dai <dennycd@google.com>
Date:   Thu Jan 20 10:13:09 2022 -0800

    Remove openssl extern c wrapping (#28629)

commit 881da3e94107281eefa90501979d5bebd50d4b01
Author: Mark D. Roth <roth@google.com>
Date:   Thu Jan 20 09:26:19 2022 -0800

    core: improve documentation for GRPC_ARG_DNS_ENABLE_SRV_QUERIES (#28634)

commit 88ff7f0d3f09cfd577740c88c119f69942e50d08
Author: Paulo Castello da Costa <6579971+paulosjca@users.noreply.github.com>
Date:   Thu Jan 20 08:14:25 2022 -0800

    Format top-level README. (#28610)

    Format with `prettier` in preparation for further changes.

commit 257183f5ec5e0f8278effff49e3101f1e7b35b98
Author: James Newton-King <james@newtonking.com>
Date:   Fri Jan 21 00:30:29 2022 +1300

    Grpc.Core.Api nullable fixes (#28616)

commit 402981be8ed73d8303dbafb69975c59144012adf
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Thu Jan 20 09:23:06 2022 +0100

    Bump version to 1.45.0-dev (#28553)

    * bump version to 1.45.0-dev

    * regenerate projects

commit f873ae644b744527ecfae954c5836fc5a0a87167
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Jan 19 22:49:04 2022 -0800

    Leak static table (#28623)

commit 9f090a3a32ae565e79eb9ce602c28b413f455142
Author: Mark D. Roth <roth@google.com>
Date:   Wed Jan 19 13:57:15 2022 -0800

    xds: accept SelfConfigSource for RDS and EDS ConfigSources (#28618)

commit bb69e9351cd0a34bedf94fca4b5288774234eb2c
Author: Yash Tibrewal <yashkt@google.com>
Date:   Wed Jan 19 10:43:36 2022 -0800

    Add file comment (#28606)

commit 939bbfc336519371f90d0e2acec84828be412f77
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Jan 19 09:40:19 2022 -0800

    Revert "Reland slice changes (#28601)" (#28615)

    This reverts commit b33e0d40aff4541ea91f4ff1b9299bd6ad068db4.

commit fda615860069c46b16e8350e1ce20a3f7b3f482a
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 19 18:28:27 2022 +0100

    Build ruby artifacts in parallel (#28243)

    * build ruby artifacts in parallel

    * fine tune grpc_distribtests_ruby.sh parallelism

    * fine tune linux/grpc_build_artifacts.sh parallelism

    * cleanup in bundle_install_wrapper

    * address review comments

commit bf3ceddaacae821260ea8d01ffbc07d809a1d60e
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 19 18:24:01 2022 +0100

    allow running instances of DepFileUtilTest in parallel (#28612)

commit b3446680af659df246db293aeaa1de03670273f9
Author: Mark D. Roth <roth@google.com>
Date:   Wed Jan 19 07:52:29 2022 -0800

    fix grpc_transport_stream_op_batch_string() to handle binary metadata (#28609)

commit aeea02fab8c73d91e420360f8bdf015715ad6f45
Author: Vignesh Babu <vigneshbabu@google.com>
Date:   Tue Jan 18 14:44:55 2022 -0800

    TLS Session Keys export for GRPC C++ (#26812)

    * Adding TLS Key export logic to core and c++ wrappers

    * Adding and end2end cpp tls key export test and updating broken test due to interface changes

    * regenerate projects

    * updating tls key export core logic with addition of APIs to grpc_security.h

    * undoing changes to tls_security_connector_test

    * regenerate projects

    * changing the logging format enum name as per GRFC comments

    * regenerate projects

    * removing some commented code

    * updating changes as per review comments

    * adding GRPCAPI annotations to functions defined in grpc_security.h

    * regenerate projects

    * fixed some code styling issues

    * removing grpc_security.h include from tls_credentials_options.h

    * updating files as per review comments

    * minor fixes

    * moving some code around

    * removing key log format from tls session key log config and converting it to a simple string

    * regenerate projects

    * fixing mistakes in recent merge with master

    * regenerate projects

    * regenerate projects

    * fixing some distrib and snity errors

    * fixing formatting errors

    * fixing more sanity checks and raising supported openssl versions to 1.1.1

    * updating min supported openssl version to 1.1.1

    * updating min supported openssl version in tls_key_export_test

    * updating test to fix incorrect vector initialization

    * updating as per latest comments

    * fixing sanity checks

    * addressing review comments

    * fixing sanity checks

    * fixed c++ comment style

    * Automated change: Fix sanity tests

    * fixing review comments

    Co-authored-by: Vignesh2208 <Vignesh2208@users.noreply.github.com>

commit 0f60be8e8a9bb8de6ad84b2f603666b7363e4925
Author: Lidi Zheng <lidiz@google.com>
Date:   Tue Jan 18 13:32:54 2022 -0800

    Increase the Python protobuf requirement to >=3.12.0 (#28604)

commit 0fb47cd886895a015c85568c6863b5158db41e3d
Author: Mark D. Roth <roth@google.com>
Date:   Tue Jan 18 13:25:07 2022 -0800

    pick_first: make TRANSIENT_FAILURE sticky (#28571)

commit a215992f0e16328b0efd570b96c6c333ae52d4d0
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 18 20:09:49 2022 +0100

    speedup C# basictests: only build C# once for coreclr and mono tests (#28587)

    * only build C# once for coreclr and mono tests

    * one more attempt

    * only build C# once for coreclr and mono

commit b08aba1c2a622730c00f460f79dbec71ac7a5147
Author: AJ Heller <hork@google.com>
Date:   Tue Jan 18 10:29:41 2022 -0800

    repomgr->yashykt (#28602)

commit fd1f89a28b1ea9312a47e96662f4d78682593b89
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 18 19:14:42 2022 +0100

    speedup grpc_csharp_distribtests (#28560)

commit 869417057989471aadae5082c8a4485ee1a0d0dc
Author: Easwar Swaminathan <easwars@google.com>
Date:   Tue Jan 18 10:11:37 2022 -0800

    tools: set psm-security-python timeout to 3h (#28574)

commit 7924a5fde7cf2827806c1d97765f2af5802c55a5
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 18 18:45:13 2022 +0100

    add task_runner.py --inner_jobs support for C++ distribtests (#28594)

    * add support for task_runner.py --inner_jobs for C++ distribtests

    * fine tune linux c++ distribtests parallelism

    * yapf code

commit b33e0d40aff4541ea91f4ff1b9299bd6ad068db4
Author: Craig Tiller <ctiller@google.com>
Date:   Tue Jan 18 09:29:49 2022 -0800

    Reland slice changes (#28601)

    * Revert "Revert "Eliminate slice interning (#28363)" (#28598)"

    This reverts commit 03bf69960024930edf6160f46b1f00f5d636e25c.

    * fix?

commit 10694d167917b444de85dcac29ac56252d1e6dbe
Author: perjoh <perjoh@users.noreply.github.com>
Date:   Tue Jan 18 16:17:28 2022 +0100

    Memory leak fix on windows in grpc_tcp_create() (#27457)

    * Avoid using memset on types with non POD data members.

    * add todo

    Co-authored-by: Jan Tattermusch <jtattermusch@google.com>

commit 03bf69960024930edf6160f46b1f00f5d636e25c
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Tue Jan 18 15:44:18 2022 +0100

    Revert "Eliminate slice interning (#28363)" (#28598)

    This reverts commit 6703186b7a18f4c5cf71eb3eaef47e514c946f08.

commit 1caa3e8cfdc11fa0c68aaafeb1c8440b736819a6
Author: Yash Tibrewal <yashkt@google.com>
Date:   Tue Jan 18 04:46:40 2022 -0800

    xDS: Rbac filter updates (#28568)

commit 93733de2532c390433691478765979db297a32d7
Author: Ming-Chuan <mingcl@google.com>
Date:   Tue Jan 18 15:01:01 2022 +0800

    Add SameSignatureSecurityPolicy for binder transport (#27816)

    Tested signing example server and example client APKs with different
    debug key, worked as intended.

commit 6703186b7a18f4c5cf71eb3eaef47e514c946f08
Author: Craig Tiller <ctiller@google.com>
Date:   Mon Jan 17 20:25:45 2022 -0800

    Eliminate slice interning (#28363)

    Eliminate slice interning, and structures in slices to support it.
    Reduces grpc_slice_refcount from 40 bytes (+ a required 8 bytes elsewhere) to 16 bytes.
    Removes a pointer dereference for every slice ref/unref.

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit 8015ae1648c0766339ae9f6a0dcea73437df7735
Author: Lidi Zheng <lidiz@google.com>
Date:   Fri Jan 14 14:12:06 2022 -0800

    Remove the explicit IO platform setting (#28569)

commit 353eb9aab267181096d12dc9b3a91089ac4e264e
Author: Lidi Zheng <lidiz@google.com>
Date:   Fri Jan 14 12:58:57 2022 -0800

    Update the fork-support doc (#28567)

commit cf43542bafe188ed8d1956ca4a688dd201b9e23f
Author: Anton Danielsson <danielsson.anton@gmail.com>
Date:   Fri Jan 14 21:54:40 2022 +0100

    Add bundle destination for cmake install commands (#28454)

    * Add bundle destination for cmake install commands

    Fixes the problem:
    "no BUNDLE DESTINATION for MACOSX_BUNDLE" when building for iOS

    * Automated change: Fix sanity tests

    Co-authored-by: anton-danielsson <anton-danielsson@users.noreply.github.com>

commit e3e2191daad368e682497eafbf7a52741467199b
Author: Craig Tiller <ctiller@google.com>
Date:   Fri Jan 14 12:36:04 2022 -0800

    Shrink parsed metadata bloat a little (#28498)

commit 6b95e9769e241afc43e8ae70b24bdac49570ee59
Author: AJ Heller <hork@google.com>
Date:   Fri Jan 14 11:26:27 2022 -0800

    Log errors for unsupported fork scenarios in Python (#28566)

    Previously it logged info-level warnings. This also now returns early from prefork if the polling strategy is not set, or otherwise not supported.

    See #28557

commit e59dcd5c876bca511579f938c5cb6cf78543bc56
Author: Mark D. Roth <roth@google.com>
Date:   Fri Jan 14 09:34:39 2022 -0800

    xds: force-enable retries in xds_end2end_test to make things work internally (#28564)

commit 7069770ee0068dcde5ea86426979c71d5a47f09d
Author: Lidi Zheng <lidiz@google.com>
Date:   Fri Jan 14 09:25:33 2022 -0800

    Merge the 3 repeating Python binary compilations (Attempt 2) (#28543)

    * Revert "Revert "Merge the 3 repeating Python binary compilations (#28500)" (#28539)"

    This reverts commit 0554cbee9cfcb58c3fe7c55300f6f447998c1963.

    * Update hardcoded Python path

    * Repect existing images and only use new path for newer releases

    * fix interop_matrix testcases

    Co-authored-by: Jan Tattermusch <jtattermusch@google.com>

commit 227d65367c9030db3fc8957eeabc5238d831395e
Author: Mark D. Roth <roth@google.com>
Date:   Fri Jan 14 08:21:32 2022 -0800

    rls: fix various bugs in adaptive throttling code (#28477)

    * rls: fix adaptive throttling window size

    * clang-format

    * fix adaptive throttling logic and fix FailedRlsRequestWithoutDefaultTarget test

commit 8ca42ec6f88c7cd0c45afa02eb61edd75af00246
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Fri Jan 14 16:45:38 2022 +0100

    Revert "Update to rbac policy struct and end2end authz test. (#27074)" (#28552)

    This reverts commit b64167a0340990566120a0a11e373d72e019330f.

commit 3788b9142bf54d30c99f3ab5fc2cab0d78fbface
Author: Ming-Chuan <mingcl@google.com>
Date:   Fri Jan 14 15:15:29 2022 +0800

    [BinderTransport] Remove some logs (#28462)

commit c02fe64bea690d6717633a3f35e570a70f8f547e
Author: Yousuk Seung <ysseung@google.com>
Date:   Thu Jan 13 23:00:10 2022 -0800

    Support custom xDS channel creds (#28486)

    This patch introduces a factory to allow supporting custom xDS channel
    creds. Three types currently supported (fake, insecure, google_default)
    are registered by default for backward-compatibility.

commit 17859fb6b5d82b3836ad6ca224e33be9bced4d9a
Author: Craig Tiller <ctiller@google.com>
Date:   Thu Jan 13 22:09:35 2022 -0800

    Stop N**2 symbol name lengths (#28502)

    * Experiment: Try to stop N**2 symbol name lengths

    * Better copysink

    * clean up tests

    * fix clang-tidy

    * fix

    * typo?

    * fix

    * comment

    * Automated change: Fix sanity tests

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit e0a3a513a93dba7e02df8f38397ea823c70a9361
Author: Esun Kim <veblush@google.com>
Date:   Thu Jan 13 16:11:56 2022 -0800

    Buildify upb targets for validate & udpa (#28531)

    * Buildify upb targets for validate & udpa

    * Fix sanity test

commit fd3dbcb3715107566949902054cf97d4a877dba7
Author: Sergii Tkachenko <sergiitk@google.com>
Date:   Thu Jan 13 16:00:33 2022 -0800

    xds-k8s: Fix ModuleNotFoundError: No module named 'packaging' (#28556)

    `packaging` was explicitly used in xds_url_map_testcase.py,
    but wasn't added to the requirements.txt.
    It (unintentionally) worked before because `packaging` is
    a transitive dependency of `google-api-python-client@1.12.8`
    via `google-api-core@1.31.5`.

    With `google-api-python-client` upgraded to `1.12.10`, it's not
    the case anymore.

commit d4e09406c1f07912fd4e8f2b70878b3687686db4
Author: dmaclach <dmaclach@gmail.com>
Date:   Thu Jan 13 15:30:25 2022 -0800

    [OBJC] Don't add unnecessary prefixes to service class names (#28554)

    * [OBJC] Don't add unnecessary prefixes to service class names

    This is the same semantics as the Objective-C protoc.

    This prevents cases where you have an RPC named `FOOOpener` and a objc class prefix of `FOO` becoming `FOOFOOOpener`.

    * Update objective_c_generator_helpers.h

    Apply "sanity" check

    * Update objective_c_generator_helpers.h

    Fix up bad namespacing

    * Update objective_c_generator_helpers.h

    adding `::std::string`. Not quite sure why it's needed, but apparently it's a thing.

    * Update objective_c_generator_helpers.h

    Missing semi-colon. Hopefully caffeine will kick in at some point today... thanks tvl.

    * Automated change: Fix sanity tests

    Co-authored-by: dmaclach <dmaclach@users.noreply.github.com>

commit b38b70620003e65da97aac5499589024aa9e64b8
Author: Esun Kim <veblush@google.com>
Date:   Thu Jan 13 11:10:43 2022 -0800

    Removed meshca.proto (#28535)

commit b2939f58d06def0b5995cfeb7a78e955ee2a8a86
Author: Mark D. Roth <roth@google.com>
Date:   Thu Jan 13 09:58:46 2022 -0800

    transport: add error attributes indicating stream network state (#28546)

    * transport: add error attributes indicating stream network state

    * add missing case

commit 32b087e6741b15d302fc4a4ea0fb205ae1d41954
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Thu Jan 13 14:58:48 2022 +0100

    Ruby artifact speedup (#28542)

    * fix ruby native extension build parallelism defaults

    * allow overriding ruby artifact build parallelism with GRPC_RUBY_BUILD_PROCS

    * honor --inner_jobs for ruby artifact build

    * always start building ruby artifacts first

    * fine tune grpc_distribtests_ruby.sh

    * address review feedback

    * strip newline from nproc output

commit e22f07dc4ccecfd4193814a98a19351700504fe0
Author: AJ Heller <hork@google.com>
Date:   Wed Jan 12 16:01:48 2022 -0800

    Fix tautological unsigned comparison (#28537)

    * Fix invalid unsigned comparison

    This also enables the -Wtype-limits warning, which is included in GCC's
    -Wextra, but not in Clang's -Wextra.

commit b64167a0340990566120a0a11e373d72e019330f
Author: Ashitha Santhosh <55257063+ashithasantosh@users.noreply.github.com>
Date:   Wed Jan 12 15:13:35 2022 -0800

    Update to rbac policy struct and end2end authz test. (#27074)

    * Empty principals checks for authenticated connection

    * fix sanity check

    * clang-format

    * principals:[] will result in ANY

    * minor correction after merging

    * clang-format

    * formatting

    * clang-format

    * remove unnecessary header

    * Remove unnecessary target from BUILD

commit 69bd058e2cce3f6e8d3bf3be7b9a972f3c4963c7
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Jan 12 11:46:48 2022 -0800

    fix mac build? (#28541)

commit 114d3883898142e8b008a7138552a59df274d5ad
Author: Yash Tibrewal <yashkt@google.com>
Date:   Wed Jan 12 11:41:06 2022 -0800

    Fix xDS client for multiple watchers (#28521)

    * Fix XdsClient for multiple watchers

    * Reviewer comment

commit 5c30de312b5e167ec769edb208d517f8e69b2307
Author: Mark D. Roth <roth@google.com>
Date:   Wed Jan 12 10:09:06 2022 -0800

    xds: handle percent-encoding in new-style resource names (#28515)

commit d61b564ac086cb71c0cd7165540c98c83c743e83
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 18:39:29 2022 +0100

    Update third_party/boringssl-with-bazel (#28510)

    * Update third_party/boringssl-with-bazel

    * regenerate projects

    * regenerate boringssl prefix headers

    * Increase boringssl podspec version

    * regenerate projects (2nd time)

commit 29c25a190bc7818031d3963489e59a79686b9ffe
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 18:35:37 2022 +0100

    Upmerge v1.43.x branch to master (#28526)

    * Added virtualenv to ruby and php73 docker for psm (#28263) (#28264)

    * Bump version to v1.43.0-pre1 (#28249)

    * Bump version to v1.43.0-pre1

    * Regenerate projects

    * minimalist backport of #28228 (#28298)

    * Replace C2P resolver env var with experimental scheme suffix (#28294) (#28300)

    * pin rake-compiler at 1.1.1 (#28321)

    * To v1.43.0 (#28350)

    * Removed -pre1 from the version

    * Generate projects

    * Fix resource quota not getting passed through (#28318) (#28329)

    * backport #28362 to 1.43.x (#28374)

    * Don't gem install rake-compiler on macos setup scripts (#28415) (#28439)

    * Don't gem install rake-compiler on macos setup scripts

    * Use xds-test-server-5 as the GCE interop server (#28399) (#28445)

    Co-authored-by: Esun Kim <veblush@google.com>
    Co-authored-by: apolcyn <apolcyn@google.com>
    Co-authored-by: Craig Tiller <ctiller@google.com>
    Co-authored-by: Lidi Zheng <lidiz@google.com>

commit 42c08b9b562a6493c48e770f5b91ef16509838a2
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 18:35:07 2022 +0100

    Update third_party/protobuf to v3.19.2 (#28511)

    * Update third_party/protobuf

    * run tools/distrib/python/make_grpcio_tools.py

    * regenerate protos for csharp, ruby, php

    * update build_handwritten.yaml

    * regenerate projects

commit 54036ef62d97f4fea4655cd0e11377414ace2f1d
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 18:31:26 2022 +0100

    bump C-core version for upcoming release (#28527)

    * bump C-core version for upcoming release

    * regenerate projects

commit 0554cbee9cfcb58c3fe7c55300f6f447998c1963
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 18:31:02 2022 +0100

    Revert "Merge the 3 repeating Python binary compilations (#28500)" (#28539)

    This reverts commit 2d4f3c56001cd1e1f85734b2f7c5ce5f2797c38a.

commit c0f18e2bd6825eb07063faf463519ae28e33f5b6
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 18:10:26 2022 +0100

    another fixup for #27846 (#28540)

commit e29bdfe4e8662d743eb9c86651ef89e822efb58b
Author: Craig Tiller <ctiller@google.com>
Date:   Wed Jan 12 07:00:02 2022 -0800

    Add a test for includes without paths (#28532)

    * Add a test for includes without paths

    * fix path

    * fix

    * Automated change: Fix sanity tests

    Co-authored-by: ctiller <ctiller@users.noreply.github.com>

commit 98999225bea7c5cb381e84c7b6a660705ce9fdaa
Author: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date:   Wed Jan 12 14:56:28 2022 +0100

    Speedup linux portability build_only tests (#28461)

    * try speeding up linux portability test

    * remove gcc8.3 portability test

    * c-ares is the default resolver on linux

    * dont set parallel run_tests jobs too high

    * original parallelism might lead to better results

commit 2d4f3c56001cd1e1f85734b2f7c5ce5f2797c38a
Author: Lidi Zheng <lidiz@google.com>
Date:   Tue Jan 11 17:14:22 2022 -0800

    Merge the 3 repeating Python binary compilations (#28500)

    * Merge the 3 repeating Python binary compilations

    * Restore grpcio_metadata.py

    * run_tests.py is running on <3.6

    * Restore the Windows gevent version pin

commit 9ffbc2d3606192c13e64e6d83353c6eda51ad960
Author: Yash Tibrewal <yashkt@google.com>
Date:   Tue Jan 11 15:02:12 2022 -0800

    XdsEnd2EndTest : Use a queue to save resource updates (#28467)

    * Fix XdsClient for multiple watchers on the same resource

    * xds_end2end_test: Don't use XdsCredentials for XdsRbacNackTests

    * Use separate response states for EDS and RDS resources

    * Reviewer comments

    * Reviewer comments

    * Reviewer comments

    * Remove blank link

    * Reviewer comments

commit 44763b471f6d427c84ac7e22ad334d2fa92397fa
Author: Craig Ti…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bloat/medium imported Specifies if the PR has been imported to the internal repository lang/c++ lang/core perf-change/none release notes: no Indicates if PR should not be in release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants