private Long getFirstEntryTime(final File provenanceLogFile) { if (provenanceLogFile == null) { return null; } try (final RecordReader reader = RecordReaders.newRecordReader(provenanceLogFile, null, Integer.MAX_VALUE)) { final StandardProvenanceEventRecord firstRecord = reader.nextRecord(); if (firstRecord == null) { return provenanceLogFile.lastModified(); } return firstRecord.getEventTime(); } catch (final FileNotFoundException | EOFException fnf) { return null; // file no longer exists or there's no record in this file } catch (final IOException ioe) { logger.warn("Failed to read first entry in file {} due to {}", provenanceLogFile, ioe.toString()); logger.warn("", ioe); return null; } }
private long determineFirstEventTimestamp() { // Get the timestamp of the first event in the first Provenance Event Log File and the ID of the last event // in the event file. final List<File> logFiles = getSortedLogFiles(); if (logFiles.isEmpty()) { return 0L; } for (final File logFile : logFiles) { try (final RecordReader reader = RecordReaders.newRecordReader(logFile, null, Integer.MAX_VALUE)) { final StandardProvenanceEventRecord event = reader.nextRecord(); if (event != null) { return event.getEventTime(); } } catch (final IOException ioe) { logger.warn("Failed to obtain timestamp of first event from Provenance Event Log File {}", logFile); } } return 0L; }
/** * Returns a unique identifier for the record. By default, it uses * {@link ProvenanceEventRecord#getEventId()} but if it has not been persisted to the * repository, this is {@code -1}, so it constructs a String of the format * {@code <event type>_on_<flowfile UUID>_by_<component UUID>_at_<event time>}. * * @return a String identifying the record for later analysis */ @Override public String getBestEventIdentifier() { if (getEventId() != -1) { return Long.toString(getEventId()); } else { return getEventType().name() + "_on_" + getFlowFileUuid() + "_by_" + getComponentId() + "_at_" + getEventTime(); } }
try (final RecordReader reader = RecordReaders.newRecordReader(firstLogFile, null, Integer.MAX_VALUE)) { final StandardProvenanceEventRecord event = reader.nextRecord(); earliestEventTime = event.getEventTime(); maxEventId = reader.getMaxEventId(); } catch (final IOException ioe) {
return !(eventType == ProvenanceEventType.REPLAY && eventTime != other.getEventTime());
if (record.getEventTime() < earliestTimestamp) { earliestTimestamp = record.getEventTime();
doc.add(new LongField(SearchableFields.EventTime.getSearchableFieldName(), record.getEventTime(), Store.NO)); doc.add(new LongField(SearchableFields.FileSize.getSearchableFieldName(), record.getFileSize(), Store.NO)); doc.add(new StringField(FieldNames.STORAGE_FILENAME, storageFilename, Store.YES));
private long determineFirstEventTimestamp() { // Get the timestamp of the first event in the first Provenance Event Log File and the ID of the last event // in the event file. final List<File> logFiles = getSortedLogFiles(); if (logFiles.isEmpty()) { return 0L; } for (final File logFile : logFiles) { try (final RecordReader reader = RecordReaders.newRecordReader(logFile, null, Integer.MAX_VALUE)) { final StandardProvenanceEventRecord event = reader.nextRecord(); if (event != null) { return event.getEventTime(); } } catch (final IOException ioe) { logger.warn("Failed to obtain timestamp of first event from Provenance Event Log File {}", logFile); } } return 0L; }
/** * Returns a unique identifier for the record. By default, it uses * {@link ProvenanceEventRecord#getEventId()} but if it has not been persisted to the * repository, this is {@code -1}, so it constructs a String of the format * {@code <event type>_on_<flowfile UUID>_by_<component UUID>_at_<event time>}. * * @return a String identifying the record for later analysis */ @Override public String getBestEventIdentifier() { if (getEventId() != -1) { return Long.toString(getEventId()); } else { return getEventType().name() + "_on_" + getFlowFileUuid() + "_by_" + getComponentId() + "_at_" + getEventTime(); } }
return !(eventType == ProvenanceEventType.REPLAY && eventTime != other.getEventTime());
try (final RecordReader reader = RecordReaders.newRecordReader(firstLogFile, null, Integer.MAX_VALUE)) { final StandardProvenanceEventRecord event = reader.nextRecord(); earliestEventTime = event.getEventTime(); maxEventId = reader.getMaxEventId(); } catch (final IOException ioe) {
if (record.getEventTime() < earliestTimestamp) { earliestTimestamp = record.getEventTime();