You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2020/04/15 11:43:59 UTC

[tinkerpop] branch master updated (bb3b879 -> f3d8939)

This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.


    from bb3b879  Remove more python2 syntax CTR
     new a9c02e4  gremlin-javascript: remove session close method
     new 324500e  Merge branch '3.3-dev' into 3.4-dev
     new f3d8939  Merge branch '3.4-dev'

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 docs/src/reference/gremlin-variants.asciidoc       |  2 +-
 docs/src/upgrade/release-3.3.x.asciidoc            |  2 +-
 .../gremlin-javascript/lib/driver/client.js        | 20 +++++++++++++++++++-
 .../gremlin-javascript/lib/driver/connection.js    | 22 ----------------------
 .../javascript/gremlin-javascript/test/helper.js   |  4 ++--
 5 files changed, 23 insertions(+), 27 deletions(-)


[tinkerpop] 02/03: Merge branch '3.3-dev' into 3.4-dev

Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 324500e35871316af828bda496314db25f983bed
Merge: 183b2c9 a9c02e4
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Wed Apr 15 07:43:27 2020 -0400

    Merge branch '3.3-dev' into 3.4-dev

 docs/src/reference/gremlin-variants.asciidoc       |  2 +-
 docs/src/upgrade/release-3.3.x.asciidoc            |  2 +-
 .../gremlin-javascript/lib/driver/client.js        | 20 +++++++++++++++++++-
 .../gremlin-javascript/lib/driver/connection.js    | 22 ----------------------
 .../javascript/gremlin-javascript/test/helper.js   |  4 ++--
 5 files changed, 23 insertions(+), 27 deletions(-)



[tinkerpop] 01/03: gremlin-javascript: remove session close method

Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit a9c02e4259e01847e56a24fe4a9ff93da8ab3fe5
Author: Liu Jianping <he...@foxmail.com>
AuthorDate: Thu Apr 2 17:23:34 2020 +0800

    gremlin-javascript: remove session close method
    
    Attach session mode check in 'client', remove addition logic for session
    
    gremlin-javascript: update session docs
    
    Revert "gremlin-javascript: remove session close method"
    
    This reverts commit 6e20698fbb9c60cc8672b7ab613ab855f8748e06.
    
    gremlin-javascript: make session close request as specification
    
    session is one mode of client, attach 'session' logic to client
    
    test case: fixup gremlin server port
---
 docs/src/reference/gremlin-variants.asciidoc       |  2 +-
 docs/src/upgrade/release-3.3.x.asciidoc            |  2 +-
 .../gremlin-javascript/lib/driver/client.js        | 20 +++++++++++++++++++-
 .../gremlin-javascript/lib/driver/connection.js    | 22 ----------------------
 .../javascript/gremlin-javascript/test/helper.js   |  4 ++--
 5 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 780d69e..0aea657 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -644,7 +644,7 @@ It is also possible to initialize the `Client` to use <<sessions,sessions>>:
 
 [source,javascript]
 ----
-const client = new gremlin.driver.Client('ws://localhost:8182/gremlin', { traversalSource: 'g', 'processor': 'session' });
+const client = new gremlin.driver.Client('ws://localhost:8182/gremlin', { traversalSource: 'g', 'session': 'unique-string-id' });
 ----
 
 With this configuration, the state of variables within scripts are preserved between requests.
diff --git a/docs/src/upgrade/release-3.3.x.asciidoc b/docs/src/upgrade/release-3.3.x.asciidoc
index 2861177..0e9549c 100644
--- a/docs/src/upgrade/release-3.3.x.asciidoc
+++ b/docs/src/upgrade/release-3.3.x.asciidoc
@@ -43,7 +43,7 @@ and exposed on the server. As such, providing support in all Gremlin Language Va
 ensuring a consistent implementation for all programming languages.
 
 [source,javascript]
-const client = new gremlin.driver.Client('ws://localhost:8182/gremlin', { traversalSource: 'g', 'processor': 'session' });
+const client = new gremlin.driver.Client('ws://localhost:8182/gremlin', { traversalSource: 'g', 'session': 'unique-string-id' });
 ==== Deprecate maxWaitForSessionClose
 
 The `maxWaitForSessionClose` setting for the Java driver has been deprecated and in some sense replaced by the
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/client.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/client.js
index 91abf47..519ccb4 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/client.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/client.js
@@ -18,6 +18,7 @@
  */
 'use strict';
 
+const utils = require('../utils');
 const Connection = require('./connection');
 const Bytecode = require('../process/bytecode');
 
