From d0aa5dd63718373102f89f87f37d2201e350e59d Mon Sep 17 00:00:00 2001 From: Martin Stockhammer Date: Sun, 29 Aug 2021 13:57:22 +0200 Subject: [PATCH] Trying to speed up table truncate --- .../metadata-store-cassandra/pom.xml | 3 +- .../CassandraMetadataRepositoryTest.java | 29 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml index e0f592a7a..477482870 100644 --- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml +++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml @@ -396,7 +396,7 @@ false 500 true - DEBUG + INFO false broadcast_rpc_address: 127.0.0.1 @@ -404,6 +404,7 @@ true + diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java index 4ab388149..71636efb4 100644 --- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java +++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java @@ -44,7 +44,10 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.truncate; import static com.datastax.oss.driver.api.querybuilder.SchemaBuilder.dropTable; @@ -72,7 +75,7 @@ public class CassandraMetadataRepositoryTest long cTime; int testNum = 0; - AtomicBoolean clearedTables = new AtomicBoolean( false ); + final AtomicBoolean clearedTables = new AtomicBoolean( false ); @Override @@ -121,8 +124,7 @@ public class CassandraMetadataRepositoryTest if (!clearedTables.get()) { - clearReposAndNamespace( cassandraArchivaManager ); - clearedTables.set( true ); + clearReposAndNamespace( cassandraArchivaManager, clearedTables ); } System.err.println( "Finished setting up - "+testInfo.getDisplayName() + " - " + (System.currentTimeMillis( ) - cTime) +"ms"); } @@ -164,13 +166,12 @@ public class CassandraMetadataRepositoryTest throws Exception { System.err.println( "Shutting down - " + (testNum-1) + " - " + testInfo.getDisplayName( ) + " - " + ( System.currentTimeMillis( ) - cTime ) +"ms"); - clearReposAndNamespace( cassandraArchivaManager ); - clearedTables.set( true ); + clearReposAndNamespace( cassandraArchivaManager, clearedTables ); super.tearDown(); System.err.println( "Shutting down finished - " + testInfo.getDisplayName( ) + " - " + ( System.currentTimeMillis( ) - cTime ) +"ms"); } - static void clearReposAndNamespace( CassandraArchivaManager cassandraArchivaManager ) + static void clearReposAndNamespace( final CassandraArchivaManager cassandraArchivaManager, final AtomicBoolean clearedFlag ) throws Exception { if (cassandraArchivaManager!=null) @@ -188,15 +189,21 @@ public class CassandraMetadataRepositoryTest cassandraArchivaManager.getLicenseFamilyName( ), cassandraArchivaManager.getDependencyFamilyName( ) ); - for ( String table : tables ) - { - session.execute( truncate( table ).build( ) ); - } - + CompletableFuture.allOf( tables.stream( ).map( table -> session.executeAsync( truncate( table ).build( ) ) ) + .map( CompletionStage::toCompletableFuture ).collect( Collectors.toList( ) ).toArray( new CompletableFuture[0] ) ) + .thenAccept( ( c ) -> { + if ( clearedFlag != null ) clearedFlag.set( true ); + } ).get( ) + ; } } else { System.err.println( "cassandraArchivaManager is null" ); } } + static void clearReposAndNamespace( final CassandraArchivaManager cassandraArchivaManager) + throws Exception { + clearReposAndNamespace( cassandraArchivaManager, null ); + } + }