Skip to content

Commit 7eae698

Browse files
committed
Notify transaction about RUN failure
Transaction should be marked as failed when queries fail. It was previously only marked when PULL_ALL failed. This commit makes RUN handler notify transaction on failure.
1 parent 62cd397 commit 7eae698

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

driver/src/main/java/org/neo4j/driver/internal/InternalStatementResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public class InternalStatementResult implements StatementResult
5050
{
5151
this.statement = statement;
5252
this.connection = connection;
53-
this.runResponseHandler = new RunResponseHandler( null );
53+
this.runResponseHandler = new RunResponseHandler( null, null );
5454
this.pullAllResponseHandler = new RecordsResponseHandler( runResponseHandler );
5555
this.resourcesHandler = resourcesHandler;
5656
}

driver/src/main/java/org/neo4j/driver/internal/async/QueryRunner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static InternalFuture<StatementResultCursor> runAsync( AsyncConnection co
5050
Map<String,Value> params = statement.parameters().asMap( ofValue() );
5151

5252
InternalPromise<Void> runCompletedPromise = connection.newPromise();
53-
final RunResponseHandler runHandler = new RunResponseHandler( runCompletedPromise );
53+
final RunResponseHandler runHandler = new RunResponseHandler( runCompletedPromise, tx );
5454
final PullAllResponseHandler pullAllHandler = newPullAllHandler( statement, runHandler, connection, tx );
5555

5656
connection.run( query, params, runHandler );

driver/src/main/java/org/neo4j/driver/internal/handlers/RunResponseHandler.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,22 @@
2525
import java.util.List;
2626
import java.util.Map;
2727

28+
import org.neo4j.driver.internal.ExplicitTransaction;
2829
import org.neo4j.driver.internal.spi.ResponseHandler;
2930
import org.neo4j.driver.v1.Value;
3031

3132
public class RunResponseHandler implements ResponseHandler
3233
{
3334
private final Promise<Void> runCompletedPromise;
35+
private final ExplicitTransaction tx;
3436

3537
private List<String> statementKeys;
3638
private long resultAvailableAfter;
3739

38-
public RunResponseHandler( Promise<Void> runCompletedPromise )
40+
public RunResponseHandler( Promise<Void> runCompletedPromise, ExplicitTransaction tx )
3941
{
4042
this.runCompletedPromise = runCompletedPromise;
43+
this.tx = tx;
4144
}
4245

4346
@Override
@@ -55,6 +58,10 @@ public void onSuccess( Map<String,Value> metadata )
5558
@Override
5659
public void onFailure( Throwable error )
5760
{
61+
if ( tx != null )
62+
{
63+
tx.resultFailed( error );
64+
}
5865
if ( runCompletedPromise != null )
5966
{
6067
runCompletedPromise.setFailure( error );

0 commit comments

Comments
 (0)