sometimes plots are missing

The csv generation is running in parallel, but the 
list that collects the results was not synchronized.
This commit is contained in:
ahr
2017-12-16 19:22:56 +01:00
parent cafaa7343c
commit 6509391059

View File

@@ -14,6 +14,7 @@ import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Formatter; import java.util.Formatter;
import java.util.Iterator; import java.util.Iterator;
@@ -82,7 +83,7 @@ public class Plotter {
final Path tmpDir = tmpBaseDir.resolve(tmpSubDir); final Path tmpDir = tmpBaseDir.resolve(tmpSubDir);
try { try {
Files.createDirectories(tmpDir); Files.createDirectories(tmpDir);
final List<DataSeries> dataSeries = new ArrayList<>(); final List<DataSeries> dataSeries = Collections.synchronizedList(new ArrayList<>());
final String query = plotSettings.getQuery(); final String query = plotSettings.getQuery();
final List<String> groupBy = plotSettings.getGroupBy(); final List<String> groupBy = plotSettings.getGroupBy();
@@ -97,8 +98,6 @@ public class Plotter {
final AtomicInteger idCounter = new AtomicInteger(0); final AtomicInteger idCounter = new AtomicInteger(0);
result.getGroups().stream().parallel().forEach(groupResult -> { result.getGroups().stream().parallel().forEach(groupResult -> {
try{ try{
final CsvSummary csvSummary = toCsv(groupResult, tmpDir, dateFrom, dateTo, plotSettings); final CsvSummary csvSummary = toCsv(groupResult, tmpDir, dateFrom, dateTo, plotSettings);
final int id = idCounter.getAndIncrement(); final int id = idCounter.getAndIncrement();