From ad4b3f4d2b231342ba3496d284ce5676a726b970 Mon Sep 17 00:00:00 2001 From: fickludd Date: Mon, 2 Jul 2018 16:04:01 +0200 Subject: [PATCH] Adapt periodic commit in REST transactional endpoint --- .../rest/transactional/TransactionHandle.java | 14 ++++++++------ .../transactional/integration/TransactionIT.java | 8 +++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandle.java b/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandle.java index b97d6cdc50ac0..a872b572220d6 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandle.java +++ b/community/server/src/main/java/org/neo4j/server/rest/transactional/TransactionHandle.java @@ -320,9 +320,7 @@ private void executeStatements( StatementDeserializer statements, ExecutionResul hasPrevious = true; TransactionalContext tc = txManagerFacade.create( request, queryService, type, loginContext, statement.statement(), statement.parameters() ); - Result result = safelyExecute( statement, hasPeriodicCommit, tc ); - output.statementResult( result, statement.includeStats(), statement.resultDataContents() ); - output.notifications( result.getNotifications() ); + safelyExecute( statement, hasPeriodicCommit, tc, output ); } catch ( KernelException | CypherException | AuthorizationViolationException | WriteOperationsNotAllowedException e ) @@ -363,12 +361,16 @@ private void executeStatements( StatementDeserializer statements, ExecutionResul } } - private Result safelyExecute( Statement statement, boolean hasPeriodicCommit, TransactionalContext tc ) - throws QueryExecutionKernelException + private void safelyExecute( Statement statement, + boolean hasPeriodicCommit, + TransactionalContext tc, + ExecutionResultSerializer output ) throws QueryExecutionKernelException, IOException { try { - return engine.executeQuery( statement.statement(), ValueUtils.asMapValue( statement.parameters() ), tc ); + Result result = engine.executeQuery( statement.statement(), ValueUtils.asMapValue( statement.parameters() ), tc ); + output.statementResult( result, statement.includeStats(), statement.resultDataContents() ); + output.notifications( result.getNotifications() ); } finally { diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/integration/TransactionIT.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/integration/TransactionIT.java index 3d7761ca32979..93595154a52f5 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/integration/TransactionIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/integration/TransactionIT.java @@ -315,7 +315,7 @@ public void begin_and_execute_periodic_commit_and_commit() throws Exception public void begin_and_execute_periodic_commit_that_returns_data_and_commit() throws Exception { int nodes = 11; - int batch = 2; + int batchSize = 2; ServerTestUtils.withCSVFile( nodes, url -> { long nodesInDatabaseBeforeTransaction = countNodes(); @@ -324,7 +324,7 @@ public void begin_and_execute_periodic_commit_that_returns_data_and_commit() thr // begin and execute and commit Response response = http.POST( "db/data/transaction/commit", - quotedJson( "{ 'statements': [ { 'statement': 'USING PERIODIC COMMIT " + batch + " LOAD CSV FROM " + + quotedJson( "{ 'statements': [ { 'statement': 'USING PERIODIC COMMIT " + batchSize + " LOAD CSV FROM " + "\\\"" + url + "\\\" AS line CREATE (n {id: 23}) RETURN n' } ] }" ) ); long txIdAfter = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); @@ -336,7 +336,9 @@ public void begin_and_execute_periodic_commit_that_returns_data_and_commit() thr JsonNode columns = response.get( "results" ).get( 0 ).get( "columns" ); assertThat( columns.toString(), equalTo( "[\"n\"]" ) ); assertThat( countNodes(), equalTo( nodesInDatabaseBeforeTransaction + nodes ) ); - assertThat( txIdAfter, equalTo( txIdBefore + ((nodes / batch) + 1) ) ); + long nBatches = (nodes / batchSize) + 1; + long expectedTxCount = nBatches + 1; // tx which create the property key token `id` + assertThat( txIdAfter - txIdBefore, equalTo( expectedTxCount ) ); } ); }