Merge branch 'master' into remove_gpr_assertion_failed

pull/36912/head
tanvi-jagtap 5 months ago
commit cf462af72c
  1. 4
      BUILD
  2. 6
      CMakeLists.txt
  3. 2
      Makefile
  4. 2
      _metadata.py
  5. 4
      build_handwritten.yaml
  6. 2
      config.m4
  7. 3
      doc/g_stands_for.md
  8. 2
      gRPC-C++.podspec
  9. 2
      gRPC-Core.podspec
  10. 2
      gRPC-ProtoRPC.podspec
  11. 2
      gRPC-RxLibrary.podspec
  12. 2
      gRPC.podspec
  13. 4
      include/grpcpp/version_info.h
  14. 6
      package.xml
  15. 19
      src/core/ext/transport/chaotic_good/client_transport.cc
  16. 5
      src/core/ext/transport/chaotic_good/client_transport.h
  17. 8
      src/core/ext/transport/chttp2/transport/chttp2_transport.cc
  18. 2
      src/core/lib/surface/version.cc
  19. 2
      src/csharp/build/dependencies.props
  20. 2
      src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec
  21. 2
      src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
  22. 2
      src/objective-c/GRPCClient/version.h
  23. 2
      src/objective-c/tests/version.h
  24. 2
      src/php/composer.json
  25. 2
      src/php/ext/grpc/version.h
  26. 2
      src/python/grpcio/grpc/_grpcio_metadata.py
  27. 2
      src/python/grpcio/grpc_version.py
  28. 2
      src/python/grpcio_admin/grpc_version.py
  29. 2
      src/python/grpcio_channelz/grpc_version.py
  30. 2
      src/python/grpcio_csds/grpc_version.py
  31. 2
      src/python/grpcio_csm_observability/grpc_version.py
  32. 2
      src/python/grpcio_health_checking/grpc_version.py
  33. 2
      src/python/grpcio_observability/grpc_version.py
  34. 2
      src/python/grpcio_reflection/grpc_version.py
  35. 2
      src/python/grpcio_status/grpc_version.py
  36. 2
      src/python/grpcio_testing/grpc_version.py
  37. 2
      src/python/grpcio_tests/grpc_version.py
  38. 9
      src/ruby/ext/grpc/rb_call.c
  39. 47
      src/ruby/ext/grpc/rb_completion_queue.c
  40. 8
      src/ruby/ext/grpc/rb_completion_queue.h
  41. 61
      src/ruby/ext/grpc/rb_server.c
  42. 2
      src/ruby/lib/grpc/version.rb
  43. 2
      src/ruby/nativedebug/version.rb
  44. 2
      src/ruby/tools/version.rb
  45. 4
      templates/tools/dockerfile/run_tests_python_deps_venv.include
  46. 2
      test/cpp/end2end/client_lb_end2end_test.cc
  47. 2
      test/cpp/end2end/xds/xds_end2end_test_lib.cc
  48. 2
      tools/bazelify_tests/dockerimage_current_versions.bzl
  49. 2
      tools/distrib/python/grpc_version.py
  50. 2
      tools/distrib/python/grpcio_tools/grpc_tools/grpc_version.py
  51. 2
      tools/distrib/python/grpcio_tools/grpc_version.py
  52. 2
      tools/distrib/python/xds_protos/grpc_version.py
  53. 2
      tools/dockerfile/interoptest/grpc_interop_go1.x.current_version
  54. 3
      tools/dockerfile/interoptest/grpc_interop_go1.x/Dockerfile
  55. 2
      tools/doxygen/Doxyfile.c++
  56. 2
      tools/doxygen/Doxyfile.c++.internal
  57. 2
      tools/doxygen/Doxyfile.objc
  58. 2
      tools/doxygen/Doxyfile.objc.internal
  59. 2
      tools/doxygen/Doxyfile.php

