@Override @Async public Future<?> vacuumTablesAsync( ConcurrentLinkedQueue<AnalyticsTablePartition> partitions ) { taskLoop: while ( true ) { AnalyticsTablePartition partition = partitions.poll(); if ( partition == null ) { break taskLoop; } final String sql = statementBuilder.getVacuum( partition.getTempTableName() ); log.debug( "Vacuum SQL: " + sql ); jdbcTemplate.execute( sql ); } return ConcurrentUtils.getImmediateFuture(); }