Commit Graph

735 Commits

Author SHA1 Message Date
Michael Lumish 60eb600410 move createGoogleDefaultCredentials from grpc-js to grpc-js-xds 2021-02-25 10:15:57 -08:00
Michael Lumish 40c19ea28b grpc-js: Don't propagate non-numeric errors from auth plugins 2021-02-16 12:42:10 -08:00
Michael Lumish 24d1a0486b
Merge pull request #1688 from murgatroid99/grpc-js_backoff_ref
grpc-js: Ref and unref backoff timer
2021-02-12 15:08:04 -08:00
Michael Lumish 097d63b14b grpc-js: Add more details to 'Failed to start HTTP/2 stream' error 2021-02-12 11:03:00 -08:00
Michael Lumish cd14345cb4 grpc-js: Ref and unref backoff timer 2021-02-11 09:55:24 -08:00
Michael Lumish 9e084bce19 Handle absence of Timer#hasRef on older Node versions 2021-02-08 11:39:15 -08:00
Michael Lumish 3806a99760 Add handling for early name resolution failures 2021-02-08 11:23:05 -08:00
Michael Lumish 259e00b866 grpc-js: Loosen dependency on @types/node 2021-02-03 11:54:13 -08:00
Michael Lumish 887d2ef677 Kick the ResolvingLoadBalancer out of IDLE when the first call is started. 2021-02-02 14:16:10 -08:00
Michael Lumish e35a7d0a25 Merge branch 'master' into grpc-js_config_selector 2021-02-01 14:20:36 -08:00
Michael Lumish 8e5f5bc18a grpc-js: Add ConfigSelector to Resolver API and plumb it through the channel 2021-02-01 14:18:24 -08:00
Michael Lumish 5ac9a1c2b6 grpc-js: Move call to user code out of try block 2021-01-25 13:24:39 -08:00
Andrey Melnik 7837e8e845 feature(grpc-js): Add possibility to provide maxSessionMemory http2 option through ChannelOptions 2021-01-20 01:00:57 +03:00
Michael Lumish 36986f618a grpc-js: round robin: re-resolve when subchannels go idle 2021-01-19 13:43:56 -08:00
Michael Lumish 0b026be131
Merge pull request #1648 from murgatroid99/grpc-js_deadline_filter_fast_cancel
grpc-js: End calls faster if the deadline has already passed
2021-01-07 12:55:49 -08:00
Michael Lumish fe4bd2641a
Merge pull request #1654 from 418sec/1-npm-grpc
Security Fix for Prototype Pollution - huntr.dev
2021-01-07 12:54:54 -08:00
Michael Lumish 374309be66 grpc-js: Propagate internal stream errors from the http2 module 2021-01-05 10:36:30 -08:00
d3v53c 6101694397 added test case 2020-12-07 22:40:14 -08:00
d3v53c b2530119b9 prototype pollution fix 2020-12-07 22:29:18 -08:00
Michael Lumish 21da990cb0 grpc-js: End calls faster if the deadline has already passed 2020-12-02 12:00:19 -08:00
Michael Lumish a006be07f4 grpc-js-xds: Shutdown the xDS client used by the resolver when the channel shuts down 2020-11-25 12:33:36 -08:00
Michael Lumish c050f97534 grpc-js: Make calls use the min of parent and own deadline when both are provided 2020-11-18 13:08:06 -08:00
Michael Lumish b78e5a0762
Merge pull request #1622 from murgatroid99/grpc-js_1.2.x
grpc-js: Update to 1.2.0
2020-11-11 14:39:39 -08:00
Michael Lumish ca6cf0f20b
Merge pull request #1616 from murgatroid99/grpc-js_deadline_cancellation_propagation
grpc-js: Implement deadline and cancellation propagation
2020-11-11 14:38:48 -08:00
Michael Lumish adfd4db9ea grpc-js: Update to 1.2.0 2020-11-09 10:53:44 -08:00
Michael Lumish cd2713f42a grpc-js: Rearrange connectivity state enum to match the native library 2020-11-09 10:45:57 -08:00
Michael Lumish 57428bf6fa
Merge pull request #1607 from murgatroid99/grpc-js_xds_separate_package
grpc-js: Separate xds code into a separate plugin package
2020-11-05 14:42:09 -08:00
Michael Lumish 38e4e48f4d
Merge pull request #1571 from murgatroid99/grpc-js_header_block_size
grpc-js: Allow clients and servers to send metadata of unlimited size
2020-11-05 13:29:58 -08:00
Michael Lumish ae2b64bd65 grpc-js: Implement deadline and cancellation propagation 2020-10-30 11:38:30 -07:00
Michael Lumish d8021d20d9
Merge pull request #1614 from hugebdu/master
grpc-js: support adding/removing services on started server
2020-10-29 14:22:52 -07:00
Daniel Shmuglin 51ca00298e implement Server#unregisterService(serviceDefinition) 2020-10-29 11:33:29 +02:00
Daniel Shmuglin 7c3ccda8ff implement Server#unregister(handlerName) 2020-10-29 10:54:33 +02:00
Daniel Shmuglin e49524a2ba Server#addService - lift the limitation of adding a new service to started server 2020-10-29 10:24:31 +02:00
Michael Lumish e4b69a8ee1 grpc-js: Add support for grpc.max_reconnect_backoff_ms channel arg 2020-10-28 13:27:44 -07:00
Michael Lumish afe4c3e082
Merge pull request #1605 from murgatroid99/grpc-js_prototype_pollution
grpc-js: Prevent prototype pollution in loadPackageDefinition
2020-10-23 10:49:18 -07:00
Michael Lumish f312326e9c Set the default port of 80 explicitly in http_proxy 2020-10-23 10:15:56 -07:00
Michael Lumish fd406fbef1 Use a regular dependency for proto-loader 2020-10-22 10:27:03 -07:00
Michael Lumish 9699de5ec6 Re-add grpc-js proto-loader dev dependency 2020-10-22 09:59:23 -07:00
Michael Lumish e71caded1b Put the google-auth-library dependency back in grpc-js 2020-10-21 14:10:37 -07:00
Michael Lumish c86f08c770 Document experimental namespace instability 2020-10-21 13:56:18 -07:00
Michael Lumish a6a8639343 grpc-js: Separate xds code into a separate plugin package 2020-10-21 13:45:22 -07:00
Michael Lumish 967eeb5443 grpc-js: Prevent prototype pollution in loadPackageDefinition 2020-10-20 11:19:22 -07:00
Michael Lumish bbd7617ba7 Move grpc-js xDS features into a separate package 2020-10-12 10:23:03 -07:00
Michael Lumish 73d3c307c9 grpc-js: xds: Add more logging around adding and removing eds and cds watchers 2020-10-05 11:27:18 -07:00
Michael Lumish a5cc154c8e
Merge pull request #1568 from murgatroid99/grpc-js_xds_credentials_bootstrap_change
grpc-js: xDS: handle insecure and google_default bootstrap creds
2020-09-28 14:08:46 -07:00
Michael Lumish dcf47460da grpc-js: xDS: Do not remove watchers in onResourceDoesNotExist 2020-09-24 14:01:15 -07:00
Michael Lumish 21adc97c4a
Merge pull request #1587 from badsyntax/export-client-streaming-type
grpc-js: Export handleClientStreamingCall type
2020-09-24 10:14:41 -07:00
Michael Lumish 62d9b1ad9b
Merge pull request #1586 from grpc/@grpc/grpc-js@1.1.x
Merge @grpc/grpc js@1.1.x into master
2020-09-24 09:42:45 -07:00
Richard Willis f3d14bd2b3 grpc-js: export handleClientStreamingCall type 2020-09-24 08:19:33 +01:00
Michael Lumish 0713b28da5 Revert testing changes 2020-09-22 12:09:13 -07:00
Michael Lumish fbdfcd4ee9 Fix tracer setting lines in xds script 2020-09-22 10:56:11 -07:00
Michael Lumish 474a496a7a Update submodules in xds test script 2020-09-22 00:47:55 -07:00
Michael Lumish 2574952e06 Use full node path in client_cmd 2020-09-21 14:15:21 -07:00
Michael Lumish c259edd7f8 Patch xds python script with debug logging 2020-09-21 13:33:37 -07:00
Michael Lumish a45d8da204 Add debugging output to xds scripts 2020-09-21 11:12:38 -07:00
Michael Lumish a1600812d1 Move timer initialization to the beginning of channel construction 2020-09-17 13:18:11 -07:00
Michael Lumish 6a32c00ed2 Bump grpc-js to 1.1.7 2020-09-17 12:15:47 -07:00
Michael Lumish 2791dbbb23 grpc-js: Add a timer that holds the event loop open while there are pending calls 2020-09-17 11:25:56 -07:00
Michael Lumish c0f31a8a02 grpc-js: Source nvm.sh in profile files in xds script to get nvm in subprocesses 2020-09-15 14:52:00 -07:00
Michael Lumish 8162efdf54 grpc-js: Install dependencies in xds script 2020-09-14 15:48:03 -07:00
Michael Lumish d32734f491 grpc-js: Allow clients and servers to send metadata of unlimited size 2020-09-11 13:03:31 -07:00
Michael Lumish 58801acf1e grpc-js: Fix path handling in xds interop script 2020-09-11 10:47:09 -07:00
Michael Lumish b99872eee7 grpc-js: xDS: handle insecure and google_default bootstrap creds 2020-09-10 14:52:24 -07:00
Michael Lumish 5e0feb5d74
Merge pull request #1552 from murgatroid99/grpc-js_xds_interop_client
grpc-js: Enable the xds URL scheme and add an interop test for it
2020-09-10 10:25:59 -07:00
Michael Lumish 46ac39b1e2 Add copyright notice to the new script 2020-09-10 09:56:45 -07:00
Michael Lumish d8e00689d0 Bump grpc-js to 1.1.6 2020-09-03 14:32:30 -07:00
Michael Lumish a45fb43091 Merge branch 'master' into grpc-js_xds_interop_client 2020-09-02 16:06:02 -07:00
Michael Lumish 1fc284f59d
Revert "fix(grpc-js): Add support for impl type to server.addService" 2020-09-02 15:17:57 -07:00
Michael Lumish 2d4ab786da Add xds kokoro config and update the test script 2020-09-02 15:00:46 -07:00
Michael Lumish e21f3374e8
Merge pull request #1556 from slavovojacek/master
fix(grpc-js): Add support for impl type to server.addService
2020-09-02 13:39:20 -07:00
Michael Lumish 1178d553e0
Merge pull request #1557 from mad-it/master
fix(grpc-js): preserve original error code when the handler of a readable stream throws an error
2020-09-02 13:38:20 -07:00
Slavo Vojacek fba1ee0cc3 fix(grpc): Fix typings 2020-09-02 20:32:31 +01:00
Slavo Vojacek 0d1d5a12fa chore(Typings): Update types 2020-09-02 16:05:10 +01:00
Jaroslav Šmolík b2d89820a3 Fix ClientOptions types
Remove index signature from ChannelOptions to fix intersection error
described in #1558 which causes issues on using ClientOptions direct
fields with TypeScript.

