Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
347 commits
Select commit Hold shift + click to select a range
bae98b3
Merge pull request #2873 from murgatroid99/grpc-js_http_error_resourc…
murgatroid99 Dec 18, 2024
a0914c6
fix: rename variable and use nullish coalesce
rickihastings Jan 2, 2025
c591c2a
fix: update channel-options.ts
rickihastings Jan 2, 2025
ca07343
fix: support CIDR blocks in no_proxy env variable
melkouri Jan 6, 2025
7346a18
Merge pull request #2877 from grpc/@grpc/grpc-js@1.12.x
murgatroid99 Jan 7, 2025
9620806
grpc-js-xds: Preserve resource type version and nonce when unsubscribing
murgatroid99 Jan 7, 2025
137f476
Merge pull request #2879 from murgatroid99/grpc-js-xds_preserve_strea…
murgatroid99 Jan 7, 2025
bb6bb4a
grpc-js-xds: Preserve resource type version and nonce when unsubscribing
murgatroid99 Jan 7, 2025
5b0956a
Merge pull request #2864 from rickihastings/patch/configurable-http2-…
murgatroid99 Jan 8, 2025
b396b7d
grpc-js-xds: Bump to version 1.12.1
murgatroid99 Jan 8, 2025
c6c69df
Merge pull request #2880 from murgatroid99/grpc-js-xds_preserve_type_…
murgatroid99 Jan 8, 2025
ef510d9
refactor
melkouri Jan 9, 2025
2fa8861
define no_proxy cases in hostMatchesNoProxyList
melkouri Jan 9, 2025
0a20c2d
Add omit_serialize_instanceof generator option
lionello Dec 28, 2024
2a6ce92
grpc-js-xds: Add more detailed xDS dependency manager logging
murgatroid99 Jan 10, 2025
bfebbe7
Merge pull request #2881 from murgatroid99/grpc-js-xds_dependency_man…
murgatroid99 Jan 10, 2025
5f20dc9
fix case where serverHost is not an IP address + refactor
melkouri Jan 10, 2025
198ff4e
grpc-js-xds: Start resource timers for resources requested after stre…
murgatroid99 Jan 14, 2025
d9b677a
Merge pull request #2882 from murgatroid99/grpc-js-xds_missing_cluste…
murgatroid99 Jan 14, 2025
22bbe8a
Merge pull request #2874 from DefangLabs/lio/omit_request_instanceof
murgatroid99 Jan 14, 2025
bfd87a9
grpc-js-xds: Reference clusters for ConfigSelector lifetime
murgatroid99 Jan 14, 2025
5a942ed
Merge pull request #2883 from murgatroid99/grpc-js-xds_config_selecto…
murgatroid99 Jan 15, 2025
a5b6178
grpc-js: Always use RetryingCall, always call onCommitted
murgatroid99 Jan 15, 2025
5e7cd85
remove trace
melkouri Jan 15, 2025
908c22a
Merge pull request #2884 from murgatroid99/grpc-js_call_committed_con…
murgatroid99 Jan 15, 2025
34b82cb
Merge pull request #2876 from melkouri/malak.elkouri/fix-grpc-js-no-p…
murgatroid99 Jan 15, 2025
a3d99e3
grpc-js-xds: Implement xDS server
murgatroid99 Jan 22, 2025
73dea90
Build new required packages in Dockerfiles
murgatroid99 Jan 27, 2025
854c15e
Fix docker image build sequencing
murgatroid99 Jan 27, 2025
ffcb67c
Add @types/mocha dev dependency in health check
murgatroid99 Jan 27, 2025
7068708
Add @types/mocha dev dependency in reflection package
murgatroid99 Jan 27, 2025
94781c9
Fix server argument parsing
murgatroid99 Jan 28, 2025
fdb6064
fix: xds-client LrsCallState statsTimer memory leak
gfrancz Jan 28, 2025
0396cb9
Build both docker images in one function call
murgatroid99 Jan 28, 2025
8b64c81
Increase xDS interop client log verbosity
murgatroid99 Jan 28, 2025
23e6dd7
grpc-js: Ensure server sendMetadata interceptors are called
murgatroid99 Jan 29, 2025
b1fd52d
Add retry example
murgatroid99 Jan 29, 2025
023b086
Merge pull request #2894 from murgatroid99/retry_example
murgatroid99 Jan 29, 2025
cacace7
Add some more logging in the interop server
murgatroid99 Jan 30, 2025
9569f20
grpc-js: Connect with https scheme when using TLS
murgatroid99 Jan 30, 2025
d2462ca
Merge pull request #2895 from murgatroid99/grpc-js_interop_fix
murgatroid99 Jan 30, 2025
ca21e4a
grpc-js: Allow garbage collection of IDLE channels
murgatroid99 Jan 31, 2025
33fcde9
Add logging for non-data-plane requests in the interop server
murgatroid99 Jan 31, 2025
e1a9f12
Use tini in server interop dockerfile
murgatroid99 Feb 3, 2025
0e6bfcc
Merge branch 'master' into grpc-js-xds_interop_server
murgatroid99 Feb 4, 2025
6dc3abe
Fix type issue by setting the attribute separately
gfrancz Feb 4, 2025
5f889b2
Install reflection before xds library
murgatroid99 Feb 4, 2025
d2a6dda
Merge pull request #2891 from gfrancz/xds-lrscallstate-memory-leak
murgatroid99 Feb 4, 2025
621f401
fix: xds-client LrsCallState statsTimer memory leak
gfrancz Jan 28, 2025
588b69c
Fix type issue by setting the attribute separately
gfrancz Feb 4, 2025
f1f2b2d
grpc-js-xds: Bump to version 1.12.2
murgatroid99 Feb 4, 2025
6bd791d
Merge pull request #2896 from murgatroid99/grpc-js_reduce_channel_leak
murgatroid99 Feb 4, 2025
656ca0c
Merge pull request #2898 from murgatroid99/grpc-js-xds_memory_leak_ba…
murgatroid99 Feb 4, 2025
77dc658
Case insensitive address type matching
murgatroid99 Feb 4, 2025
8fea44d
Fix IPv6 address formatting
murgatroid99 Feb 5, 2025
1ed46a1
Allow binding some IPv6 ports to fail
murgatroid99 Feb 5, 2025
06a05a4
Merge pull request #2897 from murgatroid99/grpc-js-xds_interop_server
murgatroid99 Feb 5, 2025
0b6e2a3
Add kokoro config for PSM interop security tests
murgatroid99 Feb 5, 2025
7a25539
Make secure_mode parsing case-insensitive
murgatroid99 Feb 6, 2025
1d98872
grpc-tools: Bump to version 1.13.0
murgatroid99 Feb 6, 2025
bf26f6e
Merge pull request #2900 from murgatroid99/grpc-tools_1.13
murgatroid99 Feb 6, 2025
a721980
xds interop server: bind IPv4 in secure mode
murgatroid99 Feb 7, 2025
0f0314f
grpc-js-xds: Install new dependencies in legacy interop script
murgatroid99 Feb 7, 2025
d008d1e
Merge pull request #2901 from murgatroid99/grpc-js-xds_legacy_interop…
murgatroid99 Feb 7, 2025
61349e0
grpc-js-xds: NACK with detailed validation errors
murgatroid99 Feb 11, 2025
fced35a
Fix ring_hash validation
murgatroid99 Feb 11, 2025
189bef2
Merge pull request #2902 from murgatroid99/grpc-js-xds_rich_validatio…
murgatroid99 Feb 12, 2025
e5fa6b7
Merge branch 'master' into grpc-js-xds_security_tests
murgatroid99 Feb 12, 2025
564e80f
Enable http_filter tracer on server
murgatroid99 Feb 12, 2025
eed4d54
Don't require api_listener when validating Listener
murgatroid99 Feb 12, 2025
f6631f5
Call xds library register function in interop server
murgatroid99 Feb 12, 2025
e55e596
grpc-js: Add test for custom error code
murgatroid99 Feb 13, 2025
613c832
Merge pull request #2903 from murgatroid99/grpc-js_server_custom_erro…
murgatroid99 Feb 13, 2025
2979fa7
Enable transport and certificate_provider tracers
murgatroid99 Feb 13, 2025
6e901c1
Add more transport trace lines
murgatroid99 Feb 13, 2025
bb6fff7
Change connection handler to prependListener, add more trace logging
murgatroid99 Feb 13, 2025
b44b14d
Handle unauthorized TLS connections correctly
murgatroid99 Feb 14, 2025
a8f981a
Enable heavy-duty TLS tracing in interop client and server
murgatroid99 Feb 14, 2025
da5cca4
grpc-js-xds: ring_hash: proactively connect in more cases
murgatroid99 Feb 14, 2025
0c093b0
Merge pull request #2904 from murgatroid99/grpc-js-xds_ring_hash_proa…
murgatroid99 Feb 19, 2025
5f12dc2
Add more trace logging
murgatroid99 Feb 19, 2025
bdd0dc8
Fix a bug that caused HTTP2 sessions to be considered connected early
murgatroid99 Feb 19, 2025
1fe3f74
Use xDS creds in interop client, remove verbose TLS logging
murgatroid99 Feb 19, 2025
e883425
Wait for secure connectors to be usable before TCP connect
murgatroid99 Feb 20, 2025
87f7034
Fix Listener resource validation
murgatroid99 Feb 20, 2025
5cf1a87
Handle missing filter_chain_match differently, plus other fixes
murgatroid99 Feb 20, 2025
65f4d76
Add SAN matcher trace logging
murgatroid99 Feb 21, 2025
7d99c4a
Fix handling of subject alternative names with colons
murgatroid99 Feb 21, 2025
1e28a04
Register xds listener with channelz
murgatroid99 Feb 24, 2025
a9cfd7a
Register listener as child properly
murgatroid99 Feb 25, 2025
822af68
Only register once, add admin service response logging
murgatroid99 Feb 25, 2025
36c9a4f
Represent IPv6-mapped IPv4 addresses as IPv4 in channelz
murgatroid99 Feb 25, 2025
6965250
Handle secure context errors, fix server constructor argument handling
murgatroid99 Feb 27, 2025
510d681
Apparently unset oneof is allowed
murgatroid99 Feb 27, 2025
0ebb571
Don't unregister the xds server's channelz ref when destroying the co…
murgatroid99 Feb 27, 2025
6094ebe
Handle unset validation_config_type at use time
murgatroid99 Feb 27, 2025
5eded95
Merge pull request #2909 from murgatroid99/grpc-js-xds_security_tests
murgatroid99 Feb 27, 2025
d58144d
Merge remote-tracking branch 'upstream/@grpc/grpc-js@1.12.x' into grp…
murgatroid99 Feb 28, 2025
46a5e51
Merge pull request #2910 from murgatroid99/grpc-js_1.12_upmerge
murgatroid99 Feb 28, 2025
7d39d52
proto-loader: declare oneof fields as optional
murgatroid99 Feb 28, 2025
7133635
Update golden and xds generated code for generator changes
murgatroid99 Feb 28, 2025
55b31f6
Merge pull request #2911 from murgatroid99/proto-loader_optional_oneof
murgatroid99 Feb 28, 2025
8499c7b
feat(proto-loader-gen-types): add options for specifying file extensions
tenkirin Mar 1, 2025
b43225d
docs(proto-loader-gen-types): update option description of `proto-loa…
tenkirin Mar 1, 2025
4132581
grpc-js: Update generated code with generator changes
murgatroid99 Mar 3, 2025
daa5127
Merge pull request #2913 from murgatroid99/grpc-js_generated_update
murgatroid99 Mar 3, 2025
c5b96a9
refactor(proto-loader-gen-types): refactor for more consistent code s…
tenkirin Mar 3, 2025
9691f0e
grpc-js: Update to 1.13.0
murgatroid99 Mar 3, 2025
fbd13e8
Merge pull request #2914 from murgatroid99/grpc-js_1.13.0_bump
murgatroid99 Mar 4, 2025
68bfa3b
chore(proto-loader-gen-types): update option descriptions for consist…
tenkirin Mar 4, 2025
abcf430
grpc-js-xds: ring_hash: Fix proactive connect logic when already conn…
murgatroid99 Mar 4, 2025
a8142c2
Merge pull request #2916 from murgatroid99/grpc-js-xds_ring_hash_fix
murgatroid99 Mar 4, 2025
6c7abfe
Merge pull request #2917 from grpc/@grpc/grpc-js@1.13.x
murgatroid99 Mar 5, 2025
a188ae1
grpc-js: Add backoff timer trace logging
murgatroid99 Mar 7, 2025
02b7c27
Merge pull request #2918 from murgatroid99/grpc-js_backoff_trace
murgatroid99 Mar 7, 2025
78f194b
grpc-js: Add getAuthContext call method
murgatroid99 Mar 7, 2025
4f06103
Merge pull request #2920 from murgatroid99/grpc-js_getAuthContext
murgatroid99 Mar 11, 2025
bd3bbe1
grpc-js: Fix reentrancy problem in backoff timer callback
murgatroid99 Mar 11, 2025
5572bbd
Merge pull request #2921 from murgatroid99/grpc-js_backoff_running_fix
murgatroid99 Mar 11, 2025
b74de95
grpc-js: ServerInterceptingCall: add getConnectionInfo method
murgatroid99 Mar 13, 2025
7a735ce
Merge pull request #2922 from murgatroid99/grpc-js_server_interceptor…
murgatroid99 Mar 13, 2025
9e35cac
grpc-js-xds: Implement updated xds dependency manager watcher API
murgatroid99 Mar 13, 2025
86aa0f2
Merge pull request #2912 from tenkirin/feat/file-extension-options
murgatroid99 Mar 17, 2025
024d5d8
grpc-js(-xds): Implement specified resolver and LB policy API changes
murgatroid99 Mar 20, 2025
18fddad
grpc-js: Don't check authorized when rejectUnauthorized is false
murgatroid99 Mar 21, 2025
26d26d7
grpc-js: Fix min/max switch in retry throttler
murgatroid99 Mar 21, 2025
97b490a
Merge pull request #2926 from murgatroid99/grpc-js_reject_unauthorize…
murgatroid99 Mar 21, 2025
318c800
Merge pull request #2927 from murgatroid99/grpc-js_retry_throttle_fix
murgatroid99 Mar 21, 2025
2bb7eae
grpc-js: Bump to 1.13.1
murgatroid99 Mar 21, 2025
b937786
Merge pull request #2928 from murgatroid99/grpc-js_1.13.1
murgatroid99 Mar 21, 2025
e6da4ad
Merge pull request #2925 from murgatroid99/grpc-js_channel_spec_resol…
murgatroid99 Mar 21, 2025
4a0f4cf
Merge branch 'master' into grpc-js-xds_dependency_manager_watcher_upd…
murgatroid99 Mar 21, 2025
c4580fa
Merge pull request #2929 from murgatroid99/grpc-js-xds_dependency_man…
murgatroid99 Mar 25, 2025
bdcbdf4
grpc-js: Consistently reference the same options object in the channe…
murgatroid99 Mar 26, 2025
9652680
Merge pull request #2933 from murgatroid99/grpc-js_channel_options_fix
murgatroid99 Mar 26, 2025
ff679ae
grpc-js-xds: Add support for server http filters
murgatroid99 Mar 26, 2025
6168fe8
grpc-js: Disable Nagle's Algorithm
murgatroid99 Apr 4, 2025
482006e
grpc-js: Avoid calling http2.getDefaultSettings
murgatroid99 Apr 4, 2025
6f81b4e
Merge pull request #2935 from murgatroid99/grpc-js-xds_server_http_fi…
murgatroid99 Apr 4, 2025
2e39783
grpc-js-xds: Implement RBAC engine
murgatroid99 Apr 10, 2025
6f916c9
Merge pull request #2936 from murgatroid99/grpc-js_disable_nagle
murgatroid99 Apr 10, 2025
07486d8
Merge pull request #2937 from murgatroid99/grpc-js_avoid_getDefaultSe…
murgatroid99 Apr 10, 2025
75a96ec
grpc-js: Bump to 1.13.3
murgatroid99 Apr 10, 2025
863a81a
Merge pull request #2940 from murgatroid99/grpc-js_1.13.3
murgatroid99 Apr 10, 2025
af53efc
Merge pull request #2939 from murgatroid99/grpc-js-xds_rbac_engine
murgatroid99 Apr 10, 2025
9b7402f
grpc-js-xds: Implement RBAC HTTP filter
murgatroid99 Apr 16, 2025
9843648
Include previously skipped changes, fix auth context with no peer cert
murgatroid99 Apr 17, 2025
38e0072
proto-loader: Bump to 0.7.14
murgatroid99 Apr 17, 2025
c2b914d
Merge pull request #2944 from murgatroid99/proto-loader_0.7.14
murgatroid99 Apr 17, 2025
7905a76
proto-loader: Apply targetFileExtension to root files
murgatroid99 Apr 18, 2025
537b32f
Merge pull request #2946 from murgatroid99/proto-loader_root_file_ext…
murgatroid99 Apr 18, 2025
0157776
Merge pull request #2945 from murgatroid99/grpc-js-xds_rbac_filter
murgatroid99 Apr 21, 2025
1605b71
Add List method to Health service
MatiasManevi May 2, 2025
21d40b0
Merge pull request #2951 from MatiasManevi/health_list_js
murgatroid99 May 8, 2025
a1aff9d
grpc-js: Fix ability to set SNI with ssl_target_name_override option
murgatroid99 May 15, 2025
d6e43e9
Add generated files for list endpoint
MatiasManevi May 17, 2025
a89238d
Add generated files for list endpoint tests
MatiasManevi May 17, 2025
50759b5
Add grpc health list endpoint
MatiasManevi May 17, 2025
7729fb7
Merge pull request #2956 from murgatroid99/grpc-js_sni_fix
murgatroid99 May 21, 2025
82b331d
fix(grpc-js): fix jitter for client retries
ekscentrysytet Jun 4, 2025
f8a801b
grpc-js-xds: Add psm-light test job config
murgatroid99 Jun 9, 2025
eef4b08
Merge pull request #2960 from ekscentrysytet/fix_retry_jitter
murgatroid99 Jun 11, 2025
5756fe7
proto-loader: Update golden generated files with editions updates
murgatroid99 Jun 12, 2025
7ab3da2
Merge pull request #2963 from murgatroid99/proto-loader_update_golden
murgatroid99 Jun 12, 2025
110a273
grpc-js-xds: Combine endpoints for LOGICAL_DNS clusters
murgatroid99 Jun 13, 2025
7548f41
Merge pull request #2965 from murgatroid99/grpc-js-xds_dns_no_special…
murgatroid99 Jun 13, 2025
972bb23
Add load balancing example
murgatroid99 Jun 16, 2025
9877359
Merge pull request #2966 from murgatroid99/load_balancing_example
murgatroid99 Jun 17, 2025
d22becc
Add debugging example
murgatroid99 Jun 24, 2025
179dbfa
Merge pull request #2969 from murgatroid99/debugging_example
murgatroid99 Jun 24, 2025
d872278
fix(http2): bump connection window immediately after connect()
KoenRijpstra Jun 27, 2025
aeb7a5f
fix(http2): handle default initial window size correctly
KoenRijpstra Jun 27, 2025
b69bcad
fix(http2): rename connection flow control window option to grpc-node…
KoenRijpstra Jun 27, 2025
0e09b9c
fix(http2): move WINDOW_UPDATE handling to remoteSettings event
KoenRijpstra Jun 27, 2025
5670eb2
Update generated proto files with editions change
murgatroid99 Jul 1, 2025
31b431a
Merge pull request #2973 from murgatroid99/proto_editions_update
murgatroid99 Jul 1, 2025
549d858
proto-loader: Output functions to serialize and deserialize messages
murgatroid99 Jun 26, 2025
30e7287
Update generated proto files with type changes
murgatroid99 Jul 1, 2025
0df98ce
grpc-js: Regenerate test files in prepare script
murgatroid99 Jul 2, 2025
31c8b71
grpc-js-xds: Regenerate interop and test files in prepare script
murgatroid99 Jul 2, 2025
d9c8ac3
Merge pull request #2970 from murgatroid99/proto-loader_serialize_des…
murgatroid99 Jul 2, 2025
63a15e6
grpc-js: Add a single-subchannel channel implementation
murgatroid99 Jul 10, 2025
b88d545
grpc-js-xds: Update xds submodule to match grpc/grpc
murgatroid99 Jul 16, 2025
7fda577
grpc-js: Implement ORCA server-side per-call metrics
murgatroid99 Jul 16, 2025
869e515
grpc-js: round_robin: Start connecting to endpoints from a random index
murgatroid99 Jul 18, 2025
01db2bc
Merge pull request #2979 from murgatroid99/grpc-js_round_robin_random…
murgatroid99 Jul 18, 2025
fbf7b55
Bump proto-loader dependency
murgatroid99 Jul 21, 2025
9e2b9d0
Test with newer Node versions
murgatroid99 Jul 21, 2025
4eb4816
Don't install node-gyp
murgatroid99 Jul 21, 2025
ba52c1b
Log Node version
murgatroid99 Jul 21, 2025
b200797
Use nvm --delete-prefix option
murgatroid99 Jul 21, 2025
66f51d1
Add logging to tests that fail on new versions
murgatroid99 Jul 21, 2025
7360726
Add more logging to tests that fail on new versions
murgatroid99 Jul 21, 2025
1219c46
Don't expect IPv6 when resolving localhost in tests
murgatroid99 Jul 23, 2025
edadc63
Update proto-loader golden generated file
murgatroid99 Jul 23, 2025
259f5c9
Merge pull request #2980 from murgatroid99/test_newer_node_versions
murgatroid99 Jul 23, 2025
eaa3f4d
Merge pull request #2978 from murgatroid99/grpc-js_orca_server_per_call
murgatroid99 Jul 23, 2025
78999ac
grpc-js: Implement ORCA server-side OOB metrics
murgatroid99 Jul 24, 2025
f8e9360
Merge pull request #2983 from murgatroid99/grpc-js_orca_server_oob
murgatroid99 Jul 28, 2025
7e82de7
Merge pull request #2976 from murgatroid99/grpc-js_subchannel_channel
murgatroid99 Jul 28, 2025
ede914d
grpc-js: Implement ORCA client-side OOB metrics
murgatroid99 Jul 30, 2025
1f93bdf
Fix test build
murgatroid99 Jul 30, 2025
f6981bb
Merge pull request #2985 from murgatroid99/grpc-js_client_oob_metrics
murgatroid99 Jul 31, 2025
4b160d1
grpc-js: Implement ORCA client-side per-call metrics
murgatroid99 Jul 31, 2025
aaeac16
grpc-js: Declare buffer type to avoid build error
murgatroid99 Aug 1, 2025
2ea58f5
Merge pull request #2987 from murgatroid99/grpc-js_fix_buffer_type
murgatroid99 Aug 1, 2025
4645bfb
Merge branch 'master' into grpc-js_client_inline_metrics
murgatroid99 Aug 1, 2025
0e44501
Fix onCallEnded in XdsClusterImpl
murgatroid99 Aug 1, 2025
4799bde
Merge pull request #2986 from murgatroid99/grpc-js_client_inline_metrics
murgatroid99 Aug 1, 2025
73c5e7a
grpc-js: Declare buffer type to avoid build error
murgatroid99 Aug 1, 2025
c1b3eb0
Merge pull request #2988 from murgatroid99/grpc-js_fix_buffer_type_1.…
murgatroid99 Aug 4, 2025
2fb705e
Add list endpoint unit tests
MatiasManevi Aug 5, 2025
f6571a1
Merge pull request #2957 from MatiasManevi/health_list_endpoint
murgatroid99 Aug 6, 2025
83ece61
grpc-js: Implement weighted round robin
murgatroid99 Aug 6, 2025
a081158
grpc-health-check: Bump version to 2.1.0
murgatroid99 Aug 6, 2025
c7c6ae5
Merge pull request #2995 from murgatroid99/grpc-health-check_2.1.0
murgatroid99 Aug 6, 2025
a8d22dc
fix(http2): set default initial window size to 65535 if not specified
KoenRijpstra Aug 10, 2025
6573a0e
Merge pull request #2971 from KoenRijpstra/fix/early-connection-windo…
murgatroid99 Aug 11, 2025
13065ad
grpc-js: Implement weighted_round_robin LB policy
murgatroid99 Aug 14, 2025
e78322f
Fix an issue with the test
murgatroid99 Aug 14, 2025
2f74b88
Give more leeway on different QPS tests
murgatroid99 Aug 14, 2025
1aaa3fd
Merge pull request #2998 from murgatroid99/grpc-js_client_weighted_ro…
murgatroid99 Aug 14, 2025
f0d3f81
grpc-js: Move client OOB metrics API to the subchannel
murgatroid99 Aug 18, 2025
e975b85
Loosen test tolerance a little
murgatroid99 Aug 18, 2025
211be0f
grpc-js-xds: Remove .only from a test, switch port finding library
murgatroid99 Aug 18, 2025
202648b
Merge pull request #2999 from murgatroid99/grpc-js_client_oob_metrics…
murgatroid99 Aug 18, 2025
479fa71
Merge pull request #3000 from murgatroid99/grpc-js-xds_test_fix
murgatroid99 Aug 19, 2025
2121631
grpc-js-xds: Register weighted_round_robin as a custom LB policy
murgatroid99 Aug 22, 2025
f957004
grpc-js-xds: XdsClusterImpl: fix handling of non-complete pick result…
murgatroid99 Aug 22, 2025
1ec5996
Merge branch 'master' into grpc-js-xds_wrr
murgatroid99 Aug 22, 2025
c67f718
grpc-js: Properly unwrap subchannel in WRR picker
murgatroid99 Aug 22, 2025
9d601da
Merge pull request #3001 from murgatroid99/grpc-js-xds_wrr
murgatroid99 Aug 27, 2025
5ceac29
Merge pull request #2962 from murgatroid99/grpc-js-xds_light_test_job
murgatroid99 Aug 27, 2025
196ceaa
grpc-js-xds: interop: Fix order of submodule update and npm install
murgatroid99 Aug 29, 2025
cbece42
Merge pull request #3002 from murgatroid99/grpc-js-xds_interop_fix
murgatroid99 Aug 29, 2025
296bd2f
grpc-js-xds: Add wrr_locality to LB policy registry
murgatroid99 Sep 3, 2025
a7dfb68
Merge pull request #3003 from murgatroid99/grpc-js-xds_register_wrr_l…
murgatroid99 Sep 3, 2025
f2d1776
grpc-js-xds: interop server: Add support for sending custom metrics
murgatroid99 Sep 10, 2025
6e36a69
Merge remote-tracking branch 'upstream/@grpc/grpc-js@1.13.x' into grp…
murgatroid99 Sep 10, 2025
3950a1c
Merge pull request #3007 from murgatroid99/grpc-js_1.13_upmerge
murgatroid99 Sep 10, 2025
f0bbde1
grpc-js-xds: Enable federation by default
murgatroid99 Sep 10, 2025
1314e67
grpc-tools: build: Fix Windows build by skipping installing NuGet
murgatroid99 Sep 11, 2025
4267749
Merge pull request #3011 from murgatroid99/grpc-tools_windows_build_fix
murgatroid99 Sep 11, 2025
272851e
grpc-tools: Fix Mac build by allowing lower CMake versions
murgatroid99 Sep 11, 2025
82ee40c
Merge pull request #3013 from murgatroid99/grpc-tools_mac_build_fix
murgatroid99 Sep 11, 2025
67154af
Merge pull request #3008 from murgatroid99/grpc-js-xds_client_wrr_int…
murgatroid99 Sep 12, 2025
a432dbd
Merge pull request #3009 from murgatroid99/grpc-js-xds_deexperimental…
murgatroid99 Sep 12, 2025
26c5fe4
grpc-js(-xds): Bump to 1.14.0 and update README
murgatroid99 Sep 12, 2025
3dd281b
Merge pull request #3014 from murgatroid99/grpc-js_v1.14_bump
murgatroid99 Sep 15, 2025
6fb1d91
Merge tag '@grpc/grpc-js@1.14.0' into feature/sync-fork
appurva21 Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 7 additions & 7 deletions .github/workflows/grpc-tools-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ on:
branches:
- master

permissions:
permissions:
contents: read # to fetch code (actions/checkout)

jobs:
linux_build:
name: Linux grpc-tools Build
Expand All @@ -23,7 +23,7 @@ jobs:
run: |
docker build -t kokoro-native-image tools/release/native
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $GITHUB_WORKSPACE:$GITHUB_WORKSPACE kokoro-native-image $GITHUB_WORKSPACE/packages/grpc-tools/build_binaries.sh
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: grpc-tools_linux
path: artifacts/
Expand All @@ -36,7 +36,7 @@ jobs:
submodules: recursive
- name: Build
run: packages/grpc-tools/build_binaries.sh
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: grpc-tools_macos
path: artifacts/
Expand All @@ -55,7 +55,7 @@ jobs:
- name: Build
run: powershell -File ./packages/grpc-tools/build_binaries.ps1
shell: cmd
- uses: actions/upload-artifact@v1
- uses: actions/upload-artifact@v4
with:
name: grpc-tools_windows_${{matrix.arch}}
path: artifacts/
Expand All @@ -64,12 +64,12 @@ jobs:
runs-on: ubuntu-latest
needs: [linux_build, macos_build, windows_build]
steps:
- uses: actions/download-artifact@v2
- uses: actions/download-artifact@v4
- name: Copy
run: |
mkdir artifacts
cp -r ./**/* artifacts/
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: combined-artifacts
path: artifacts/
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
[![Build Status](https://travis-ci.org/grpc/grpc-node.svg?branch=master)](https://travis-ci.org/grpc/grpc-node)
# gRPC on Node.js

## Implementations
Expand Down
8 changes: 5 additions & 3 deletions doc/environment_variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ can be set.
checked in order, and the first one that has a value is used.

* no_grpc_proxy, no_proxy
A comma separated list of hostnames to connect to without using a proxy even
if a proxy is set. These variables are checked in order, and the first one
A comma separated list of hostnames, IP addresses,
or CIDR blocks to connect to without using a proxy even
if a proxy is set, for example: no_proxy=example.com,192.168.0.1,192.168.0.0/16.
These variables are checked in order, and the first one
that has a value is used.

* GRPC_SSL_CIPHER_SUITES
Expand Down Expand Up @@ -66,4 +68,4 @@ can be set.
* GRPC_NODE_USE_ALTERNATIVE_RESOLVER
Allows changing dns resolve behavior and parse DNS server authority as described in https://github.com/grpc/grpc/blob/master/doc/naming.md
- true - use alternative resolver
- false - use default resolver (default)
- false - use default resolver (default)
27 changes: 27 additions & 0 deletions examples/debugging/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Debugging

Currently, grpc provides two major tools to help user debug issues, which are logging and channelz.

## Logs

gRPC has put substantial logging instruments on critical paths of gRPC to help users debug issues. The [Environment Variables](https://github.com/grpc/grpc-node/blob/master/doc/environment_variables.md) doc describes the environment variables that control debug logging.

To enable full debug logging, run the code with the following environment variables: `GRPC_TRACE=all GRPC_VERBOSITY=DEBUG`.

## Channelz

We also provide a runtime debugging tool, Channelz, to help users with live debugging.

See the channelz blog post here ([link](https://grpc.io/blog/a-short-introduction-to-channelz/)) for details about how to use channelz service to debug live program.

## Try it

The example is able to showcase how logging and channelz can help with debugging. See the channelz blog post linked above for full explanation.

```
node server.js
```

```
node client.js
```
97 changes: 97 additions & 0 deletions examples/debugging/client.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/*
*
* Copyright 2025 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const parseArgs = require('minimist');

var PROTO_PATH = __dirname + '/../protos/helloworld.proto';

const packageDefinition = protoLoader.loadSync(
PROTO_PATH,
{keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
});
var helloProto = grpc.loadPackageDefinition(packageDefinition).helloworld;

function serverBindPort(server, port) {
return new Promise((resolve, reject) => {
server.bindAsync(port, grpc.ServerCredentials.createInsecure(), (error, port) => {
if (error) {
reject(error);
} else {
resolve(port);
}
})
});
}

const addressString = 'ipv4:///127.0.0.1:10001,127.0.0.1:10002,127.0.0.1:10003';

function callSayHello(client, name) {
return new Promise((resolve, reject) => {
const deadline = new Date();
deadline.setMilliseconds(deadline.getMilliseconds() + 150);
client.sayHello({name}, {deadline}, (error, response) => {
if (error) {
reject(error);
} else {
resolve(response);
}
});
});
}

async function main() {
const argv = parseArgs(process.argv.slice(2), {
string: ['addr', 'name'],
default: {addr: 'localhost:50051', name: 'world'}
});

// Set up the server serving channelz service.
const channelzServer = new grpc.Server();
grpc.addAdminServicesToServer(channelzServer);
await serverBindPort(channelzServer, argv.addr);

const roundRobinServiceConfig = {
methodConfig: [],
loadBalancingConfig: [{ round_robin: {} }]
};
const client = new helloProto.Greeter(addressString, grpc.credentials.createInsecure(), {'grpc.service_config': JSON.stringify(roundRobinServiceConfig)});

// Contact the server and print out its response

// Make 100 SayHello RPCs
for (let i = 0; i < 100; i++) {
try {
const response = await callSayHello(client, argv.name);
console.log(`Greeting: ${response.message}`);
} catch (e) {
console.log(`could not greet: ${e.message}`);
}
}

// Unless you exit the program (e.g. CTRL+C), channelz data will be available for querying.
// Users can take time to examine and learn about the info provided by channelz.
setInterval(() => {}, 10000);
}

main();
79 changes: 79 additions & 0 deletions examples/debugging/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
*
* Copyright 2025 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

var PROTO_PATH = __dirname + '/../protos/helloworld.proto';

const packageDefinition = protoLoader.loadSync(
PROTO_PATH,
{keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
});
var helloProto = grpc.loadPackageDefinition(packageDefinition).helloworld;

const greeterImplementation = {
sayHello: (call, callback) => {
callback(null, { message: `Hello ${call.request.name}`});
}
};

const slowGreeterImplementation = {
sayHello: (call, callback) => {
const waitTimeMs = 100 + (Math.random() * 100)|0;
setTimeout(() => {
callback(null, { message: `Hello ${call.request.name}`});
}, waitTimeMs);
}
}

function serverBindPort(server, port) {
return new Promise((resolve, reject) => {
server.bindAsync(`0.0.0.0:${port}`, grpc.ServerCredentials.createInsecure(), (error, port) => {
if (error) {
reject(error);
} else {
resolve(port);
}
})
});
}

async function main() {
const channelzServer = new grpc.Server();
grpc.addAdminServicesToServer(channelzServer);
await serverBindPort(channelzServer, 50052);

const server1 = new grpc.Server();
server1.addService(helloProto.Greeter.service, greeterImplementation);
await serverBindPort(server1, 10001);

const server2 = new grpc.Server();
server2.addService(helloProto.Greeter.service, greeterImplementation);
await serverBindPort(server2, 10002);

const server3 = new grpc.Server();
server3.addService(helloProto.Greeter.service, slowGreeterImplementation);
await serverBindPort(server3, 10003);
}

main();
57 changes: 57 additions & 0 deletions examples/load_balancing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Load balancing

This examples shows how `Client` can pick different load balancing policies.

## Try it

```
node server.js
```

```
node client.js
```

## Explanation

Two echo servers are serving on "0.0.0.0:50051" and "0.0.0.0:50052". They will include their serving address in the response. So the server on "0.0.0.0:50051" will reply to the RPC with this is examples/load_balancing (from 0.0.0.0:50051).

Two clients are created, to connect to both of these servers. Each client picks a different load balancer (using the `grpc.service_config` option): `pick_first` or `round_robin`.

Note that balancers can also be switched using service config, which allows service owners (instead of client owners) to pick the balancer to use. Service config doc is available at https://github.com/grpc/grpc/blob/master/doc/service_config.md.

### pick_first

The first client is configured to use `pick_first`. `pick_first` tries to connect to the first address, uses it for all RPCs if it connects, or try the next address if it fails (and keep doing that until one connection is successful). Because of this, all the RPCs will be sent to the same backend. The responses received all show the same backend address.

```
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
```

### round_robin

The second client is configured to use `round_robin`. `round_robin` connects to all the addresses it sees, and sends an RPC to each backend one at a time in order. E.g. the first RPC will be sent to backend-1, the second RPC will be sent to backend-2, and the third RPC will be sent to backend-1 again.

```
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50052)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50052)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50052)
this is examples/load_balancing (from 0.0.0.0:50051)
this is examples/load_balancing (from 0.0.0.0:50052)
this is examples/load_balancing (from 0.0.0.0:50051)
```

Note that it's possible to see two consecutive RPC sent to the same backend. That's because `round_robin` only picks the connections ready for RPCs. So if one of the two connections is not ready for some reason, all RPCs will be sent to the ready connection.
Loading
Loading