From 811f7835b2146e6816db514a4bc0ee6603f31c97 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Fri, 20 Jul 2018 15:59:51 +0200 Subject: [PATCH 01/16] Proactively adding electron 3 support. --- .../tools/run_tests/artifacts/build_artifact_node.bat | 2 +- .../tools/run_tests/artifacts/build_artifact_node.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.bat b/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.bat index 85daa10b..eb8f7553 100644 --- a/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.bat +++ b/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.bat @@ -16,7 +16,7 @@ set arch_list=ia32 x64 set node_versions=4.0.0 5.0.0 6.0.0 7.0.0 8.0.0 9.0.0 10.0.0 -set electron_versions=1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 2.0.0 +set electron_versions=1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 2.0.0 3.0.0 set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm diff --git a/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.sh b/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.sh index a98c775d..d25bed84 100755 --- a/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.sh +++ b/packages/grpc-native-core/tools/run_tests/artifacts/build_artifact_node.sh @@ -17,7 +17,7 @@ set -ex arch_list=( ia32 x64 ) node_versions=( 4.0.0 5.0.0 6.0.0 7.0.0 8.0.0 9.0.0 10.0.0 ) -electron_versions=( 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 2.0.0 ) +electron_versions=( 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 2.0.0 3.0.0 ) while true ; do case $1 in From dda0d056421ec8c671133b69ab2a257fa0e2efcc Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 29 Aug 2018 01:45:51 +0200 Subject: [PATCH 02/16] Updating submodule to the upstream 1.15 branch. --- packages/grpc-native-core/binding.gyp | 4 ++-- packages/grpc-native-core/deps/grpc | 2 +- packages/grpc-native-core/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/grpc-native-core/binding.gyp b/packages/grpc-native-core/binding.gyp index b1947b9f..4b2791f5 100644 --- a/packages/grpc-native-core/binding.gyp +++ b/packages/grpc-native-core/binding.gyp @@ -91,7 +91,7 @@ 'GPR_BACKWARDS_COMPATIBILITY_MODE', 'GRPC_ARES=0', 'GRPC_UV', - 'GRPC_NODE_VERSION="1.15.0-dev"' + 'GRPC_NODE_VERSION="1.15.0-pre1"' ], 'conditions': [ ['grpc_gcov=="true"', { @@ -929,7 +929,7 @@ 'deps/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc', 'deps/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc', 'deps/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc', - 'deps/grpc/src/cpp/ext/filters/census/grpc_context.cc', + 'deps/grpc/src/core/ext/filters/census/grpc_context.cc', 'deps/grpc/src/core/ext/filters/max_age/max_age_filter.cc', 'deps/grpc/src/core/ext/filters/message_size/message_size_filter.cc', 'deps/grpc/src/core/ext/filters/http/client_authority_filter.cc', diff --git a/packages/grpc-native-core/deps/grpc b/packages/grpc-native-core/deps/grpc index 8ba45636..1e80f2a4 160000 --- a/packages/grpc-native-core/deps/grpc +++ b/packages/grpc-native-core/deps/grpc @@ -1 +1 @@ -Subproject commit 8ba45636295019b101c1e9579423d4de41c4c59e +Subproject commit 1e80f2a4b1ca41e77814306d4f0cf09d45641640 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index 9cb0cdaa..d966465c 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.15.0-dev", + "version": "1.15.0-pre1", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/", From 2b28598312ed57c7ddbf089c065c82d48e3a4e2f Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 31 Aug 2018 14:25:19 -0700 Subject: [PATCH 03/16] Native server: don't pass non-integer status codes to core --- packages/grpc-native-core/src/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-native-core/src/server.js b/packages/grpc-native-core/src/server.js index b238de04..b2b53889 100644 --- a/packages/grpc-native-core/src/server.js +++ b/packages/grpc-native-core/src/server.js @@ -52,7 +52,7 @@ function handleError(call, error) { if (error.hasOwnProperty('message')) { status.details = error.message; } - if (error.hasOwnProperty('code')) { + if (error.hasOwnProperty('code') && Number.isInteger(error.code)) { status.code = error.code; if (error.hasOwnProperty('details')) { status.details = error.details; From 8436abf2ea3a3526b704a04806423a16fb146ef9 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 12 Sep 2018 10:37:36 -0700 Subject: [PATCH 04/16] Native: bump to 1.15.0 --- packages/grpc-native-core/binding.gyp | 2 +- packages/grpc-native-core/build.yaml | 1 + packages/grpc-native-core/package.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/grpc-native-core/binding.gyp b/packages/grpc-native-core/binding.gyp index 4b2791f5..f796f1aa 100644 --- a/packages/grpc-native-core/binding.gyp +++ b/packages/grpc-native-core/binding.gyp @@ -91,7 +91,7 @@ 'GPR_BACKWARDS_COMPATIBILITY_MODE', 'GRPC_ARES=0', 'GRPC_UV', - 'GRPC_NODE_VERSION="1.15.0-pre1"' + 'GRPC_NODE_VERSION="1.15.0"' ], 'conditions': [ ['grpc_gcov=="true"', { diff --git a/packages/grpc-native-core/build.yaml b/packages/grpc-native-core/build.yaml index 49e36fdf..edde2d4d 100644 --- a/packages/grpc-native-core/build.yaml +++ b/packages/grpc-native-core/build.yaml @@ -1,2 +1,3 @@ settings: '#': It's possible to have node_version here as a key to override the core's version. + node_version: 1.15.0 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index d966465c..b10f9eb8 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.15.0-pre1", + "version": "1.15.0", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/", From d78c49a648f4672919cca440067a43b7d466304c Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 13 Sep 2018 10:25:23 -0700 Subject: [PATCH 05/16] fix: use getRequestHeaders instead of getRequestMetadata --- packages/grpc-native-core/package.json | 2 +- packages/grpc-native-core/src/credentials.js | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index b10f9eb8..e079fdbd 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -39,7 +39,7 @@ "body-parser": "^1.15.2", "electron-mocha": "^3.1.1", "express": "^4.14.0", - "google-auth-library": "^0.9.2", + "google-auth-library": "^2.0.0", "google-protobuf": "^3.0.0", "istanbul": "^0.4.4", "lodash": "^4.17.4", diff --git a/packages/grpc-native-core/src/credentials.js b/packages/grpc-native-core/src/credentials.js index 28b668b1..3c05329e 100644 --- a/packages/grpc-native-core/src/credentials.js +++ b/packages/grpc-native-core/src/credentials.js @@ -195,16 +195,17 @@ exports.createFromMetadataGenerator = function(metadata_generator) { exports.createFromGoogleCredential = function(google_credential) { return exports.createFromMetadataGenerator(function(auth_context, callback) { var service_url = auth_context.service_url; - google_credential.getRequestMetadata(service_url, function(err, header) { - if (err) { + google_credential.getRequestHeaders(service_url) + .then(function(header) { + var metadata = new Metadata(); + metadata.add('authorization', header.Authorization); + callback(null, metadata); + }) + .catch(function(err) { common.log(constants.logVerbosity.INFO, 'Auth error:' + err); callback(err); return; - } - var metadata = new Metadata(); - metadata.add('authorization', header.Authorization); - callback(null, metadata); - }); + }); }); }; From 45185080f2bc4b946d9ebcc86dd7b05f915d17bf Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 13 Sep 2018 10:37:58 -0700 Subject: [PATCH 06/16] revert package.json change --- packages/grpc-native-core/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index e079fdbd..b10f9eb8 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -39,7 +39,7 @@ "body-parser": "^1.15.2", "electron-mocha": "^3.1.1", "express": "^4.14.0", - "google-auth-library": "^2.0.0", + "google-auth-library": "^0.9.2", "google-protobuf": "^3.0.0", "istanbul": "^0.4.4", "lodash": "^4.17.4", From 9eda26c0d797e04453b3736c9c5304b0762a8998 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 13 Sep 2018 11:46:42 -0700 Subject: [PATCH 07/16] supporting both old and new versions of google-auth-library --- packages/grpc-native-core/src/credentials.js | 40 ++++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/packages/grpc-native-core/src/credentials.js b/packages/grpc-native-core/src/credentials.js index 3c05329e..5a9dbfd4 100644 --- a/packages/grpc-native-core/src/credentials.js +++ b/packages/grpc-native-core/src/credentials.js @@ -184,6 +184,30 @@ exports.createFromMetadataGenerator = function(metadata_generator) { }); }; +function getAuthorizationHeaderFromGoogleCredential(google_credential, url, callback) { + // google-auth-library pre-v2.0.0 does not have getRequestHeaders + // but has getRequestMetadata, which is deprecated in v2.0.0 + if (typeof google_credential.getRequestHeaders === 'function') { + google_credential.getRequestHeaders(url) + .then(function(header) { + callback(null, header.Authorization); + }) + .catch(function(err) { + callback(err); + return; + }); + } + else { + google_credential.getRequestMetadata(url, function(err, header) { + if (err) { + callback(err); + return; + } + callback(null, header.Authorization); + }); + } +} + /** * Create a gRPC credential from a Google credential object. * @memberof grpc.credentials @@ -195,16 +219,16 @@ exports.createFromMetadataGenerator = function(metadata_generator) { exports.createFromGoogleCredential = function(google_credential) { return exports.createFromMetadataGenerator(function(auth_context, callback) { var service_url = auth_context.service_url; - google_credential.getRequestHeaders(service_url) - .then(function(header) { + getAuthorizationHeaderFromGoogleCredential(google_credential, service_url, + function(err, authHeader) { + if (err) { + common.log(constants.logVerbosity.INFO, 'Auth error:' + err); + callback(err); + return; + } var metadata = new Metadata(); - metadata.add('authorization', header.Authorization); + metadata.add('authorization', authHeader); callback(null, metadata); - }) - .catch(function(err) { - common.log(constants.logVerbosity.INFO, 'Auth error:' + err); - callback(err); - return; }); }); }; From ea6d903479998975c7fc20735c7bd06252c525f6 Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Thu, 13 Sep 2018 16:31:57 -0700 Subject: [PATCH 08/16] Fix indentation style --- packages/grpc-native-core/src/credentials.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/grpc-native-core/src/credentials.js b/packages/grpc-native-core/src/credentials.js index 5a9dbfd4..50669b0d 100644 --- a/packages/grpc-native-core/src/credentials.js +++ b/packages/grpc-native-core/src/credentials.js @@ -196,8 +196,7 @@ function getAuthorizationHeaderFromGoogleCredential(google_credential, url, call callback(err); return; }); - } - else { + } else { google_credential.getRequestMetadata(url, function(err, header) { if (err) { callback(err); From c855a47164a460944e475d4196e540181c8e7ca1 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 14 Sep 2018 09:46:40 -0700 Subject: [PATCH 09/16] Native: bump to 1.15.1 --- packages/grpc-native-core/binding.gyp | 2 +- packages/grpc-native-core/build.yaml | 2 +- packages/grpc-native-core/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/grpc-native-core/binding.gyp b/packages/grpc-native-core/binding.gyp index f796f1aa..fb0f5bae 100644 --- a/packages/grpc-native-core/binding.gyp +++ b/packages/grpc-native-core/binding.gyp @@ -91,7 +91,7 @@ 'GPR_BACKWARDS_COMPATIBILITY_MODE', 'GRPC_ARES=0', 'GRPC_UV', - 'GRPC_NODE_VERSION="1.15.0"' + 'GRPC_NODE_VERSION="1.15.1"' ], 'conditions': [ ['grpc_gcov=="true"', { diff --git a/packages/grpc-native-core/build.yaml b/packages/grpc-native-core/build.yaml index edde2d4d..1924a0d9 100644 --- a/packages/grpc-native-core/build.yaml +++ b/packages/grpc-native-core/build.yaml @@ -1,3 +1,3 @@ settings: '#': It's possible to have node_version here as a key to override the core's version. - node_version: 1.15.0 + node_version: 1.15.1 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index b10f9eb8..70cb51ef 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.15.0", + "version": "1.15.1", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/", From 21d9ea086c9b40d20543be1883940127c944c068 Mon Sep 17 00:00:00 2001 From: Weiran Fang Date: Wed, 19 Sep 2018 17:50:43 -0700 Subject: [PATCH 10/16] Add checker for call invocation transformer. --- packages/grpc-native-core/src/client.js | 191 ++++++++++++++++++------ 1 file changed, 149 insertions(+), 42 deletions(-) diff --git a/packages/grpc-native-core/src/client.js b/packages/grpc-native-core/src/client.js index b5436e4e..6fcc6831 100644 --- a/packages/grpc-native-core/src/client.js +++ b/packages/grpc-native-core/src/client.js @@ -480,22 +480,51 @@ Client.prototype.makeUnaryRequest = function(path, serialize, deserialize, metadata = metadata.clone(); - var intercepting_call = client_interceptors.getInterceptingCall( - method_definition, - options, - Client.prototype.resolveCallInterceptors.call(this, method_definition, options.interceptors, options.interceptor_providers), - this.$channel, - callback - ); - var emitter = new ClientUnaryCall(intercepting_call); - var last_listener = client_interceptors.getLastListener( - method_definition, - emitter, - callback + var callProperties = { + argument: argument, + metadata: metadata, + call: new ClientUnaryCall(), + channel: this.$channel, + methodDefinition: method_definition, + callOptions: options, + callback: callback + }; + + // Transform call properties if specified. + var callInvocationTransformer = options.callInvocationTransformer; + if (callInvocationTransformer) { + callProperties = callInvocationTransformer(callProperties); + } + + var callOptions = callProperties.callOptions; + var methodDefinition = callProperties.methodDefinition; + + var interceptors = Client.prototype.resolveCallInterceptors.call( + this, + methodDefinition, + callOptions.interceptors, + callOptions.interceptor_providers ); - intercepting_call.start(metadata, last_listener); - intercepting_call.sendMessage(argument); + var intercepting_call = client_interceptors.getInterceptingCall( + methodDefinition, + callOptions, + interceptors, + callProperties.channel, + callProperties.callback + ); + + var emitter = callProperties.call; + emitter.call = intercepting_call; + + var last_listener = client_interceptors.getLastListener( + methodDefinition, + emitter, + callProperties.callback + ); + + intercepting_call.start(callProperties.metadata, last_listener); + intercepting_call.sendMessage(callProperties.argument); intercepting_call.halfClose(); return emitter; @@ -555,21 +584,49 @@ Client.prototype.makeClientStreamRequest = function(path, serialize, metadata = metadata.clone(); - var intercepting_call = client_interceptors.getInterceptingCall( - method_definition, - options, - Client.prototype.resolveCallInterceptors.call(this, method_definition, options.interceptors, options.interceptor_providers), - this.$channel, - callback - ); - var emitter = new ClientWritableStream(intercepting_call); - var last_listener = client_interceptors.getLastListener( - method_definition, - emitter, - callback + var callProperties = { + metadata: metadata, + call: new ClientWritableStream(), + channel: this.$channel, + methodDefinition: method_definition, + callOptions: options, + callback: callback + }; + + // Transform call properties if specified. + var callInvocationTransformer = options.callInvocationTransformer; + if (callInvocationTransformer) { + callProperties = callInvocationTransformer(callProperties); + } + + var callOptions = callProperties.callOptions; + var methodDefinition = callProperties.methodDefinition; + + var interceptors = Client.prototype.resolveCallInterceptors.call( + this, + methodDefinition, + callOptions.interceptors, + callOptions.interceptor_providers ); - intercepting_call.start(metadata, last_listener); + var intercepting_call = client_interceptors.getInterceptingCall( + methodDefinition, + callOptions, + interceptors, + callProperties.channel, + callProperties.callback + ); + + var emitter = callProperties.call; + emitter.call = intercepting_call; + + var last_listener = client_interceptors.getLastListener( + methodDefinition, + emitter, + callProperties.callback + ); + + intercepting_call.start(callProperties.metadata, last_listener); return emitter; }; @@ -613,22 +670,47 @@ Client.prototype.makeServerStreamRequest = function(path, serialize, metadata = metadata.clone(); - var emitter = new ClientReadableStream(); + var callProperties = { + argument: argument, + metadata: metadata, + call: new ClientReadableStream(), + channel: this.$channel, + methodDefinition: method_definition, + callOptions: options, + }; + + // Transform call properties if specified. + var callInvocationTransformer = options.callInvocationTransformer; + if (callInvocationTransformer) { + callProperties = callInvocationTransformer(callProperties); + } + + var callOptions = callProperties.callOptions; + var methodDefinition = callProperties.methodDefinition; + + var interceptors = Client.prototype.resolveCallInterceptors.call( + this, + methodDefinition, + callOptions.interceptors, + callOptions.interceptor_providers + ); + + var emitter = callProperties.call; var intercepting_call = client_interceptors.getInterceptingCall( - method_definition, - options, - Client.prototype.resolveCallInterceptors.call(this, method_definition, options.interceptors, options.interceptor_providers), - this.$channel, + methodDefinition, + callOptions, + interceptors, + callProperties.channel, emitter ); emitter.call = intercepting_call; var last_listener = client_interceptors.getLastListener( - method_definition, + methodDefinition, emitter ); - intercepting_call.start(metadata, last_listener); - intercepting_call.sendMessage(argument); + intercepting_call.start(callProperties.metadata, last_listener); + intercepting_call.sendMessage(callProperties.argument); intercepting_call.halfClose(); return emitter; @@ -669,21 +751,46 @@ Client.prototype.makeBidiStreamRequest = function(path, serialize, metadata = metadata.clone(); - var emitter = new ClientDuplexStream(); + var callProperties = { + metadata: metadata, + call: new ClientDuplexStream(), + channel: this.$channel, + methodDefinition: method_definition, + callOptions: options, + }; + + // Transform call properties if specified. + var callInvocationTransformer = options.callInvocationTransformer; + if (callInvocationTransformer) { + callProperties = callInvocationTransformer(callProperties); + } + + var callOptions = callProperties.callOptions; + var methodDefinition = callProperties.methodDefinition; + + var interceptors = Client.prototype.resolveCallInterceptors.call( + this, + methodDefinition, + callOptions.interceptors, + callOptions.interceptor_providers + ); + + + var emitter = callProperties.call; var intercepting_call = client_interceptors.getInterceptingCall( - method_definition, - options, - Client.prototype.resolveCallInterceptors.call(this, method_definition, options.interceptors, options.interceptor_providers), - this.$channel, + methodDefinition, + callOptions, + interceptors, + callProperties.channel, emitter ); emitter.call = intercepting_call; var last_listener = client_interceptors.getLastListener( - method_definition, + methodDefinition, emitter ); - intercepting_call.start(metadata, last_listener); + intercepting_call.start(callProperties.metadata, last_listener); return emitter; }; From a8eaafe37366843db3c0c1ec475d6de1524764f3 Mon Sep 17 00:00:00 2001 From: Weiran Fang Date: Fri, 21 Sep 2018 09:48:51 -0700 Subject: [PATCH 11/16] Retrieve callInvocationTransformer from constructor options. --- packages/grpc-native-core/src/client.js | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/grpc-native-core/src/client.js b/packages/grpc-native-core/src/client.js index 6fcc6831..cc061c52 100644 --- a/packages/grpc-native-core/src/client.js +++ b/packages/grpc-native-core/src/client.js @@ -383,12 +383,16 @@ function Client(address, credentials, options) { .resolveInterceptorProviders(self.$interceptor_providers, method_definition) .concat(self.$interceptors); }); + + this.$callInvocationTransformer = options.callInvocationTransformer; + let channelOverride = options.channelOverride; let channelFactoryOverride = options.channelFactoryOverride; // Exclude channel options which have already been consumed var channel_options = _.omit(options, ['interceptors', 'interceptor_providers', - 'channelOverride', 'channelFactoryOverride']); + 'channelOverride', 'channelFactoryOverride', + 'callInvocationTransformer']); /* Private fields use $ as a prefix instead of _ because it is an invalid * prefix of a method name */ if (channelOverride) { @@ -491,9 +495,8 @@ Client.prototype.makeUnaryRequest = function(path, serialize, deserialize, }; // Transform call properties if specified. - var callInvocationTransformer = options.callInvocationTransformer; - if (callInvocationTransformer) { - callProperties = callInvocationTransformer(callProperties); + if (this.$callInvocationTransformer) { + callProperties = this.$callInvocationTransformer(callProperties); } var callOptions = callProperties.callOptions; @@ -594,9 +597,8 @@ Client.prototype.makeClientStreamRequest = function(path, serialize, }; // Transform call properties if specified. - var callInvocationTransformer = options.callInvocationTransformer; - if (callInvocationTransformer) { - callProperties = callInvocationTransformer(callProperties); + if (this.$callInvocationTransformer) { + callProperties = this.$callInvocationTransformer(callProperties); } var callOptions = callProperties.callOptions; @@ -680,9 +682,8 @@ Client.prototype.makeServerStreamRequest = function(path, serialize, }; // Transform call properties if specified. - var callInvocationTransformer = options.callInvocationTransformer; - if (callInvocationTransformer) { - callProperties = callInvocationTransformer(callProperties); + if (this.$callInvocationTransformer) { + callProperties = this.$callInvocationTransformer(callProperties); } var callOptions = callProperties.callOptions; @@ -760,9 +761,8 @@ Client.prototype.makeBidiStreamRequest = function(path, serialize, }; // Transform call properties if specified. - var callInvocationTransformer = options.callInvocationTransformer; - if (callInvocationTransformer) { - callProperties = callInvocationTransformer(callProperties); + if (this.$callInvocationTransformer) { + callProperties = this.$callInvocationTransformer(callProperties); } var callOptions = callProperties.callOptions; From 8821824f7afa2fe76c581fe559c9be74e054ffa0 Mon Sep 17 00:00:00 2001 From: Weiran Fang Date: Wed, 26 Sep 2018 09:44:34 -0700 Subject: [PATCH 12/16] Add gitignore'd files --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 231a29bd..23866bfd 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,8 @@ packages/grpc-native-core/src/node/ .nyc_output/ reports/ + +package-lock.json + +# Test generated files +coverage From 5b85f4f2b782e778dbb266e36152da39c78a556d Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 19 Oct 2018 11:21:45 -0700 Subject: [PATCH 13/16] Native: add Server#bindAsync --- packages/grpc-native-core/src/server.js | 29 ++++++++++++++++++++ packages/grpc-native-core/test/async_test.js | 14 ++++++---- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/packages/grpc-native-core/src/server.js b/packages/grpc-native-core/src/server.js index b238de04..34c123d1 100644 --- a/packages/grpc-native-core/src/server.js +++ b/packages/grpc-native-core/src/server.js @@ -954,6 +954,7 @@ Server.prototype.addProtoService = util.deprecate(function(service, * "address:port" * @param {grpc.ServerCredentials} creds Server credential object to be used for * SSL. Pass an insecure credentials object for an insecure port. + * @return {number} The bound port number. Negative if binding the port failed. */ Server.prototype.bind = function(port, creds) { if (this.started) { @@ -962,4 +963,32 @@ Server.prototype.bind = function(port, creds) { return this._server.addHttp2Port(port, creds); }; +/** + * Called with the result of attempting to bind a port + * @callback grpc.Server~bindCallback + * @param {Error=} error If non-null, indicates that binding the port failed. + * @param {number} port The bound port number. If binding the port fails, this + * will be negative to match the output of bind. + */ + +/** + * Binds the server to the given port, with SSL disabled if creds is an + * insecure credentials object. Provides the result asynchronously. + * @param {string} port The port that the server should bind on, in the format + * "address:port" + * @param {grpc.ServerCredentials} creds Server credential object to be used for + * SSL. Pass an insecure credentials object for an insecure port. + */ +Server.prototype.bindAsync = function(port, creds, callback) { + /* This can throw. We do not try to catch that error because it indicates an + * incorrect use of the function, which should not be surfaced asynchronously + */ + const result = this.bind(port, creds) + if (result < 0) { + setImmediate(callback, new Error('Failed to bind port'), result); + } else { + setImmediate(callback, null, result); + } +} + exports.Server = Server; diff --git a/packages/grpc-native-core/test/async_test.js b/packages/grpc-native-core/test/async_test.js index 786e50bf..400baa9e 100644 --- a/packages/grpc-native-core/test/async_test.js +++ b/packages/grpc-native-core/test/async_test.js @@ -37,14 +37,16 @@ var getServer = require('./math/math_server.js'); var server = getServer(); +let serverCreds = grpc.ServerCredentials.createInsecure(); + describe('Async functionality', function() { before(function(done) { - var port_num = server.bind('0.0.0.0:0', - grpc.ServerCredentials.createInsecure()); - server.start(); - math_client = new math.Math('localhost:' + port_num, - grpc.credentials.createInsecure()); - done(); + server.bind('0.0.0.0:0', serverCreds, (error, port_num) => { + server.start(); + math_client = new math.Math('localhost:' + port_num, + grpc.credentials.createInsecure()); + done(); + }); }); after(function() { grpc.closeClient(math_client); From 2d62b875f40147a908037372be694c3c89a561c5 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 19 Oct 2018 11:54:47 -0700 Subject: [PATCH 14/16] Actually use bindAsync in modified test --- packages/grpc-native-core/test/async_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-native-core/test/async_test.js b/packages/grpc-native-core/test/async_test.js index 400baa9e..119d20ce 100644 --- a/packages/grpc-native-core/test/async_test.js +++ b/packages/grpc-native-core/test/async_test.js @@ -41,7 +41,7 @@ let serverCreds = grpc.ServerCredentials.createInsecure(); describe('Async functionality', function() { before(function(done) { - server.bind('0.0.0.0:0', serverCreds, (error, port_num) => { + server.bindAsync('0.0.0.0:0', serverCreds, (error, port_num) => { server.start(); math_client = new math.Math('localhost:' + port_num, grpc.credentials.createInsecure()); From 34219900a99473acf8f3e58b1f235c8849298441 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Tue, 23 Oct 2018 18:45:22 +0200 Subject: [PATCH 15/16] Properly updating submodule to point at 1.16. --- packages/grpc-native-core/binding.gyp | 7 ++++--- packages/grpc-native-core/build.yaml | 1 + packages/grpc-native-core/deps/grpc | 2 +- packages/grpc-native-core/package.json | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/grpc-native-core/binding.gyp b/packages/grpc-native-core/binding.gyp index b1947b9f..6c0a986d 100644 --- a/packages/grpc-native-core/binding.gyp +++ b/packages/grpc-native-core/binding.gyp @@ -91,7 +91,7 @@ 'GPR_BACKWARDS_COMPATIBILITY_MODE', 'GRPC_ARES=0', 'GRPC_UV', - 'GRPC_NODE_VERSION="1.15.0-dev"' + 'GRPC_NODE_VERSION="1.16.0-pre1"' ], 'conditions': [ ['grpc_gcov=="true"', { @@ -648,6 +648,7 @@ 'deps/grpc/src/core/lib/http/format_request.cc', 'deps/grpc/src/core/lib/http/httpcli.cc', 'deps/grpc/src/core/lib/http/parser.cc', + 'deps/grpc/src/core/lib/iomgr/buffer_list.cc', 'deps/grpc/src/core/lib/iomgr/call_combiner.cc', 'deps/grpc/src/core/lib/iomgr/combiner.cc', 'deps/grpc/src/core/lib/iomgr/endpoint.cc', @@ -657,7 +658,6 @@ 'deps/grpc/src/core/lib/iomgr/error.cc', 'deps/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc', 'deps/grpc/src/core/lib/iomgr/ev_epollex_linux.cc', - 'deps/grpc/src/core/lib/iomgr/ev_epollsig_linux.cc', 'deps/grpc/src/core/lib/iomgr/ev_poll_posix.cc', 'deps/grpc/src/core/lib/iomgr/ev_posix.cc', 'deps/grpc/src/core/lib/iomgr/ev_windows.cc', @@ -668,6 +668,7 @@ 'deps/grpc/src/core/lib/iomgr/gethostname_fallback.cc', 'deps/grpc/src/core/lib/iomgr/gethostname_host_name_max.cc', 'deps/grpc/src/core/lib/iomgr/gethostname_sysconf.cc', + 'deps/grpc/src/core/lib/iomgr/internal_errqueue.cc', 'deps/grpc/src/core/lib/iomgr/iocp_windows.cc', 'deps/grpc/src/core/lib/iomgr/iomgr.cc', 'deps/grpc/src/core/lib/iomgr/iomgr_custom.cc', @@ -929,7 +930,7 @@ 'deps/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc', 'deps/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc', 'deps/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc', - 'deps/grpc/src/cpp/ext/filters/census/grpc_context.cc', + 'deps/grpc/src/core/ext/filters/census/grpc_context.cc', 'deps/grpc/src/core/ext/filters/max_age/max_age_filter.cc', 'deps/grpc/src/core/ext/filters/message_size/message_size_filter.cc', 'deps/grpc/src/core/ext/filters/http/client_authority_filter.cc', diff --git a/packages/grpc-native-core/build.yaml b/packages/grpc-native-core/build.yaml index 49e36fdf..92c958cd 100644 --- a/packages/grpc-native-core/build.yaml +++ b/packages/grpc-native-core/build.yaml @@ -1,2 +1,3 @@ settings: '#': It's possible to have node_version here as a key to override the core's version. + node_version: 1.16.0-pre1 \ No newline at end of file diff --git a/packages/grpc-native-core/deps/grpc b/packages/grpc-native-core/deps/grpc index 8ba45636..98457b76 160000 --- a/packages/grpc-native-core/deps/grpc +++ b/packages/grpc-native-core/deps/grpc @@ -1 +1 @@ -Subproject commit 8ba45636295019b101c1e9579423d4de41c4c59e +Subproject commit 98457b76ff43efa2c3edd203c14cd923734d5279 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index 9cb0cdaa..73f7698f 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.15.0-dev", + "version": "1.16.0-pre1", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/", From b7042551c311a019b49aa00af659e9c0c3984d95 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Thu, 25 Oct 2018 00:28:21 +0200 Subject: [PATCH 16/16] Fixing up submodule. --- packages/grpc-native-core/build.yaml | 1 - packages/grpc-native-core/deps/grpc | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/grpc-native-core/build.yaml b/packages/grpc-native-core/build.yaml index b5ab803f..49e36fdf 100644 --- a/packages/grpc-native-core/build.yaml +++ b/packages/grpc-native-core/build.yaml @@ -1,3 +1,2 @@ settings: '#': It's possible to have node_version here as a key to override the core's version. - node_version: 1.16.0-pre1 diff --git a/packages/grpc-native-core/deps/grpc b/packages/grpc-native-core/deps/grpc index 98457b76..bc9e9ddf 160000 --- a/packages/grpc-native-core/deps/grpc +++ b/packages/grpc-native-core/deps/grpc @@ -1 +1 @@ -Subproject commit 98457b76ff43efa2c3edd203c14cd923734d5279 +Subproject commit bc9e9ddf9e04b1a905d51c41b1ffef5b30f2c986