[20/26] tinkerpop git commit: JavaScript GLV: handle responses without identifier and clear handler

2018-02-20 Thread spmallette
JavaScript GLV: handle responses without identifier and clear handler


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1e38023c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1e38023c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1e38023c

Branch: refs/heads/tp32
Commit: 1e38023c7ebfb3ae83578625d9d99f60798abdcc
Parents: 10f29cb
Author: Jorge Bay Gondra 
Authored: Wed Feb 14 16:11:13 2018 +0100
Committer: Stephen Mallette 
Committed: Wed Feb 14 15:34:10 2018 -0500

--
 .../lib/driver/driver-remote-connection.js  | 35 
 1 file changed, 35 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1e38023c/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
--
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
index 5587fd6..d9e6000 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
@@ -126,7 +126,31 @@ class DriverRemoteConnection extends RemoteConnection {
 
   _handleMessage(data) {
 const response = this._reader.read(JSON.parse(data.toString()));
+if (response.requestId === null || response.requestId === undefined) {
+// There was a serialization issue on the server that prevented the 
parsing of the request id
+// We invoke any of the pending handlers with an error
+Object.keys(this._responseHandlers).forEach(requestId => {
+  const handler = this._responseHandlers[requestId];
+  this._clearHandler(requestId);
+  if (response.status !== undefined && response.status.message) {
+return handler.callback(
+  new Error(util.format(
+'Server error (no request information): %s (%d)', 
response.status.message, response.status.code)));
+  } else {
+return handler.callback(new Error(util.format('Server error (no 
request information): %j', response)));
+  }
+});
+return;
+}
+
 const handler = this._responseHandlers[response.requestId];
+
+if (!handler) {
+  // The handler for a given request id was not found
+  // It was probably invoked earlier due to a serialization issue.
+  return;
+}
+
 if (response.status.code >= 400) {
   // callback in error
   return handler.callback(
@@ -134,6 +158,7 @@ class DriverRemoteConnection extends RemoteConnection {
 }
 switch (response.status.code) {
   case responseStatusCode.noContent:
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: []});
   case responseStatusCode.partialContent:
 handler.result = handler.result || [];
@@ -146,11 +171,21 @@ class DriverRemoteConnection extends RemoteConnection {
 else {
   handler.result = response.result.data;
 }
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: handler.result });
 }
   }
 
   /**
+   * Clears the internal state containing the callback and result buffer of a 
given request.
+   * @param requestId
+   * @private
+   */
+  _clearHandler(requestId) {
+delete this._responseHandlers[requestId];
+  }
+
+  /**
* Closes the Connection.
* @return {Promise}
*/



[17/27] tinkerpop git commit: JavaScript GLV: handle responses without identifier and clear handler

2018-02-20 Thread spmallette
JavaScript GLV: handle responses without identifier and clear handler


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1e38023c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1e38023c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1e38023c

Branch: refs/heads/master
Commit: 1e38023c7ebfb3ae83578625d9d99f60798abdcc
Parents: 10f29cb
Author: Jorge Bay Gondra 
Authored: Wed Feb 14 16:11:13 2018 +0100
Committer: Stephen Mallette 
Committed: Wed Feb 14 15:34:10 2018 -0500

--
 .../lib/driver/driver-remote-connection.js  | 35 
 1 file changed, 35 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1e38023c/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
--
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
index 5587fd6..d9e6000 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
@@ -126,7 +126,31 @@ class DriverRemoteConnection extends RemoteConnection {
 
   _handleMessage(data) {
 const response = this._reader.read(JSON.parse(data.toString()));
+if (response.requestId === null || response.requestId === undefined) {
+// There was a serialization issue on the server that prevented the 
parsing of the request id
+// We invoke any of the pending handlers with an error
+Object.keys(this._responseHandlers).forEach(requestId => {
+  const handler = this._responseHandlers[requestId];
+  this._clearHandler(requestId);
+  if (response.status !== undefined && response.status.message) {
+return handler.callback(
+  new Error(util.format(
+'Server error (no request information): %s (%d)', 
response.status.message, response.status.code)));
+  } else {
+return handler.callback(new Error(util.format('Server error (no 
request information): %j', response)));
+  }
+});
+return;
+}
+
 const handler = this._responseHandlers[response.requestId];
+
+if (!handler) {
+  // The handler for a given request id was not found
+  // It was probably invoked earlier due to a serialization issue.
+  return;
+}
+
 if (response.status.code >= 400) {
   // callback in error
   return handler.callback(
@@ -134,6 +158,7 @@ class DriverRemoteConnection extends RemoteConnection {
 }
 switch (response.status.code) {
   case responseStatusCode.noContent:
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: []});
   case responseStatusCode.partialContent:
 handler.result = handler.result || [];
@@ -146,11 +171,21 @@ class DriverRemoteConnection extends RemoteConnection {
 else {
   handler.result = response.result.data;
 }
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: handler.result });
 }
   }
 
   /**
+   * Clears the internal state containing the callback and result buffer of a 
given request.
+   * @param requestId
+   * @private
+   */
+  _clearHandler(requestId) {
+delete this._responseHandlers[requestId];
+  }
+
+  /**
* Closes the Connection.
* @return {Promise}
*/



[30/31] tinkerpop git commit: JavaScript GLV: handle responses without identifier and clear handler

2018-02-14 Thread spmallette
JavaScript GLV: handle responses without identifier and clear handler


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1e38023c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1e38023c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1e38023c

Branch: refs/heads/TINKERPOP-1857
Commit: 1e38023c7ebfb3ae83578625d9d99f60798abdcc
Parents: 10f29cb
Author: Jorge Bay Gondra 
Authored: Wed Feb 14 16:11:13 2018 +0100
Committer: Stephen Mallette 
Committed: Wed Feb 14 15:34:10 2018 -0500

--
 .../lib/driver/driver-remote-connection.js  | 35 
 1 file changed, 35 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1e38023c/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
--
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
index 5587fd6..d9e6000 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
@@ -126,7 +126,31 @@ class DriverRemoteConnection extends RemoteConnection {
 
   _handleMessage(data) {
 const response = this._reader.read(JSON.parse(data.toString()));
+if (response.requestId === null || response.requestId === undefined) {
+// There was a serialization issue on the server that prevented the 
parsing of the request id
+// We invoke any of the pending handlers with an error
+Object.keys(this._responseHandlers).forEach(requestId => {
+  const handler = this._responseHandlers[requestId];
+  this._clearHandler(requestId);
+  if (response.status !== undefined && response.status.message) {
+return handler.callback(
+  new Error(util.format(
+'Server error (no request information): %s (%d)', 
response.status.message, response.status.code)));
+  } else {
+return handler.callback(new Error(util.format('Server error (no 
request information): %j', response)));
+  }
+});
+return;
+}
+
 const handler = this._responseHandlers[response.requestId];
+
+if (!handler) {
+  // The handler for a given request id was not found
+  // It was probably invoked earlier due to a serialization issue.
+  return;
+}
+
 if (response.status.code >= 400) {
   // callback in error
   return handler.callback(
@@ -134,6 +158,7 @@ class DriverRemoteConnection extends RemoteConnection {
 }
 switch (response.status.code) {
   case responseStatusCode.noContent:
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: []});
   case responseStatusCode.partialContent:
 handler.result = handler.result || [];
@@ -146,11 +171,21 @@ class DriverRemoteConnection extends RemoteConnection {
 else {
   handler.result = response.result.data;
 }
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: handler.result });
 }
   }
 
   /**
+   * Clears the internal state containing the callback and result buffer of a 
given request.
+   * @param requestId
+   * @private
+   */
+  _clearHandler(requestId) {
+delete this._responseHandlers[requestId];
+  }
+
+  /**
* Closes the Connection.
* @return {Promise}
*/



tinkerpop git commit: JavaScript GLV: handle responses without identifier and clear handler

2018-02-14 Thread jorgebg
Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1857 9addf862d -> e2b09dfee


JavaScript GLV: handle responses without identifier and clear handler


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e2b09dfe
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e2b09dfe
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e2b09dfe

Branch: refs/heads/TINKERPOP-1857
Commit: e2b09dfeeb0cf29db68e6dfa0ecb41ba044819ba
Parents: 9addf86
Author: Jorge Bay Gondra 
Authored: Wed Feb 14 16:11:13 2018 +0100
Committer: Jorge Bay Gondra 
Committed: Wed Feb 14 16:11:13 2018 +0100

--
 .../lib/driver/driver-remote-connection.js  | 35 
 1 file changed, 35 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e2b09dfe/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
--
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
index 5587fd6..d9e6000 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/driver-remote-connection.js
@@ -126,7 +126,31 @@ class DriverRemoteConnection extends RemoteConnection {
 
   _handleMessage(data) {
 const response = this._reader.read(JSON.parse(data.toString()));
+if (response.requestId === null || response.requestId === undefined) {
+// There was a serialization issue on the server that prevented the 
parsing of the request id
+// We invoke any of the pending handlers with an error
+Object.keys(this._responseHandlers).forEach(requestId => {
+  const handler = this._responseHandlers[requestId];
+  this._clearHandler(requestId);
+  if (response.status !== undefined && response.status.message) {
+return handler.callback(
+  new Error(util.format(
+'Server error (no request information): %s (%d)', 
response.status.message, response.status.code)));
+  } else {
+return handler.callback(new Error(util.format('Server error (no 
request information): %j', response)));
+  }
+});
+return;
+}
+
 const handler = this._responseHandlers[response.requestId];
+
+if (!handler) {
+  // The handler for a given request id was not found
+  // It was probably invoked earlier due to a serialization issue.
+  return;
+}
+
 if (response.status.code >= 400) {
   // callback in error
   return handler.callback(
@@ -134,6 +158,7 @@ class DriverRemoteConnection extends RemoteConnection {
 }
 switch (response.status.code) {
   case responseStatusCode.noContent:
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: []});
   case responseStatusCode.partialContent:
 handler.result = handler.result || [];
@@ -146,11 +171,21 @@ class DriverRemoteConnection extends RemoteConnection {
 else {
   handler.result = response.result.data;
 }
+this._clearHandler(response.requestId);
 return handler.callback(null, { traversers: handler.result });
 }
   }
 
   /**
+   * Clears the internal state containing the callback and result buffer of a 
given request.
+   * @param requestId
+   * @private
+   */
+  _clearHandler(requestId) {
+delete this._responseHandlers[requestId];
+  }
+
+  /**
* Closes the Connection.
* @return {Promise}
*/