This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 5bd0137f6ea9ffdf86899821a74ec5d86322a8ef Merge: 573edb8cec dee83b3335 Author: Cole-Greer <[email protected]> AuthorDate: Mon Nov 10 15:35:55 2025 -0800 Merge branch '3.8-dev' .github/workflows/build-test.yml | 76 +++++++++++++++++----- CHANGELOG.asciidoc | 3 +- docs/src/reference/gremlin-variants.asciidoc | 2 +- gremlin-javascript/pom.xml | 1 + .../gremlin-javascript/docker-compose.yml | 2 +- .../gremlin-javascript/lib/driver/connection.ts | 8 ++- .../test/integration/client-behavior-tests.js | 2 +- .../test/integration/socket-connection-tests.js | 3 +- pom.xml | 1 + 9 files changed, 74 insertions(+), 24 deletions(-) diff --cc .github/workflows/build-test.yml index ca9beb4e07,04db0a939e..fbbe3e2f15 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@@ -198,46 -198,90 +198,90 @@@ jobs run: | mvn clean install -pl $EXCLUDE_MODULES -q -DskipTests -Dci mvn verify -pl gremlin-driver -DskipIntegrationTests=false - # javascript: - # name: javascript - javascript-node20: - name: javascript-all-node20 - timeout-minutes: 15 - needs: cache-gremlin-server-docker-image - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Set up JDK 11 - uses: actions/setup-java@v5 - with: - java-version: '11' - distribution: 'temurin' - - name: Get Cached Server Base Image - uses: actions/cache@v4 - id: gremlin-server-test-docker-image - with: - path: | - ./gremlin-server/* - ~/.m2/repository/org/apache/tinkerpop/* - key: ${{ github.sha }} - - name: Load Docker Image - working-directory: ./gremlin-server - run: docker load --input gremlin-server.tar - - name: Build with Maven - run: | - EXCLUDE="-:gremlin-dotnet-source,-:gremlin-dotnet-tests,-:gremlin-go,-:gremlin-python,$EXCLUDE_FOR_GLV" - mvn clean install -pl $EXCLUDE -q -DskipTests -Dci - mvn verify -pl :gremlin-javascript,:gremlint,:gremlin-mcp -Dnode.test.version=20 - javascript-node22: - name: javascript-glv-node22 - timeout-minutes: 15 - needs: cache-gremlin-server-docker-image - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Set up JDK 11 - uses: actions/setup-java@v5 - with: - java-version: '11' - distribution: 'temurin' - - name: Get Cached Server Base Image - uses: actions/cache@v4 - id: gremlin-server-test-docker-image - with: - path: | - ./gremlin-server/* - ~/.m2/repository/org/apache/tinkerpop/* - key: ${{ github.sha }} - - name: Load Docker Image - working-directory: ./gremlin-server - run: docker load --input gremlin-server.tar - - name: Build with Maven - run: | - EXCLUDE="-:gremlin-dotnet-source,-:gremlin-dotnet-tests,-:gremlin-go,-:gremlin-python,$EXCLUDE_FOR_GLV" - mvn clean install -pl $EXCLUDE -q -DskipTests -Dci - mvn verify -pl :gremlin-javascript -Dnode.test.version=22 - javascript-node24: - name: javascript-glv-node24 - timeout-minutes: 15 - needs: cache-gremlin-server-docker-image - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Set up JDK 11 - uses: actions/setup-java@v5 - with: - java-version: '11' - distribution: 'temurin' - - name: Get Cached Server Base Image - uses: actions/cache@v4 - id: gremlin-server-test-docker-image - with: - path: | - ./gremlin-server/* - ~/.m2/repository/org/apache/tinkerpop/* - key: ${{ github.sha }} - - name: Load Docker Image - working-directory: ./gremlin-server - run: docker load --input gremlin-server.tar - - name: Build with Maven - run: | - EXCLUDE="-:gremlin-dotnet-source,-:gremlin-dotnet-tests,-:gremlin-go,-:gremlin-python,$EXCLUDE_FOR_GLV" - mvn clean install -pl $EXCLUDE -q -DskipTests -Dci - mvn verify -pl :gremlin-javascript -Dnode.test.version=24 ++# javascript-node20: ++# name: javascript-all-node20 +# timeout-minutes: 15 +# needs: cache-gremlin-server-docker-image - # runs-on: ${{ matrix.os }} - # strategy: - # matrix: - # # Windows Disabled until Linux containers are supported on Windows runners: https://github.com/actions/virtual-environments/issues/252 - # # os: [ubuntu-latest, windows-latest] - # os: [ubuntu-latest] ++# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v5 +# - name: Set up JDK 11 +# uses: actions/setup-java@v5 +# with: +# java-version: '11' +# distribution: 'temurin' +# - name: Get Cached Server Base Image - # if: matrix.os == 'ubuntu-latest' +# uses: actions/cache@v4 +# id: gremlin-server-test-docker-image +# with: +# path: | +# ./gremlin-server/* +# ~/.m2/repository/org/apache/tinkerpop/* +# key: ${{ github.sha }} - ## - name: Download Server Base Image - ## if: matrix.os == 'windows-latest' - ## uses: actions/download-artifact@v3 - ## with: - ## name: ${{ github.sha }} - ## path: ./gremlin-server +# - name: Load Docker Image +# working-directory: ./gremlin-server +# run: docker load --input gremlin-server.tar +# - name: Build with Maven +# run: | +# EXCLUDE="-:gremlin-dotnet-source,-:gremlin-dotnet-tests,-:gremlin-go,-:gremlin-python,$EXCLUDE_FOR_GLV" +# mvn clean install -pl $EXCLUDE -q -DskipTests -Dci - # mvn verify -pl :gremlin-javascript,:gremlint,:gremlin-mcp ++# mvn verify -pl :gremlin-javascript,:gremlint,:gremlin-mcp -Dnode.test.version=20 ++# javascript-node22: ++# name: javascript-glv-node22 ++# timeout-minutes: 15 ++# needs: cache-gremlin-server-docker-image ++# runs-on: ubuntu-latest ++# steps: ++# - uses: actions/checkout@v5 ++# - name: Set up JDK 11 ++# uses: actions/setup-java@v5 ++# with: ++# java-version: '11' ++# distribution: 'temurin' ++# - name: Get Cached Server Base Image ++# uses: actions/cache@v4 ++# id: gremlin-server-test-docker-image ++# with: ++# path: | ++# ./gremlin-server/* ++# ~/.m2/repository/org/apache/tinkerpop/* ++# key: ${{ github.sha }} ++# - name: Load Docker Image ++# working-directory: ./gremlin-server ++# run: docker load --input gremlin-server.tar ++# - name: Build with Maven ++# run: | ++# EXCLUDE="-:gremlin-dotnet-source,-:gremlin-dotnet-tests,-:gremlin-go,-:gremlin-python,$EXCLUDE_FOR_GLV" ++# mvn clean install -pl $EXCLUDE -q -DskipTests -Dci ++# mvn verify -pl :gremlin-javascript -Dnode.test.version=22 ++# javascript-node24: ++# name: javascript-glv-node24 ++# timeout-minutes: 15 ++# needs: cache-gremlin-server-docker-image ++# runs-on: ubuntu-latest ++# steps: ++# - uses: actions/checkout@v5 ++# - name: Set up JDK 11 ++# uses: actions/setup-java@v5 ++# with: ++# java-version: '11' ++# distribution: 'temurin' ++# - name: Get Cached Server Base Image ++# uses: actions/cache@v4 ++# id: gremlin-server-test-docker-image ++# with: ++# path: | ++# ./gremlin-server/* ++# ~/.m2/repository/org/apache/tinkerpop/* ++# key: ${{ github.sha }} ++# - name: Load Docker Image ++# working-directory: ./gremlin-server ++# run: docker load --input gremlin-server.tar ++# - name: Build with Maven ++# run: | ++# EXCLUDE="-:gremlin-dotnet-source,-:gremlin-dotnet-tests,-:gremlin-go,-:gremlin-python,$EXCLUDE_FOR_GLV" ++# mvn clean install -pl $EXCLUDE -q -DskipTests -Dci ++# mvn verify -pl :gremlin-javascript -Dnode.test.version=24 python: name: python timeout-minutes: 20 diff --cc docs/src/reference/gremlin-variants.asciidoc index 5ca696c2ec,4554e982b0..8993369aa4 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@@ -1414,11 -1405,9 +1414,11 @@@ g.inject(java.awt.Color.red, "hi", 123) [[gremlin-javascript]] == Gremlin-JavaScript +IMPORTANT: 4.0.0-beta.1 Release - Gremlin-JavaScript is not available in this beta, please consider testing with +Java or Python. image:gremlin-js.png[width=130,float=right] Apache TinkerPop's Gremlin-JavaScript implements Gremlin within the - JavaScript language. It targets Node.js runtime and can be used on different operating systems on any Node.js 6 or + JavaScript language. It targets Node.js runtime and can be used on different operating systems on any Node.js 20 or above. Since the JavaScript naming conventions are very similar to that of Java, it should be very easy to switch between Gremlin-Java and Gremlin-JavaScript. diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts index 095dce2757,b7973b96ae..38a75b15a3 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts @@@ -184,9 -135,12 +184,11 @@@ export default class Connection extend 'perMessageDeflate', ]); // Check if any `ws` specific options are provided and are non-null / non-undefined - const hasWsSpecificOptions: boolean = Object.entries(this.options).some( - ([key, value]) => wsSpecificOptions.has(key) && ![null, undefined].includes(value), - ); - const hasWsSpecificOptions = ++ const hasWsSpecificOptions: boolean = + Object.entries(this.options).some( + ([key, value]) => wsSpecificOptions.has(key) && ![null, undefined].includes(value), + ) || - this._enableCompression || // we need to check the presence of this variable and pass this into ws + this._enableUserAgentOnConnect; // global websocket will send "node" as user agent by default which doesn't comply with Gremlin // Only use the global websocket if we don't have any unsupported options const useGlobalWebSocket = !hasWsSpecificOptions && globalThis.WebSocket; const WebSocket = useGlobalWebSocket || (await import('ws')).default; diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/socket-connection-tests.js index 47ac00fa91,e39ab537ed..6b80f5770f --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/socket-connection-tests.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/integration/socket-connection-tests.js @@@ -78,7 -78,8 +78,8 @@@ describe('Connection', function () globalThis.WebSocket = function () { globalWebsocketCalls++; }; - const connection = helper.getDriverRemoteConnection(`ws://localhost:${testServerPort}/401`); + const connection = helper.getDriverRemoteConnection(`ws://localhost:${testServerPort}/401`, - {enableCompression: false, enableUserAgentOnConnect: false}); // Global WebSocket is not compatible with customized compression and user agent headers ++ {enableUserAgentOnConnect: false}); // Global WebSocket is not compatible with user agent headers return connection .open() .catch(() => {})
