Skip to content

Add explicit transaction support to non-Java GLVs#3434

Open
kenhuuu wants to merge 2 commits into
implicit-txfrom
tx-glv
Open

Add explicit transaction support to non-Java GLVs#3434
kenhuuu wants to merge 2 commits into
implicit-txfrom
tx-glv

Conversation

@kenhuuu
Copy link
Copy Markdown
Contributor

@kenhuuu kenhuuu commented May 28, 2026

Implement Transaction classes in gremlin-python, gremlin-go, gremlin-javascript, and gremlin-dotnet that mirror the Java HttpRemoteTransaction. Transaction wraps a Client and provides begin/commit/rollback/close lifecycle plus a submit() method for plain gremlin-lang strings.

gremlin-driver's default transaction close behavior is now rollback to match all GLVs.

Also changes how requests are submitted in gremlin-go. In particular it now waits for response headers before returning. This allows users to check if the response returns an err (pretty much any non-200 OK response), before having to check the ResultSet itself.

kenhuuu added 2 commits May 27, 2026 14:34
Split executeAndStream() into sendRequest() (synchronous HTTP call) and
streamResponse() (async body streaming). submit() now blocks until the
server acknowledges the request (response headers received), then streams
the body in the background.

Non-GraphBinary HTTP errors (400/500 with text/JSON bodies) are now
returned directly from submit() instead of being embedded in the
ResultSet. Tests updated accordingly.

Assisted-by: Kiro:claude-opus-4-6
Implement Transaction classes in gremlin-python, gremlin-go,
gremlin-javascript, and gremlin-dotnet that mirror the Java
HttpRemoteTransaction. Transaction wraps a Client and provides
begin/commit/rollback/close lifecycle plus a submit() method for
plain gremlin-lang strings.

Key design decisions:
- Default close behavior changed from commit to rollback (all GLVs)
- Transactions are single-use (terminal state after commit/rollback)
- gtx.tx() returns the same Transaction (enables gtx.tx().commit())

Assisted-by: Kiro:claude-opus-4-6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant