default CompletableFuture<Void> putAllAsync(Collection<Entry<K, V>> records) {
    List<CompletableFuture<Void>> putFutures =
        records.stream().map(e -> putAsync(e.getKey(), e.getValue())).collect(Collectors.toList());
    return CompletableFuture.allOf(Iterables.toArray(putFutures, CompletableFuture.class));
  }
Asynchronously store the table {@code records} with specified {@code keys}. This method must be thread-safe.
The default implementation calls putAsync for each entry and return a combined future.
@param records table records to be written
@return CompletableFuture for the put request
samza-api/src/main/java/org/apache/samza/table/remote/TableWriteFunction.java