@ -227,11 +227,11 @@ config_setting(
python_config_settings()
# This should be updated along with build_handwritten.yaml
g_stands_for = "gnarly" # @unused
g_stands_for = "gladiator" # @unused
core_version = "42.0.0" # @unused
version = "1.65.0-dev" # @unused
version = "1.66.0-dev" # @unused
GPR_PUBLIC_HDRS = [
"include/grpc/support/alloc.h",

6
CMakeLists.txt generated

@ -25,11 +25,11 @@
cmake_minimum_required(VERSION 3.13)
set(PACKAGE_NAME "grpc")
set(PACKAGE_VERSION "1.65.0-dev")
set(PACKAGE_VERSION "1.66.0-dev")
set(gRPC_CORE_VERSION "42.0.0")
set(gRPC_CORE_SOVERSION "42")
set(gRPC_CPP_VERSION "1.65.0-dev")
set(gRPC_CPP_SOVERSION "1.65")
set(gRPC_CPP_VERSION "1.66.0-dev")
set(gRPC_CPP_SOVERSION "1.66")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")

2
Makefile generated

@ -368,7 +368,7 @@ Q = @
endif
CORE_VERSION = 42.0.0
CPP_VERSION = 1.65.0-dev
CPP_VERSION = 1.66.0-dev
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/_metadata.py.template`!!!
__version__ = """1.65.0.dev0"""
__version__ = """1.66.0.dev0"""

@ -14,9 +14,9 @@ settings:
'#10': See the expand_version.py for all the quirks here
core_version: 42.0.0
csharp_major_version: 2
g_stands_for: gnarly
g_stands_for: gladiator
protobuf_version: 3.26.1
version: 1.65.0-dev
version: 1.66.0-dev
configs:
asan:
CC: clang

2
config.m4 generated

@ -1380,7 +1380,7 @@ if test "$PHP_GRPC" != "no"; then
-D_HAS_EXCEPTIONS=0 -DNOMINMAX -DGRPC_ARES=0 \
-DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 \
-DGRPC_XDS_USER_AGENT_NAME_SUFFIX='"\"PHP\""' \
-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.65.0dev\""')
-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.66.0dev\""')
PHP_ADD_BUILD_DIR($ext_builddir/src/core/channelz)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/client_channel)

@ -64,4 +64,5 @@
- 1.62 'g' stands for ['guardian'](https://github.com/grpc/grpc/tree/v1.62.x)
- 1.63 'g' stands for ['giggle'](https://github.com/grpc/grpc/tree/v1.63.x)
- 1.64 'g' stands for ['grateful'](https://github.com/grpc/grpc/tree/v1.64.x)
- 1.65 'g' stands for ['gnarly'](https://github.com/grpc/grpc/tree/master)
- 1.65 'g' stands for ['gnarly'](https://github.com/grpc/grpc/tree/v1.65.x)
- 1.66 'g' stands for ['gladiator'](https://github.com/grpc/grpc/tree/master)

2
gRPC-C++.podspec generated

@ -22,7 +22,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-C++'
# TODO (mxyan): use version that match gRPC version when pod is stabilized
version = '1.65.0-dev'
version = '1.66.0-dev'
s.version = version
s.summary = 'gRPC C++ library'
s.homepage = 'https://grpc.io'

2
gRPC-Core.podspec generated

@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-Core'
version = '1.65.0-dev'
version = '1.66.0-dev'
s.version = version
s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'https://grpc.io'

@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC'
version = '1.65.0-dev'
version = '1.66.0-dev'
s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'https://grpc.io'

@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary'
version = '1.65.0-dev'
version = '1.66.0-dev'
s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'https://grpc.io'

2
gRPC.podspec generated

@ -20,7 +20,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC'
version = '1.65.0-dev'
version = '1.66.0-dev'
s.version = version
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'https://grpc.io'

@ -19,9 +19,9 @@
#define GRPCPP_VERSION_INFO_H
#define GRPC_CPP_VERSION_MAJOR 1
#define GRPC_CPP_VERSION_MINOR 65
#define GRPC_CPP_VERSION_MINOR 66
#define GRPC_CPP_VERSION_PATCH 0
#define GRPC_CPP_VERSION_TAG "dev"
#define GRPC_CPP_VERSION_STRING "1.65.0-dev"
#define GRPC_CPP_VERSION_STRING "1.66.0-dev"
#endif // GRPCPP_VERSION_INFO_H

6
package.xml generated

@ -13,8 +13,8 @@
<date>2019-09-24</date>
<time>16:06:07</time>
<version>
<release>1.65.0dev</release>
<api>1.65.0dev</api>
<release>1.66.0dev</release>
<api>1.66.0dev</api>
</version>
<stability>
<release>beta</release>
@ -22,7 +22,7 @@
</stability>
<license>Apache 2.0</license>
<notes>
- gRPC Core 1.65.0 update
- gRPC Core 1.66.0 update
</notes>
<contents>
<dir baseinstalldir="/" name="/">

@ -56,6 +56,21 @@
namespace grpc_core {
namespace chaotic_good {
void ChaoticGoodClientTransport::Orphan() {
LOG(INFO) << "ChaoticGoodClientTransport::Orphan";
AbortWithError();
ActivityPtr writer;
ActivityPtr reader;
{
MutexLock lock(&mu_);
writer = std::move(writer_);
reader = std::move(reader_);
}
writer.reset();
reader.reset();
Unref();
}
auto ChaoticGoodClientTransport::TransportWriteLoop(
RefCountedPtr<ChaoticGoodTransport> transport) {
return Loop([this, transport = std::move(transport)] {
@ -176,7 +191,9 @@ auto ChaoticGoodClientTransport::TransportReadLoop(
}
auto ChaoticGoodClientTransport::OnTransportActivityDone() {
return [this](absl::Status) { AbortWithError(); };
return [self = RefAsSubclass<ChaoticGoodClientTransport>()](absl::Status) {
self->AbortWithError();
};
}
ChaoticGoodClientTransport::ChaoticGoodClientTransport(

@ -82,10 +82,7 @@ class ChaoticGoodClientTransport final : public ClientTransport {
void SetPollset(grpc_stream*, grpc_pollset*) override {}
void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {}
void PerformOp(grpc_transport_op*) override;
void Orphan() override {
AbortWithError();
Unref();
}
void Orphan() override;
void StartCall(CallHandler call_handler) override;
void AbortWithError();

@ -1938,11 +1938,15 @@ static void perform_transport_op_locked(void* stream_op,
}
if (op->bind_pollset) {
grpc_endpoint_add_to_pollset(t->ep, op->bind_pollset);
if (t->ep != nullptr) {
grpc_endpoint_add_to_pollset(t->ep, op->bind_pollset);
}
}
if (op->bind_pollset_set) {
grpc_endpoint_add_to_pollset_set(t->ep, op->bind_pollset_set);
if (t->ep != nullptr) {
grpc_endpoint_add_to_pollset_set(t->ep, op->bind_pollset_set);
}
}
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {

@ -24,4 +24,4 @@
const char* grpc_version_string(void) { return "42.0.0"; }
const char* grpc_g_stands_for(void) { return "gnarly"; }
const char* grpc_g_stands_for(void) { return "gladiator"; }

@ -1,7 +1,7 @@
<!-- This file is generated -->
<Project>
<PropertyGroup>
<GrpcCsharpVersion>2.65.0-dev</GrpcCsharpVersion>
<GrpcCsharpVersion>2.66.0-dev</GrpcCsharpVersion>
<GoogleProtobufVersion>3.26.1</GoogleProtobufVersion>
</PropertyGroup>
</Project>

@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCCppPlugin'
v = '1.65.0-dev'
v = '1.66.0-dev'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates C++ files from .proto services.'
s.description = <<-DESC

@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCPlugin'
v = '1.65.0-dev'
v = '1.66.0-dev'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC

@ -22,4 +22,4 @@
// instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.65.0-dev"
#define GRPC_OBJC_VERSION_STRING @"1.66.0-dev"

@ -22,5 +22,5 @@
// instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.65.0-dev"
#define GRPC_OBJC_VERSION_STRING @"1.66.0-dev"
#define GRPC_C_VERSION_STRING @"42.0.0"

@ -2,7 +2,7 @@
"name": "grpc/grpc-dev",
"description": "gRPC library for PHP - for Development use only",
"license": "Apache-2.0",
"version": "1.65.0",
"version": "1.66.0",
"require": {
"php": ">=7.0.0",
"google/protobuf": "^v3.3.0"

@ -20,6 +20,6 @@
#ifndef VERSION_H
#define VERSION_H
#define PHP_GRPC_VERSION "1.65.0dev"
#define PHP_GRPC_VERSION "1.66.0dev"
#endif /* VERSION_H */

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
__version__ = """1.65.0.dev0"""
__version__ = """1.66.0.dev0"""

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_admin/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_csds/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_csm_observability/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_observability/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_status/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -808,6 +808,12 @@ struct call_run_batch_args {
run_batch_stack* st;
};
static void cancel_call_unblock_func(void* arg) {
gpr_log(GPR_INFO, "GRPC_RUBY: cancel_call_unblock_func");
grpc_call* call = (grpc_call*)arg;
grpc_call_cancel(call, NULL);
}
static VALUE grpc_rb_call_run_batch_try(VALUE value_args) {
grpc_rb_fork_unsafe_begin();
struct call_run_batch_args* args = (struct call_run_batch_args*)value_args;
@ -830,7 +836,8 @@ static VALUE grpc_rb_call_run_batch_try(VALUE value_args) {
grpc_call_error_detail_of(err), err);
}
ev = rb_completion_queue_pluck(args->call->queue, tag,
gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
gpr_inf_future(GPR_CLOCK_REALTIME),
cancel_call_unblock_func, args->call->wrapped);
if (!ev.success) {
rb_raise(grpc_rb_eCallError, "call#run_batch failed somehow");
}

@ -35,23 +35,15 @@ typedef struct next_call_stack {
grpc_event event;
gpr_timespec timeout;
void* tag;
volatile int interrupted;
void (*unblock_func)(void*);
void* unblock_func_arg;
} next_call_stack;
/* Calls grpc_completion_queue_pluck without holding the ruby GIL */
static void* grpc_rb_completion_queue_pluck_no_gil(void* param) {
next_call_stack* const next_call = (next_call_stack*)param;
gpr_timespec increment = gpr_time_from_millis(20, GPR_TIMESPAN);
gpr_timespec deadline;
do {
deadline = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), increment);
next_call->event = grpc_completion_queue_pluck(
next_call->cq, next_call->tag, deadline, NULL);
if (next_call->event.type != GRPC_QUEUE_TIMEOUT ||
gpr_time_cmp(deadline, next_call->timeout) > 0) {
break;
}
} while (!next_call->interrupted);
next_call->event = grpc_completion_queue_pluck(next_call->cq, next_call->tag,
next_call->timeout, NULL);
return NULL;
}
@ -65,37 +57,28 @@ void grpc_rb_completion_queue_destroy(grpc_completion_queue* cq) {
grpc_completion_queue_destroy(cq);
}
static void unblock_func(void* param) {
static void outer_unblock_func(void* param) {
next_call_stack* const next_call = (next_call_stack*)param;
next_call->interrupted = 1;
if (next_call->unblock_func == NULL) return;
next_call->unblock_func(next_call->unblock_func_arg);
}
/* Does the same thing as grpc_completion_queue_pluck, while properly releasing
the GVL and handling interrupts */
grpc_event rb_completion_queue_pluck(grpc_completion_queue* queue, void* tag,
gpr_timespec deadline, void* reserved) {
gpr_timespec deadline,
void (*unblock_func)(void* param),
void* unblock_func_arg) {
next_call_stack next_call;
MEMZERO(&next_call, next_call_stack, 1);
next_call.cq = queue;
next_call.timeout = deadline;
next_call.tag = tag;
next_call.event.type = GRPC_QUEUE_TIMEOUT;
(void)reserved;
/* Loop until we finish a pluck without an interruption. The internal
pluck function runs either until it is interrupted or it gets an
event, or time runs out.
The basic reason we need this relatively complicated construction is that
we need to re-acquire the GVL when an interrupt comes in, so that the ruby
interpreter can do what it needs to do with the interrupt. But we also need
to get back to plucking when the interrupt has been handled. */
do {
next_call.interrupted = 0;
rb_thread_call_without_gvl(grpc_rb_completion_queue_pluck_no_gil,
(void*)&next_call, unblock_func,
(void*)&next_call);
/* If an interrupt prevented pluck from returning useful information, then
any plucks that did complete must have timed out */
} while (next_call.interrupted && next_call.event.type == GRPC_QUEUE_TIMEOUT);
next_call.unblock_func = unblock_func;
next_call.unblock_func_arg = unblock_func_arg;
rb_thread_call_without_gvl(grpc_rb_completion_queue_pluck_no_gil,
(void*)&next_call, outer_unblock_func,
(void*)&next_call);
return next_call.event;
}

@ -29,8 +29,14 @@ void grpc_rb_completion_queue_destroy(grpc_completion_queue* cq);
* Makes the implementation of CompletionQueue#pluck available in other files
*
* This avoids having code that holds the GIL repeated at multiple sites.
*
* unblock_func is invoked with the provided argument to unblock the CQ
* operation in the event of process termination (e.g. a signal), but
* unblock_func may be NULL in which case it's unused.
*/
grpc_event rb_completion_queue_pluck(grpc_completion_queue* queue, void* tag,
gpr_timespec deadline, void* reserved);
gpr_timespec deadline,
void (*unblock_func)(void* param),
void* unblock_func_arg);
#endif /* GRPC_RB_COMPLETION_QUEUE_H_ */

@ -49,29 +49,28 @@ typedef struct grpc_rb_server {
/* The actual server */
grpc_server* wrapped;
grpc_completion_queue* queue;
int shutdown_and_notify_done;
int destroy_done;
} grpc_rb_server;
static void grpc_rb_server_maybe_shutdown_and_notify(grpc_rb_server* server,
gpr_timespec deadline) {
static void grpc_rb_server_shutdown_and_notify_internal(grpc_rb_server* server,
gpr_timespec deadline) {
grpc_event ev;
void* tag = &ev;
if (!server->shutdown_and_notify_done) {
server->shutdown_and_notify_done = 1;
if (server->wrapped != NULL) {
grpc_server_shutdown_and_notify(server->wrapped, server->queue, tag);
ev = rb_completion_queue_pluck(server->queue, tag, deadline, NULL);
if (ev.type == GRPC_QUEUE_TIMEOUT) {
grpc_server_cancel_all_calls(server->wrapped);
ev = rb_completion_queue_pluck(
server->queue, tag, gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
}
if (ev.type != GRPC_OP_COMPLETE) {
gpr_log(GPR_INFO,
"GRPC_RUBY: bad grpc_server_shutdown_and_notify result:%d",
ev.type);
}
if (server->wrapped != NULL) {
grpc_server_shutdown_and_notify(server->wrapped, server->queue, tag);
// Following pluck calls will release the GIL and block but cannot
// be interrupted. They should terminate quickly enough though b/c
// we will cancel all server calls after the deadline.
ev = rb_completion_queue_pluck(server->queue, tag, deadline, NULL, NULL);
if (ev.type == GRPC_QUEUE_TIMEOUT) {
grpc_server_cancel_all_calls(server->wrapped);
ev = rb_completion_queue_pluck(
server->queue, tag, gpr_inf_future(GPR_CLOCK_REALTIME), NULL, NULL);
}
if (ev.type != GRPC_OP_COMPLETE) {
gpr_log(GPR_INFO,
"GRPC_RUBY: bad grpc_server_shutdown_and_notify result:%d",
ev.type);
}
}
}
@ -100,7 +99,7 @@ static void grpc_rb_server_free_internal(void* p) {
deadline = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
gpr_time_from_seconds(2, GPR_TIMESPAN));
grpc_rb_server_maybe_shutdown_and_notify(svr, deadline);
grpc_rb_server_shutdown_and_notify_internal(svr, deadline);
grpc_rb_server_maybe_destroy(svr);
xfree(p);
@ -132,7 +131,6 @@ static VALUE grpc_rb_server_alloc(VALUE cls) {
grpc_rb_server* wrapper = ALLOC(grpc_rb_server);
wrapper->wrapped = NULL;
wrapper->destroy_done = 0;
wrapper->shutdown_and_notify_done = 0;
return TypedData_Wrap_Struct(cls, &grpc_rb_server_data_type, wrapper);
}
@ -192,6 +190,24 @@ struct server_request_call_args {
request_call_stack st;
};
static void shutdown_server_unblock_func(void* arg) {
grpc_rb_server* server = (grpc_rb_server*)arg;
gpr_log(GPR_INFO, "GRPC_RUBY: shutdown_server_unblock_func");
GPR_ASSERT(server->wrapped != NULL);
grpc_event event;
void* tag = &event;
grpc_server_shutdown_and_notify(server->wrapped, server->queue, tag);
grpc_server_cancel_all_calls(server->wrapped);
// Following call is blocking, but should finish quickly since we've
// cancelled all calls.
event = grpc_completion_queue_pluck(server->queue, tag,
gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
gpr_log(GPR_INFO,
"GRPC_RUBY: shutdown_server_unblock_func pluck event.type: %d "
"event.success: %d",
event.type, event.success);
}
static VALUE grpc_rb_server_request_call_try(VALUE value_args) {
grpc_rb_fork_unsafe_begin();
struct server_request_call_args* args =
@ -215,7 +231,8 @@ static VALUE grpc_rb_server_request_call_try(VALUE value_args) {
}
grpc_event ev = rb_completion_queue_pluck(
args->server->queue, tag, gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
args->server->queue, tag, gpr_inf_future(GPR_CLOCK_REALTIME),
shutdown_server_unblock_func, args->server);
if (!ev.success) {
rb_raise(grpc_rb_eCallError, "request_call completion failed");
}
@ -288,7 +305,7 @@ static VALUE grpc_rb_server_shutdown_and_notify(VALUE self, VALUE timeout) {
deadline = grpc_rb_time_timeval(timeout, /* absolute time*/ 0);
}
grpc_rb_server_maybe_shutdown_and_notify(s, deadline);
grpc_rb_server_shutdown_and_notify_internal(s, deadline);
return Qnil;
}

@ -14,5 +14,5 @@
# GRPC contains the General RPC module.
module GRPC
VERSION = '1.65.0.dev'
VERSION = '1.66.0.dev'
end

@ -14,6 +14,6 @@
module GRPC
module NativeDebug
VERSION = '1.65.0.dev'
VERSION = '1.66.0.dev'
end
end

@ -14,6 +14,6 @@
module GRPC
module Tools
VERSION = '1.65.0.dev'
VERSION = '1.66.0.dev'
end
end

@ -26,8 +26,6 @@ RUN echo "source $PYTHON_ENV/bin/activate" >> ~/.bashrc
# but since our python2 usage is deprecated, we should get rid of it.
RUN /bin/bash -c "source $PYTHON_ENV/bin/activate && \
python3 -m pip install --upgrade pip==19.3.1 && \
python3 -m pip install six==1.16.0 && \
python3 -m pip install --upgrade google-auth==1.23.0 google-api-python-client==1.12.8 oauth2client==4.1.0"
python3 -m pip install six==1.16.0"
<%include file="./gcp_api_libraries_venv.include"/>

@ -588,7 +588,7 @@ class ClientLbEnd2endTest : public ::testing::Test {
"(Failed to connect to remote host: )?"
"(Timeout occurred: )?"
// Syscall
"((connect|recvmsg|getsockopt\\(SO\\_ERROR\\)): )?"
"((connect|recvmsg|getsockopt\\(SO\\_ERROR\\)): ?)?"
// strerror() output or other message
"(Connection refused"
"|Connection reset by peer"

@ -844,7 +844,7 @@ std::string XdsEnd2endTest::MakeConnectionFailureRegex(
"(Failed to connect to remote host: )?"
"(Timeout occurred: )?"
// Syscall
"((connect|recvmsg|getsockopt\\(SO\\_ERROR\\)): )?"
"((connect|recvmsg|getsockopt\\(SO\\_ERROR\\)): ?)?"
// strerror() output or other message
"(Connection refused"
"|Connection reset by peer"

@ -78,7 +78,7 @@ DOCKERIMAGE_CURRENT_VERSIONS = {
"tools/dockerfile/interoptest/grpc_interop_go1.16.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.16@sha256:3767f47c9d06584c6c07b7ab536e13f3e87550330e6c2652ad288d3a72b0de23",
"tools/dockerfile/interoptest/grpc_interop_go1.19.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.19@sha256:889e7ff34399a5e16af87940d1eaa239e56da307f7faca3f8f1d28379c2e3df3",
"tools/dockerfile/interoptest/grpc_interop_go1.8.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.8@sha256:7830a301b37539252c592b9cd7fa30a6142d0afc717a05fc8d2b82c74fb45efe",
"tools/dockerfile/interoptest/grpc_interop_go1.x.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.x@sha256:c1d1babd31ea7e635aa68d56803212f9e0091ff628288c18dc86d890f837303a",
"tools/dockerfile/interoptest/grpc_interop_go1.x.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.x@sha256:9d02b61552a93770ebb022f588daf9acd1088d29197fe120e0b082ede73f4584",
"tools/dockerfile/interoptest/grpc_interop_http2.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_http2@sha256:e3f247d8038374848fadf7215b841e3575c0b2a4217feb503a79b8004b164c5a",
"tools/dockerfile/interoptest/grpc_interop_java.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_java@sha256:6c0319bbbf77d6c198f61adf92d205efd33cbd2cccaf914a1af8f2dcb61b16a1",
"tools/dockerfile/interoptest/grpc_interop_node.current_version": "docker://us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_node@sha256:549a7683cc024fb7ffee807eaa8acb6c2d5a5dd0184a2590f91852804eea39a4",

@ -14,5 +14,5 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'
PROTOBUF_VERSION = '3.26.1'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_tools/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'

@ -14,5 +14,5 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'
PROTOBUF_VERSION = '3.26.1'

@ -14,5 +14,5 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
VERSION = '1.65.0.dev0'
VERSION = '1.66.0.dev0'
PROTOBUF_VERSION = '3.26.1'

@ -1 +1 @@
us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.x:9740f2234d8c996def3f0e09791328c39dac0ab1@sha256:c1d1babd31ea7e635aa68d56803212f9e0091ff628288c18dc86d890f837303a
us-docker.pkg.dev/grpc-testing/testing-images-public/grpc_interop_go1.x:9a524415365a73162b7f463bf0409ca04f64a73c@sha256:9d02b61552a93770ebb022f588daf9acd1088d29197fe120e0b082ede73f4584

@ -43,8 +43,7 @@ RUN echo "source $PYTHON_ENV/bin/activate" >> ~/.bashrc
# use pinned version of pip to avoid sudden breakages
# TODO(#36814): currently six is needed for tools/run_tests scripts
# but since our python2 usage is deprecated, we should get rid of it.
RUN /bin/bash -c "source $PYTHON_ENV/bin/activate && python3 -m pip install --upgrade pip==19.3.1 && python3 -m pip install six==1.16.0 && python3 -m pip install --upgrade google-auth==1.23.0 google-api-python-client==1.12.8 oauth2client==4.1.0"
RUN /bin/bash -c "source $PYTHON_ENV/bin/activate && python3 -m pip install --upgrade pip==19.3.1 && python3 -m pip install six==1.16.0"
# Install Google Cloud Platform API libraries
# These are needed for uploading test results to BigQuery (e.g. by tools/run_tests scripts)

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.65.0-dev
PROJECT_NUMBER = 1.66.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.65.0-dev
PROJECT_NUMBER = 1.66.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Objective-C"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.65.0-dev
PROJECT_NUMBER = 1.66.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Objective-C"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.65.0-dev
PROJECT_NUMBER = 1.66.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC PHP"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.65.0-dev
PROJECT_NUMBER = 1.66.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

Loading…
Cancel
Save