Removing of index signature required few minor changes:
 - adding few constant types that were used throughout the app
 - using `as const` assertion in xds-client
 - using not-so-great type cast in channelOptionsEqual

Alternative solution would be removing the index signature from
ChannelOptions explicitly in ClientOptions definition, which is not
trivial and probably calls for a generic type helper.

See: https://github.com/grpc/grpc-node/issues/1558
Fixes: #1558
2020-09-01 21:47:52 +02:00
Algin Maduro aaee068a69 fix: add addition check if the provided code is valid gRPC code 2020-09-01 13:28:23 +02:00
Algin Maduro 5e42be1b34 fix: preserve original error code if present 2020-09-01 12:59:07 +02:00
Michael Lumish 2c98a3d3f9 More EDS logging, and improved weight handling 2020-08-31 15:18:00 -07:00
Michael Lumish 286c81a924 Handle endpoint health_status, improve some logging 2020-08-31 14:04:53 -07:00
Slavo Vojacek 38e988ea03 fix(grpc-js): Add support for impl type to server.addService 2020-08-31 20:34:14 +01:00
WK 158d0dd99f
Update subchannel.ts 2020-09-01 01:40:14 +08:00
WK 7fc0035f7f
Update subchannel.ts 2020-09-01 01:30:35 +08:00
WK 148b273f19
Update http_proxy.ts 2020-09-01 01:28:53 +08:00
Michael Lumish 62bd1cab68 Add granular verbosity option to xDS interop client 2020-08-31 09:55:29 -07:00
WK 6a99983ed1
Undo changes. 2020-08-30 14:56:23 +08:00
WK 08350ec0ef
Update subchannel.ts 2020-08-30 14:52:20 +08:00
WK 6f3db6f4d8
Update http_proxy.ts 2020-08-30 14:49:54 +08:00
WK c536178c67
Fixed connectivity to Google PubSub over proxy
Latest version has caused @google-cloud/pubsub fail to connect over a proxy connection.


