* WorkQueue
* weaken the large obj stress test for Windows; documentation
* update comment
* Add WorkQueue microbenchmark. Results below ...
------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------
BM_WorkQueueIntptrPopFront/1 297 ns 297 ns 2343500 items_per_second=3.3679M/s
BM_WorkQueueIntptrPopFront/8 7022 ns 7020 ns 99356 items_per_second=1.13956M/s
BM_WorkQueueIntptrPopFront/64 59606 ns 59590 ns 11770 items_per_second=1074k/s
BM_WorkQueueIntptrPopFront/512 477867 ns 477748 ns 1469 items_per_second=1071.7k/s
BM_WorkQueueIntptrPopFront/4096 3815786 ns 3814925 ns 184 items_per_second=1073.68k/s
I0902 19:05:22.138022069 12 test_config.cc:194] TestEnvironment ends
================================================================================
* use int64_t for times. 0 performance change
------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------
BM_WorkQueueIntptrPopFront/1 277 ns 277 ns 2450292 items_per_second=3.60967M/s
BM_WorkQueueIntptrPopFront/8 6718 ns 6716 ns 105497 items_per_second=1.19126M/s
BM_WorkQueueIntptrPopFront/64 56428 ns 56401 ns 12268 items_per_second=1.13474M/s
BM_WorkQueueIntptrPopFront/512 458953 ns 458817 ns 1550 items_per_second=1.11591M/s
BM_WorkQueueIntptrPopFront/4096 3686357 ns 3685120 ns 191 items_per_second=1.1115M/s
I0902 19:25:31.549382949 12 test_config.cc:194] TestEnvironment ends
================================================================================
* add PopBack tests: same performance profile exactly
* use Mutex instead of Spinlock
It's safer, and so far equally performant in benchmarks of opt builds
* add deque test for comparison. It is faster on all tests.
* Add sparsely-populated multi-threaded benchmarks.
* fix
* fix
* refactor to help thread safety analysis
* Specialize WorkQueue for Closure*s and AnyInvocables
* remove unused callback storage
* add single-threaded benchmark for closure vs invocable
* sanitize
* missing include
* move bm_work_queue to microbenchmarks so it isn't exported
* s/workqueue/work_queue/g
* use nullptr instead of optionals for popped closures
* reviewer test suggestion
* private things are private
* add a work_queue fuzzer
Ran for 10 minutes @ 42 jobs @ 42 workers. Zero failures.
Checked in a selection of 100 good seeds after merging the thousands of
results.
* fix
* fix header guards
* nuke the corpora
* feedback
* sanitize
* Timestamp::Now
* fix
* fuzzers do not work on windows
* windows does not like multithreaded benchmark tests
* Re-add compiler protos to grpcio-tools
* Attempt to break
* Actually fail if protobufs don't compile. Who wrote this thing?
* Add an actual test
* yapf
* Whoops. Thought I'd reverted you
* Please the formatter gods
* Bump 1.49.x branch to 1.49.0.pre1 (#30615)
* bump version to 1.49.0-pre1
* regenerate projects
* [backport][v1.49.x] forkable fixes (#30646)
* Fix forkable globals (#30608)
* Fix forkable repeated registration (#30642)
This fixes a bug that could occur on repeated grpc initialization (after a complete shutdown)
Fixes#30640
* Drop support for ruby 2.5 (#30699) (#30762)
* Drop ruby 2.5 support
* Backport: "stabilize the C2P resolver URI scheme" to v1.49.x (#30654)
* stabilize the C2P resolver URI scheme
* Bump 1.49 branch to 1.49.0.pre2 (#30786)
* bump version to 1.49.0-pre2
* regenerate projects
* Update protobuf on ancillary packages (#30795) (#30805)
* Bump release version on 1.49 to 1.49.0.pre3 (#30814)
* bump version to 1.49.0-pre3
* regenerate projects
* xDS interop: enable pod log collection in the buildscripts (#30735) (#30856)
- Enables pod log collection in all PSM interop jobs implemented in https://github.com/grpc/grpc/pull/30594.
- Associate test suite runs with their own log file, so it's displayed on "Target Log" tab
* xDS interop: buildscripts: fix run_test return status (#30768) (#30875)
To capture the return status of the test in run_test the last command must be the call to the test itself.
This removes `set +x`, which makes the run_test always return success, and not propagate the test status.
I can't find it, but this exact error bit us before. Looks like it leaked to other scripts.
The good thing is if the test was executed, it's failure would still be picked up from the result xml.
However, if the test framework didn't start in the first place, the result will be false positive.
Example: https://source.cloud.google.com/results/invocations/98d3e679-ec8a-40bd-9f36-88179747b0d6/targets
```
/home/kbuilder/.pyenv/versions/k8s_xds_test_runner/bin/python3: Error while finding module specification for 'tests.authz_test' (ModuleNotFoundError: No module named 'tests')
+ set +x
Failed test suites: 0
[ID: 3548168] Command finished after 625 secs, exit value: 0
```
* client_channel: fix crash when cancelling a watch after SHUTDOWN (#30885) (#30928)
* Support Python 3.11 (#30818) (#30944)
* Support Python 3.11
* Update build images for 3.11
* Whoopsie
* The architecture of this thing is garbage
* Silence ownership warning
* Account for change in git behavior
* Fix directory
* I am in great pain
* Update Windows and arm linux
* Agh
* Clean up
* Bump 1.49 branch to 1.49.0 (#30974)
* bump version to 1.49.0
* regenerate projects
* Update protobuf to v21.6 on 1.49.x (#31028)
* Update third_party/protobuf
* run tools/distrib/python/make_grpcio_tools.py
* update build_handwritten.yaml
* regenerate projects
* Bump v1.49.x to v1.49.1 (#31037)
* bump version to 1.49.1
* regenerate projects
* Automated change: Fix sanity tests
Co-authored-by: gnossen <gnossen@users.noreply.github.com>
* Fix ruby windows ucrt build (#31053)
Co-authored-by: apolcyn <apolcyn@google.com>
Co-authored-by: AJ Heller <hork@google.com>
Co-authored-by: Richard Belleville <rbellevi@google.com>
Co-authored-by: Sergii Tkachenko <sergiitk@google.com>
Co-authored-by: Mark D. Roth <roth@google.com>
Co-authored-by: Richard Belleville <gnossen@gmail.com>
Co-authored-by: gnossen <gnossen@users.noreply.github.com>
Split off from #30556, this adds the ability to put `std::shared_ptr`s
into ChannelArgs. The EventEngine specialization and preconditioning
will be done separately, when some prework is done there.