fix: events are added to wrong partition
The writerCache in DataStore did not use the partitionId in its cache key. Therefore the cache could return the wrong writer and events were written to the wrong partition. Fixed by changing the cache key.
This commit is contained in:
@@ -17,6 +17,7 @@ import java.util.concurrent.LinkedBlockingDeque;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
@@ -27,7 +28,6 @@ import org.lucares.pdb.api.Query;
|
||||
import org.lucares.pdb.datastore.internal.DataStore;
|
||||
import org.lucares.performance.db.PdbExport;
|
||||
import org.lucares.performance.db.PerformanceDb;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.lucares.utils.file.FileUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -311,4 +311,49 @@ public class TcpIngestorTest {
|
||||
Assertions.assertEquals(value2, result.get(3));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCsvIngestorWithEventsFromDifferentMonths() throws Exception {
|
||||
|
||||
final String host = "someHost";
|
||||
final long value1 = 222;
|
||||
final long value2 = 1;
|
||||
|
||||
final OffsetDateTime dateNovember = OffsetDateTime.of(2019, 11, 30, 23, 59, 59, 999, ZoneOffset.UTC);
|
||||
final OffsetDateTime dateDecember = OffsetDateTime.of(2019, 12, 1, 0, 0, 0, 0, ZoneOffset.UTC);
|
||||
|
||||
try (TcpIngestor ingestor = new TcpIngestor(dataDirectory)) {
|
||||
|
||||
ingestor.start();
|
||||
|
||||
final Map<String, Object> entry1 = new HashMap<>();
|
||||
entry1.put("@timestamp", dateNovember.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
|
||||
entry1.put("host", host);
|
||||
entry1.put("duration", value1);
|
||||
|
||||
final Map<String, Object> entry2 = new HashMap<>();
|
||||
entry2.put("@timestamp", dateDecember.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
|
||||
entry2.put("host", host);
|
||||
entry2.put("duration", value2);
|
||||
|
||||
PdbTestUtil.sendAsCsv(List.of("@timestamp", "host", "duration"), List.of(entry1, entry2));
|
||||
} catch (final Exception e) {
|
||||
LOGGER.error("", e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
try (PerformanceDb db = new PerformanceDb(dataDirectory)) {
|
||||
final DateTimeRange rangeNovember = new DateTimeRange(dateNovember, dateNovember);
|
||||
final LongList resultNovember = db.get(new Query("host=" + host, rangeNovember)).singleGroup().flatMap();
|
||||
Assertions.assertEquals(2, resultNovember.size());
|
||||
Assertions.assertEquals(dateNovember.toInstant().toEpochMilli(), resultNovember.get(0));
|
||||
Assertions.assertEquals(value1, resultNovember.get(1));
|
||||
|
||||
final DateTimeRange rangeDecember = new DateTimeRange(dateDecember, dateDecember);
|
||||
final LongList resultDecember = db.get(new Query("host=" + host, rangeDecember)).singleGroup().flatMap();
|
||||
Assertions.assertEquals(2, resultDecember.size());
|
||||
Assertions.assertEquals(dateDecember.toInstant().toEpochMilli(), resultDecember.get(0));
|
||||
Assertions.assertEquals(value2, resultDecember.get(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user