From bd6238221ce02c9a9822e5c3eb7f317a573e534e Mon Sep 17 00:00:00 2001 From: Bret Harrison Date: Tue, 20 Feb 2018 12:47:36 -0500 Subject: [PATCH] FAB-2787 NodeSDK - add min ping interval Add the 'grpc.http2.min_time_between_pings_ms' to the event streams with a default of 5 minutes. Minimum time between sending successive ping frames without receiving any data frame, Int valued, milliseconds. Change-Id: Ifbbe7f808ffd8c6b6718f84961d165d207937ef4 Signed-off-by: Bret Harrison --- fabric-client/lib/ChannelEventHub.js | 4 ++++ fabric-client/lib/EventHub.js | 2 ++ 2 files changed, 6 insertions(+) diff --git a/fabric-client/lib/ChannelEventHub.js b/fabric-client/lib/ChannelEventHub.js index 76549046aa..af5dc7ae18 100644 --- a/fabric-client/lib/ChannelEventHub.js +++ b/fabric-client/lib/ChannelEventHub.js @@ -64,6 +64,9 @@ const START_ONLY = 1; const END_ONLY = 2; const START_AND_END = 3; +const five_minutes_ms = 5*60*1000; + + /** * Transaction processing in fabric v1.1 is a long operation spanning multiple * components (application, endorsing peer, orderer, committing peer) and takes @@ -314,6 +317,7 @@ var ChannelEventHub = class { let request_timeout_ms = utils.getConfigSetting('request-timeout', 3000); let request_timeout = request_timeout_ms / 1000; options = utils.checkAndAddConfigSetting('grpc.keepalive_timeout_ms', request_timeout_ms, options); + options = utils.checkAndAddConfigSetting('grpc.http2.min_time_between_pings_ms', five_minutes_ms, options); logger.info('_connect - options %j',this._peer._options); this._event_client = new _eventsProto.Deliver(this._peer._endpoint.addr, this._peer._endpoint.creds, this._peer._options); diff --git a/fabric-client/lib/EventHub.js b/fabric-client/lib/EventHub.js index 9122b0bf82..b25e9ec35e 100644 --- a/fabric-client/lib/EventHub.js +++ b/fabric-client/lib/EventHub.js @@ -30,6 +30,7 @@ var _transProto = grpc.load(__dirname + '/protos/peer/transaction.proto').protos var _responseProto = grpc.load(__dirname + '/protos/peer/proposal_response.proto').protos; var _ccProposalProto = grpc.load(__dirname + '/protos/peer/proposal.proto').protos; var _ccEventProto = grpc.load(__dirname + '/protos/peer/chaincode_event.proto').protos; +const five_minutes_ms = 5*60*1000; var _validation_codes = {}; var keys = Object.keys(_transProto.TxValidationCode); @@ -288,6 +289,7 @@ var EventHub = class { let request_timeout = request_timeout_ms / 1000; options = utils.checkAndAddConfigSetting('grpc.http2.keepalive_timeout', request_timeout, options); //grpc 1.2.4 options = utils.checkAndAddConfigSetting('grpc.keepalive_timeout_ms', request_timeout_ms, options); //grpc 1.3.7 + options = utils.checkAndAddConfigSetting('grpc.http2.min_time_between_pings_ms', five_minutes_ms, options); //default 5 logger.info('_connect - options %j',this._ep._options); this._event_client = new _events.Events(this._ep._endpoint.addr, this._ep._endpoint.creds, this._ep._options);