This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 410dec6323 NIFI-14254 Fixed Event Time Sorting for Provenance Events
(#10809)
410dec6323 is described below
commit 410dec632303b3327b3c8ce22cca50b560cf0f2c
Author: pkelly-nifi <[email protected]>
AuthorDate: Tue Feb 3 15:07:20 2026 -0500
NIFI-14254 Fixed Event Time Sorting for Provenance Events (#10809)
- Added eventTimestamp field to ProvenanceEventDTO
Co-authored-by: David Handermann <[email protected]>
Signed-off-by: David Handermann <[email protected]>
---
.../nifi/web/api/dto/provenance/ProvenanceEventDTO.java | 16 ++++++++++++++++
.../org/apache/nifi/web/controller/ControllerFacade.java | 6 +++++-
.../provenance-event-table.component.ts | 5 ++---
.../frontend/apps/nifi/src/app/state/shared/index.ts | 1 +
4 files changed, 24 insertions(+), 4 deletions(-)
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
b/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
index 05a52524a1..071ccf01be 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/provenance/ProvenanceEventDTO.java
@@ -19,8 +19,10 @@ package org.apache.nifi.web.api.dto.provenance;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.nifi.web.api.dto.util.InstantAdapter;
import org.apache.nifi.web.api.dto.util.TimestampAdapter;
+import java.time.Instant;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@@ -36,6 +38,7 @@ public class ProvenanceEventDTO {
// in search results table
private Long eventId;
private Date eventTime;
+ private Instant eventTimestamp;
private Long eventDuration;
private Long lineageDuration;
private String eventType;
@@ -123,6 +126,19 @@ public class ProvenanceEventDTO {
this.eventTime = eventTime;
}
+ @XmlJavaTypeAdapter(InstantAdapter.class)
+ @Schema(
+ description = "Event Timestamp formatted using ISO8601",
+ type = "string"
+ )
+ public Instant getEventTimestamp() {
+ return eventTimestamp;
+ }
+
+ public void setEventTimestamp(final Instant eventTimestamp) {
+ this.eventTimestamp = eventTimestamp;
+ }
+
/**
* @return UUID of the FlowFile for this event
*/
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
index c2fbae3f27..def4295456 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/controller/ControllerFacade.java
@@ -1664,7 +1664,11 @@ public class ControllerFacade implements Authorizable {
final ProvenanceEventDTO dto = new ProvenanceEventDTO();
dto.setId(String.valueOf(event.getEventId()));
dto.setEventId(event.getEventId());
- dto.setEventTime(new Date(event.getEventTime()));
+
+ final Date eventTime = new Date(event.getEventTime());
+ dto.setEventTime(eventTime);
+ dto.setEventTimestamp(eventTime.toInstant());
+
dto.setEventType(event.getEventType().name());
dto.setFlowFileUuid(event.getFlowFileUuid());
dto.setFileSize(FormatUtils.formatDataSize(event.getFileSize()));
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/provenance/ui/provenance-event-listing/provenance-event-table/provenance-event-table.component.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/provenance/ui/provenance-event-listing/provenance-event-table/provenance-event-table.component.ts
index da2469c7d9..e2df47bb35 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/provenance/ui/provenance-event-listing/provenance-event-table/provenance-event-table.component.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/provenance/ui/provenance-event-listing/provenance-event-table/provenance-event-table.component.ts
@@ -262,9 +262,8 @@ export class ProvenanceEventTable implements AfterViewInit {
let retVal = 0;
switch (sort.active) {
case 'eventTime':
- // event ideas are increasing, so we can use this simple
number for sorting purposes
- // since we don't surface the timestamp as millis
- retVal = this.nifiCommon.compareNumber(a.eventId,
b.eventId);
+ // Compare Event Timestamp with ISO8601 formatting
+ retVal = this.nifiCommon.compareString(a.eventTimestamp,
b.eventTimestamp);
break;
case 'eventType':
retVal = this.nifiCommon.compareString(a.eventType,
b.eventType);
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/state/shared/index.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/state/shared/index.ts
index 505dbb8364..cf594c663c 100644
--- a/nifi-frontend/src/main/frontend/apps/nifi/src/app/state/shared/index.ts
+++ b/nifi-frontend/src/main/frontend/apps/nifi/src/app/state/shared/index.ts
@@ -146,6 +146,7 @@ export interface ProvenanceEventSummary {
id: string;
eventId: number;
eventTime: string;
+ eventTimestamp: string;
eventType: string;
flowFileUuid: string;
fileSize: string;