diff --git a/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java b/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java index 93d2696aa6..29c800d20c 100644 --- a/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java +++ b/integration/src/test/java/com/arcadedb/integration/backup/FullBackupIT.java @@ -101,8 +101,9 @@ public void testFullBackupConcurrency() throws IOException, InterruptedException } final Thread[] threads = new Thread[CONCURRENT_THREADS]; + + final Database importedDatabase = importDatabase(); try { - final Database importedDatabase = importDatabase(); final VertexType type = importedDatabase.getSchema().createVertexType("BackupTest", CONCURRENT_THREADS); @@ -126,12 +127,17 @@ public int getBucketIdByRecord(Document record, boolean async) { public void run() { final AtomicInteger totalPerThread = new AtomicInteger(); for (int j = 0; j < 500; j++) { - importedDatabase.transaction(() -> { - for (int k = 0; k < 500; k++) { - MutableVertex v = importedDatabase.newVertex("BackupTest").set("thread", threadId).set("id", totalPerThread.getAndIncrement()).save(); - Assertions.assertEquals(threadBucket.getId(), v.getIdentity().getBucketId()); + importedDatabase.begin(); + for (int k = 0; k < 500; k++) { + MutableVertex v = importedDatabase.newVertex("BackupTest").set("thread", threadId).set("id", totalPerThread.getAndIncrement()).save(); + Assertions.assertEquals(threadBucket.getId(), v.getIdentity().getBucketId()); + + if (k + 1 % 100 == 0) { + importedDatabase.commit(); + importedDatabase.begin(); } - }); + } + importedDatabase.commit(); } } @@ -170,8 +176,11 @@ public void run() { } } - Assertions.assertTrue(DatabaseFactory.getActiveDatabaseInstances().isEmpty(), "Found active databases: " + DatabaseFactory.getActiveDatabaseInstances()); } finally { + importedDatabase.close(); + + Assertions.assertTrue(DatabaseFactory.getActiveDatabaseInstances().isEmpty(), "Found active databases: " + DatabaseFactory.getActiveDatabaseInstances()); + for (int i = 0; i < CONCURRENT_THREADS; i++) { new File(FILE + "_" + i).delete(); FileUtils.deleteRecursively(new File(DATABASE_PATH + "_restored_" + i)); diff --git a/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java b/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java index 5181077ad4..598b2b433d 100644 --- a/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java +++ b/integration/src/test/java/com/arcadedb/integration/importer/OrientDBImporterIT.java @@ -65,8 +65,8 @@ public void testImportOK() throws IOException { Assertions.assertEquals("admin", security.getString("name")); } } - Assertions.assertTrue(DatabaseFactory.getActiveDatabaseInstances().isEmpty(), "Found active databases: " + DatabaseFactory.getActiveDatabaseInstances()); } finally { + Assertions.assertTrue(DatabaseFactory.getActiveDatabaseInstances().isEmpty(), "Found active databases: " + DatabaseFactory.getActiveDatabaseInstances()); FileUtils.deleteRecursively(databaseDirectory); } } diff --git a/network/src/main/java/com/arcadedb/remote/RemoteDatabase.java b/network/src/main/java/com/arcadedb/remote/RemoteDatabase.java index 410d7607d7..abb13fcdf8 100644 --- a/network/src/main/java/com/arcadedb/remote/RemoteDatabase.java +++ b/network/src/main/java/com/arcadedb/remote/RemoteDatabase.java @@ -235,19 +235,16 @@ public ResultSet command(final String language, final String command, final Obje public ResultSet query(final String language, final String command, final Object... args) { Map params = mapArgs(args); - return (ResultSet) databaseCommand("query", language, command, params, false, new Callback() { - @Override - public Object call(final HttpURLConnection connection, final JSONObject response) { - final ResultSet resultSet = new InternalResultSet(); - - final JSONArray resultArray = response.getJSONArray("result"); - for (int i = 0; i < resultArray.length(); ++i) { - final JSONObject result = resultArray.getJSONObject(i); - ((InternalResultSet) resultSet).add(new ResultInternal(result.toMap())); - } + return (ResultSet) databaseCommand("query", language, command, params, false, (connection, response) -> { + final ResultSet resultSet = new InternalResultSet(); - return resultSet; + final JSONArray resultArray = response.getJSONArray("result"); + for (int i = 0; i < resultArray.length(); ++i) { + final JSONObject result = resultArray.getJSONObject(i); + ((InternalResultSet) resultSet).add(new ResultInternal(result.toMap())); } + + return resultSet; }); } @@ -420,14 +417,14 @@ private Object httpCommand(final String extendedURL, final String operation, fin } catch (NeedRetryException | DuplicatedKeyException | TransactionException | TimeoutException e) { throw e; } catch (Exception e) { - throw new RemoteException("Error on executing remote operation " + operation, e); + throw new RemoteException("Error on executing remote operation " + operation + " (cause: " + e.getMessage() + ")", e); } } if (lastException instanceof RuntimeException) throw (RuntimeException) lastException; - throw new RemoteException("Error on executing remote operation " + operation, lastException); + throw new RemoteException("Error on executing remote operation " + operation + " (retry=" + maxRetry + ")", lastException); } public int getApiVersion() { diff --git a/pom.xml b/pom.xml index 5b1f52b878..38d3e27dcd 100644 --- a/pom.xml +++ b/pom.xml @@ -177,21 +177,7 @@ **/*HASplitBrainIT.java - **/*ReplicationServerLeaderDownNoTransactionsToForwardIT.java - **/*ReplicationServerLeaderChanges3TimesIT.java - **/*ReplicationServerLeaderDownIT.java - **/*ReplicationServerQuorumMajority2ServersOutIT.java - **/*ReplicationServerQuorumAllIT.java - **/*ReplicationServerQuorumMajorityIT.java - **/*ReplicationServerQuorumNoneIT.java - **/*ReplicationServerReplicaHotResyncIT.java - **/*ReplicationServerReplicaRestartForceDbInstallIT.java - **/*ReplicationServerWriteAgainstReplicaIT.java - **/*ServerBackupDatabaseIT.java **/*HTTP2ServersIT.java - **/*TwoServersIT.java - **/*FullBackupIT.java - **/*RemoteConsoleIT.java **/ArcadeGraphProcessDebugTest.java **/ArcadeGraphStructureDebugTest.java ${exclude.tests}