Snapshot of error:

2020-08-29T10:52:45.340Z | proxy | Successfully connected to pubsub.googleapis.c
om:443 through proxy 172.16.52.252:443
2020-08-29T10:52:45.370Z | subchannel | 172.16.52.252:443 CONNECTING -> TRANSIEN
T_FAILURE
2020-08-29T10:52:45.372Z | pick_first | CONNECTING -> TRANSIENT_FAILURE
2020-08-29T10:52:45.373Z | resolving_load_balancer | dns:172.16.52.252:443 CONNE
CTING -> TRANSIENT_FAILURE
2020-08-29T10:52:45.375Z | channel | Pick result: TRANSIENT_FAILURE subchannel:
undefined status: 14 No connection established
2020-08-29T10:52:45.377Z | call_stream | [11] cancelWithStatus code: 14 details:
 "No connection established"
2020-08-29T10:52:45.379Z | call_stream | [11] ended with status: code=14 details
="No connection established"
2020-08-29T10:52:45.381Z | connectivity_state | dns:172.16.52.252:443 CONNECTING
 -> TRANSIENT_FAILURE


Before proposed fix:

    static getDefaultAuthority(target) {
        return target.path;  // this returns "pubsub.googleapis.com:443"
    }

After proposed fix:

    static getDefaultAuthority(target) {
        const hostPort = uri_parser_1.splitHostPort(target.path);  // target.path is "pubsub.googleapis.com:443"
        if (hostPort !== null) {
            return hostPort.host; // this returns "pubsub.googleapis.com"
        }
        else {
            throw new Error(`Failed to parse target ${uri_parser_1.uriToString(target)}`);
        }
    }