@@ -39,11 +40,20 @@ class Client {
    * @param {String} [options.traversalSource] The traversal source. Defaults to: 'g'.
    * @param {GraphSONWriter} [options.writer] The writer to use.
    * @param {Authenticator} [options.authenticator] The authentication handler to use.
-   * @param {String} [options.processor] The name of the opProcessor to use
+   * @param {String} [options.processor] The name of the opProcessor to use, leave it undefined or set 'session' when session mode.
+   * @param {String} [options.session] The sessionId of Client in session mode. Defaults to null means session-less Client.
    * @constructor
    */
   constructor(url, options) {
     this._options = options;
+    if (this._options.processor === 'session') {
+      // compatibility with old 'session' processor setting
+      this._options.session = options.session || utils.getUuid()
+    }
+    if (this._options.session) {
+      // re-assign processor to 'session' when in session mode
+      this._options.processor = options.processor || 'session';
+    }
     this._connection = new Connection(url, options);
   }
 
@@ -70,6 +80,9 @@ class Client {
         'accept': this._connection.mimeType,
         'aliases': { 'g': this._options.traversalSource || 'g' }
       };
+      if (this._options.session && this._options.processor === 'session') {
+        args['session'] = this._options.session;
+      }
 
       return this._connection.submit(null, 'eval', args, null, this._options.processor || '');
     }
@@ -81,9 +94,14 @@ class Client {
 
   /**
    * Closes the underlying connection
+   * send session close request before connection close if session mode
    * @returns {Promise}
    */
   close() {
+    if (this._options.session && this._options.processor === 'session') {
+      const args = {'session': this._options.session};
+      return this._connection.submit(null, 'close', args, null, this._options.processor).then(() => this._connection.close());
+    }
     return this._connection.close();
   }
 
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.js
index 01cf16a..29be5dc 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.js
@@ -100,10 +100,6 @@ class Connection extends EventEmitter {
     this._pingIntervalDelay = this.options.pingInterval || pingIntervalDelay;
     this._pongTimeoutDelay = this.options.pongTimeout || pongTimeoutDelay;
 
-    if (options.processor === 'session') {
-      this._session = true;
-      this._sessionId = utils.getUuid();
-    }
     if (this.options.connectOnStartup !== false) {
       this.open();
     }
@@ -169,13 +165,6 @@ class Connection extends EventEmitter {
         };
       }
 
-      if (this._session === true) {
-        if (bytecode !== null || args === null) {
-          reject(new Error('only script enabled in session mode'));
-          return;
-        }
-      }
-
       const message = Buffer.from(this._header + JSON.stringify(this._getRequest(requestId, bytecode, op, args, processor)));
       this._ws.send(message);
     }));
@@ -198,10 +187,6 @@ class Connection extends EventEmitter {
       args = this._adaptArgs(args, true);
     }
 
-    if (this._session === true && op !== 'authentication') {
-      args['session'] = this._sessionId;
-    }
-
     return ({
       'requestId': { '@type': 'g:UUID', '@value': id },
       'op': op || 'bytecode',
@@ -380,13 +365,6 @@ class Connection extends EventEmitter {
     }
     if (!this._closePromise) {
       this._closePromise = new Promise(resolve => {
-        if (this._session === true) {
-          // session close request, dsl in args as tips and not be executed actually
-          const args = {'gremlin': 'session.close()'};
-          const message = Buffer.from(this._header + JSON.stringify(this._getRequest(utils.getUuid(), null, 'close', args, 'session')));
-          this._ws.send(message);
-        }
-
         this._closeCallback = resolve;
         this._ws.close();
       });
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/helper.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/helper.js
index 1c837cf..72708c0 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/helper.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/helper.js
@@ -48,5 +48,5 @@ exports.getClient = function getClient(traversalSource) {
 };
 
 exports.getSessionClient = function getSessionClient(traversalSource) {
-  return new Client(serverUrl, { 'traversalSource': traversalSource, 'processor': 'session'});
-};
\ No newline at end of file
+  return new Client(serverUrl, { 'traversalSource': traversalSource, 'session': 'unique-string-id'});
+};


[tinkerpop] 03/03: Merge branch '3.4-dev'

Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit f3d8939146c4a6a49a2879e03642a53abb48cab1
Merge: bb3b879 324500e
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Wed Apr 15 07:43:39 2020 -0400

    Merge branch '3.4-dev'

 docs/src/reference/gremlin-variants.asciidoc       |  2 +-
 docs/src/upgrade/release-3.3.x.asciidoc            |  2 +-
 .../gremlin-javascript/lib/driver/client.js        | 20 +++++++++++++++++++-
 .../gremlin-javascript/lib/driver/connection.js    | 22 ----------------------
 .../javascript/gremlin-javascript/test/helper.js   |  4 ++--
 5 files changed, 23 insertions(+), 27 deletions(-)