Skip to content

Commit bc6c2c0

Browse files
authored
Merge pull request #363 from HSLdevcom/feat/reduce-logging-for-empty-transport-mode
Reduce logging for empty transport mode
2 parents aeb2884 + 7d18410 commit bc6c2c0

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>fi.hsl</groupId>
44
<artifactId>transitdata-common</artifactId>
5-
<version>1.6.3-RC</version>
5+
<version>1.6.4-RC</version>
66
<packaging>jar</packaging>
77
<name>Common utilities for Transitdata projects</name>
88
<properties>

src/main/java/fi/hsl/common/hfp/HfpParser.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,18 @@
1616
import java.sql.Timestamp;
1717
import java.time.LocalTime;
1818
import java.time.OffsetDateTime;
19+
import java.util.HashSet;
1920
import java.util.Optional;
21+
import java.util.Set;
2022
import java.util.regex.Pattern;
2123
import java.io.ByteArrayOutputStream;
2224

2325
public class HfpParser {
2426
private static final Logger log = LoggerFactory.getLogger(HfpParser.class);
2527

2628
static final Pattern topicVersionRegex = Pattern.compile("(^v\\d+|dev)");
29+
30+
private static Set<String> vehiclesWithEmptyTransportMode = new HashSet<>();
2731

2832
// Let's use dsl-json (https://github.com/ngs-doo/dsl-json) for performance.
2933
// Based on this benchmark: https://github.com/fabienrenaud/java-json-benchmark
@@ -32,6 +36,15 @@ public class HfpParser {
3236

3337
//Note! Apparently not thread safe, for per thread reuse use ThreadLocal pattern or create separate instances
3438
final DslJson<Object> dslJson = new DslJson<>(Settings.withRuntime().allowArrayFormat(true).includeServiceLoader());
39+
40+
private static void foundVehicleWithEmptyTransportMode(String uniqueVehicleId) {
41+
vehiclesWithEmptyTransportMode.add(uniqueVehicleId);
42+
43+
if (vehiclesWithEmptyTransportMode.size() > 100) {
44+
log.warn("Vehicles with empty transport mode: " + vehiclesWithEmptyTransportMode);
45+
vehiclesWithEmptyTransportMode.clear();
46+
}
47+
}
3548

3649
@NotNull
3750
public static HfpParser newInstance() {
@@ -223,11 +236,12 @@ public static Hfp.Topic parseTopic(@NotNull String topic, long receivedAtMs) thr
223236
}
224237

225238
final String strTransportMode = parts[index++];
239+
boolean transportModeIsEmpty = false;
226240
if (strTransportMode != null && !strTransportMode.isEmpty()) {
227241
final Hfp.Topic.TransportMode transportMode = safeValueOf(Hfp.Topic.TransportMode.class, strTransportMode).orElseThrow(() -> new InvalidHfpTopicException("Unknown transport mode: " + topic));
228242
builder.setTransportMode(transportMode);
229243
} else {
230-
log.info("Transport mode is empty for topic: " + topic);
244+
transportModeIsEmpty = true;
231245
}
232246

233247
final String operatorIdStr = parts[index++];
@@ -245,6 +259,9 @@ public static Hfp.Topic parseTopic(@NotNull String topic, long receivedAtMs) thr
245259
}
246260

247261
builder.setUniqueVehicleId(createUniqueVehicleId(builder.getOperatorId(), builder.getVehicleNumber()));
262+
if (transportModeIsEmpty) {
263+
foundVehicleWithEmptyTransportMode(builder.getUniqueVehicleId());
264+
}
248265
if (index + 6 <= parts.length) {
249266
HfpValidator.validateString(parts[index++]).ifPresent(builder::setRouteId);
250267
safeParseInt(parts[index++]).ifPresent(builder::setDirectionId);

0 commit comments

Comments
 (0)