Github user justinleet commented on a diff in the pull request:
https://github.com/apache/metron/pull/1151#discussion_r208679310
--- Diff:
metron-platform/metron-pcap/src/main/java/org/apache/metron/pcap/mr/PcapJob.java
---
@@ -216,20 +218,22 @@ public void setCompleteCheckInterval(long interval) {
Configuration hadoopConf = PcapOptions.HADOOP_CONF.get(configuration,
Configuration.class);
FileSystem fileSystem = PcapOptions.FILESYSTEM.get(configuration,
FileSystem.class);
Path basePath = PcapOptions.BASE_PATH.getTransformed(configuration,
Path.class);
- Path baseInterimResultPath =
PcapOptions.BASE_INTERIM_RESULT_PATH.getTransformed(configuration, Path.class);
+ Path baseInterimResultPath = PcapOptions.BASE_INTERIM_RESULT_PATH
+ .getTransformedOrDefault(configuration, Path.class,
+ new Path(PcapGlobalDefaults.BASE_INTERIM_RESULT_PATH_DEFAULT));
long startTime;
if (configuration.containsKey(PcapOptions.START_TIME_NS.getKey())) {
- startTime = PcapOptions.START_TIME_NS.get(configuration, Long.class);
+ startTime = PcapOptions.START_TIME_NS.getOrDefault(configuration,
Long.class, 0L);
} else {
- startTime = PcapOptions.START_TIME_MS.get(configuration, Long.class)
* 1000000;
+ startTime = PcapOptions.START_TIME_MS.getOrDefault(configuration,
Long.class, 0L) * 1000000;
}
long endTime;
if (configuration.containsKey(PcapOptions.END_TIME_NS.getKey())) {
- endTime = PcapOptions.END_TIME_NS.get(configuration, Long.class);
+ endTime = PcapOptions.END_TIME_NS.getOrDefault(configuration,
Long.class, System.nanoTime());
--- End diff --
Nanotime isn't actually current time in nanos or anything objectively
meaningful (and can vary by jvm or be negative or whatever). Check out
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime()
Particularly,
> This method can only be used to measure elapsed time and is not related
to any other notion of system or wall-clock time. The value returned represents
nanoseconds since some fixed but arbitrary origin time (perhaps in the future,
so values may be negative).
I'd just make it System.currentTimeMillis() and adjust, since I don't think
there's a clean way to get a real nanos timestamp in Java (at least until 9,
maybe)
---