2020-08-29 19:05:42 +08:00
Michael Lumish 36db24e39f Set a deadline on outgoing requests in the xds interop client 2020-08-28 12:50:53 -07:00
Michael Lumish 5827b3e01d Reset saved LRS settings when the LRS stream ends 2020-08-28 11:49:03 -07:00
Michael Lumish b9962feff0 Add more interop client logging 2020-08-28 11:17:52 -07:00
Michael Lumish 60bc11285b Send buffered stats when starting LRS stream 2020-08-28 10:43:58 -07:00
Michael Lumish 338941d664 Add more LRS tracing 2020-08-28 10:06:57 -07:00
Michael Lumish 8269fd4bca priority: improve tracing, cancel failover timer when selecting child 2020-08-28 09:50:33 -07:00
Michael Lumish 597fc1c57b Use the same channel for ADS and LRS clients 2020-08-27 18:14:03 -07:00
Michael Lumish 82037fcdaf Add error logging to xDS interop client 2020-08-27 15:54:05 -07:00
Michael Lumish 1a47f78f4f Fix some trace logs, increase XdsClient keepalive interval 2020-08-27 14:17:29 -07:00
Michael Lumish c83d5a7c4d Fix keepalive ping timing, change some trace logs 2020-08-27 13:23:07 -07:00
Michael Lumish 665632f480 Add more keepalive logging 2020-08-27 12:47:53 -07:00
Michael Lumish 197cc84e7a Add more tracers, fix onResourceDoesNotExist handling 2020-08-27 11:05:54 -07:00
Michael Lumish 2404446234 Fix RDS domain search 2020-08-25 14:10:54 -07:00
Michael Lumish 36a6580921 Add more XdsClient tracing 2020-08-25 13:49:28 -07:00
Michael Lumish af949674da Add XdsClient tracers, and stream start backoff, and fix some bugs 2020-08-25 13:22:30 -07:00
Michael Lumish 8580204a73 Fix incorrect 'Method not implemented' error 2020-08-25 11:05:22 -07:00
Michael Lumish ee52de4f98 Load proto files with json option to handle Any properly 2020-08-25 10:54:56 -07:00
Michael Lumish 302b87183e Fix bug in bootstrap file validation 2020-08-25 10:05:44 -07:00
Michael Lumish 7e35657cf1 node.cluster is optional in the bootstrap file 2020-08-25 09:45:47 -07:00
Michael Lumish 0e8e1adfc4 More test script fixes, don't run xDS tests in PR tests 2020-08-24 15:53:07 -07:00
Michael Lumish 1e223048b8 Grab xds client logs in kokoro config 2020-08-21 12:58:05 -07:00
Michael Lumish eb849db1aa Add a log line to the top level of xds-interop-client 2020-08-21 12:47:17 -07:00
Michael Lumish 362b77259f Add more logging to the xDS interop client 2020-08-21 11:02:33 -07:00
Simon Woolf 141dfeb790 Channel#watchConnectivityState: handle infinite deadlines correctly
Per https://grpc.github.io/grpc/node/grpc.html#~Deadline:
"If it is a finite number, it is treated as a number of milliseconds
since the Unix Epoch. If it is Infinity, the deadline will never be
reached. If it is -Infinity, the deadline has already passed."
2020-08-21 18:18:30 +01:00
Michael Lumish 14eea7d6d2 Add separate trace and verbosity env variables for this library 2020-08-21 09:46:45 -07:00
Michael Lumish f4e9b63ddf Trace all 2020-08-21 00:10:35 -07:00
Michael Lumish bc5c29604b More test script fixes 2020-08-20 14:20:47 -07:00
Michael Lumish f246833876 Some test script fixes 2020-08-20 14:00:46 -07:00
Michael Lumish 46c065a75b chmod a+x xds.sh 2020-08-20 13:37:17 -07:00
Michael Lumish 9a73734650 Actually add the xds interop script 2020-08-20 13:36:16 -07:00
Michael Lumish 305e192700 Add xds interop test script to Linux tests 2020-08-20 13:31:23 -07:00
Michael Lumish ffef02c943 Merge branch 'master' into grpc-js_xds_interop_client 2020-08-20 11:05:00 -07:00
Michael Lumish 5abb47390f grpc-js: Move a couple of dev dependencies to prod 2020-08-20 09:24:57 -07:00
Michael Lumish 7efc5358e3
Merge pull request #1524 from murgatroid99/grpc-js_cancelled_event
grpc-js: Clean up call even if status throws an error
2020-08-19 10:09:53 -07:00
Michael Lumish c0b80a3593
Merge pull request #1548 from richardpringle/master
Prevent mutation of default headers
2020-08-19 09:55:09 -07:00
Michael Lumish 68b0609feb
Merge pull request #1525 from murgatroid99/grpc-js_server_stream_end_metadata
grpc-js: Add end(md?: Metadata) method to streaming server calls
2020-08-19 09:29:52 -07:00
Michael Lumish 4ba1639ed6
Merge pull request #1526 from murgatroid99/grpc-js_get_peer
grpc-js: Implement getPeer on the client and server
2020-08-19 09:27:56 -07:00
Richard Pringle 917b4fca77
Prevent mutation of default headers 2020-08-19 10:24:20 -04:00
Michael Lumish 7493052672 grpc-js: Move @types/node to a production dependency 2020-08-18 15:13:12 -07:00
Thomas Hunter II 1583786478
Add link to grpc docs in @grpc/grpc-js README
- Adds a link to `grpc` documentation
- Addresses some of the concerns in #1540
2020-08-16 13:50:23 -07:00
Martin f0ed1aba14
Fix incorrectly named grpc-tools flag
Was  "--generate_package_definitions" (with an s) but should be "generate_package_definition" as in the documentation here: https://github.com/grpc/grpc-node/tree/master/packages/grpc-tools
2020-08-12 16:51:42 +02:00
Michael Lumish ba7a035770 Enable 'xds' target scheme 2020-08-10 15:50:46 -07:00
Michael Lumish 94a4779bb6 Add xDS interop proto files 2020-08-10 15:49:24 -07:00
Michael Lumish 409ad95020 Add dependencies for xDS, plus some fixes 2020-08-10 15:48:42 -07:00
Michael Lumish cb63d6afcd grpc-js: Add xDS interop client and associated generated code 2020-08-10 15:48:03 -07:00
Michael Lumish 6c0012499a Implement onResourceDoesNotExist notifications 2020-08-06 13:30:24 -07:00
Michael Lumish 5dcce9ebf1 grpc-js: XdsClient: separate ADS stream handling by message type 2020-08-06 13:08:59 -07:00
Michael Lumish 76bb17091b Stop processing RDS requests after finding the matching one 2020-08-05 12:57:54 -07:00
Michael Lumish 0b146c8b07 Address PR comments 2020-08-05 12:38:43 -07:00
Michael Lumish 33a4c85f89 grpc-js: Implement getPeer on the client and server 2020-08-04 13:04:59 -07:00
Michael Lumish d9b3f9f364 grpc-js: Add end(md?: Metadata) method to streaming server calls 2020-08-04 11:37:08 -07:00
Michael Lumish ddec63af20 grpc-js: Clean up call even if status throws an error 2020-08-04 11:22:18 -07:00
Michael Lumish 52eb0df1f8 grpc-js: Add XdsResolver and corresponding XdsClient behavior 2020-08-03 10:44:28 -07:00
Michael Lumish a3b27be211 Address a couple of comments 2020-07-28 15:43:39 -07:00
Michael Lumish 669d254045 grpc-js: Add LrsLoadBalancer class 2020-07-28 11:40:42 -07:00
Michael Lumish 3c948f5d66 Fixes from PR comments 2020-07-27 09:17:06 -07:00
Michael Lumish 9fb6f48bd6 grpc-js: xDS: add support for dropping calls and reporting drops 2020-07-24 16:06:37 -07:00
Michael Lumish fbf2a487f1 Fix Metadata import path 2020-07-24 09:56:33 -07:00
Michael Lumish c9074b634c Finish implementing the CDS load balancer 2020-07-23 14:21:53 -07:00
Michael Lumish c4c53a6e9b Merge branch 'master' into grpc-js_cds_lb_policy 2020-07-23 14:02:42 -07:00
Michael Lumish 0236633ac5
Merge pull request #1512 from murgatroid99/grpc-js_default_service_config
grpc-js: Fix handling of unsuccessful TXT record lookups
2020-07-23 13:16:53 -07:00
Michael Lumish f05e9fb3f4 Refine service config error handling 2020-07-23 12:57:13 -07:00
Michael Lumish 1fc0895d17 grpc-js: Fix handling of unsuccessful TXT record lookups 2020-07-23 11:36:38 -07:00