This is an automated email from the ASF dual-hosted git repository.
joewitt 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 98f55b21b8 NIFI-13532 Fixed Flow Configuration History Sorting when
Filtered This closes #9179
98f55b21b8 is described below
commit 98f55b21b8ab01dda0f478a87f18b8e56cab5864
Author: exceptionfactory <[email protected]>
AuthorDate: Wed Aug 14 21:03:42 2024 -0500
NIFI-13532 Fixed Flow Configuration History Sorting when Filtered
This closes #9179
Signed-off-by: Joseph Witt <[email protected]>
---
.../admin/service/EntityStoreAuditService.java | 9 ++---
.../admin/service/EntityStoreAuditServiceTest.java | 44 +++++++++++++++++++++-
2 files changed, 46 insertions(+), 7 deletions(-)
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
b/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
index 097f099d65..1152ddc40a 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-administration/src/main/java/org/apache/nifi/admin/service/EntityStoreAuditService.java
@@ -336,10 +336,7 @@ public class EntityStoreAuditService implements
AuditService, Closeable {
endTimestamp = endDate.getTime();
}
- final ActionEntity sortEntityProperty =
getSortEntityProperty(actionQuery);
- final boolean ascending = isAscending(actionQuery);
- final EntityIterable sorted =
storeTransaction.sort(EntityType.ACTION.getEntityType(),
sortEntityProperty.getProperty(), ascending);
- final EntityIterable entities =
sorted.intersect(storeTransaction.find(EntityType.ACTION.getEntityType(),
ActionEntity.TIMESTAMP.getProperty(), startTimestamp, endTimestamp));
+ final EntityIterable entities =
storeTransaction.find(EntityType.ACTION.getEntityType(),
ActionEntity.TIMESTAMP.getProperty(), startTimestamp, endTimestamp);
final EntityIterable sourceEntities;
final String sourceId = actionQuery.getSourceId();
@@ -359,7 +356,9 @@ public class EntityStoreAuditService implements
AuditService, Closeable {
filteredEntities = sourceEntities.intersect(identityFiltered);
}
- return filteredEntities;
+ final ActionEntity sortEntityProperty =
getSortEntityProperty(actionQuery);
+ final boolean ascending = isAscending(actionQuery);
+ return storeTransaction.sort(EntityType.ACTION.getEntityType(),
sortEntityProperty.getProperty(), filteredEntities, ascending);
}
private boolean isAscending(final HistoryQuery historyQuery) {
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
b/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
index 62492b9f34..203271e090 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-administration/src/test/java/org/apache/nifi/admin/service/EntityStoreAuditServiceTest.java
@@ -63,6 +63,8 @@ class EntityStoreAuditServiceTest {
private static final Date SECOND_ACTION_TIMESTAMP = new Date(97500);
+ private static final Date THIRD_ACTION_TIMESTAMP = new Date(172800);
+
private static final Date PURGE_END_DATE = new Date(43200);
private static final String USER_IDENTITY = "admin";
@@ -99,6 +101,8 @@ class EntityStoreAuditServiceTest {
private static final String DATABASE_FILE_EXTENSION = ".xd";
+ private static final String SORT_ASCENDING = "ASC";
+
@TempDir
File directory;
@@ -248,6 +252,42 @@ class EntityStoreAuditServiceTest {
assertFalse(actionsFiltered.hasNext());
}
+ @Test
+ void testAddActionsGetActionsQueryTimestampSortedSourceIdFiltered() {
+ final FlowChangeAction firstAction = newAction();
+ final FlowChangeAction secondAction = newAction();
+ secondAction.setTimestamp(SECOND_ACTION_TIMESTAMP);
+ final FlowChangeAction thirdAction = newAction();
+ thirdAction.setTimestamp(THIRD_ACTION_TIMESTAMP);
+ final Collection<Action> actions = Arrays.asList(firstAction,
secondAction, thirdAction);
+
+ service.addActions(actions);
+
+ final HistoryQuery historyQuery = new HistoryQuery();
+ historyQuery.setSourceId(SOURCE_ID);
+ historyQuery.setSortOrder(SORT_ASCENDING);
+ final History actionsHistory = service.getActions(historyQuery);
+
+ assertNotNull(actionsHistory);
+ assertEquals(actionsHistory.getTotal(), actions.size());
+ assertNotNull(actionsHistory.getLastRefreshed());
+
+ final Collection<Action> actionsFound = actionsHistory.getActions();
+ assertNotNull(actionsFound);
+
+ final Iterator<Action> actionsFiltered = actionsFound.iterator();
+ assertTrue(actionsFiltered.hasNext());
+
+ final Action firstActionFound = actionsFiltered.next();
+ assertEquals(ACTION_TIMESTAMP, firstActionFound.getTimestamp());
+
+ final Action secondActionFound = actionsFiltered.next();
+ assertEquals(SECOND_ACTION_TIMESTAMP,
secondActionFound.getTimestamp());
+
+ final Action thirdActionFound = actionsFiltered.next();
+ assertEquals(THIRD_ACTION_TIMESTAMP, thirdActionFound.getTimestamp());
+ }
+
@Test
void testAddActionsPurgeActionsGetAction() {
final Action action = newAction();
@@ -349,7 +389,7 @@ class EntityStoreAuditServiceTest {
final List<PreviousValue> firstPreviousValues =
previousValues.get(FIRST_PROPERTY_NAME);
assertNotNull(firstPreviousValues);
- final PreviousValue firstPreviousValue = firstPreviousValues.get(0);
+ final PreviousValue firstPreviousValue =
firstPreviousValues.getFirst();
assertNotNull(firstPreviousValue);
assertEquals(FIRST_VALUE, firstPreviousValue.getPreviousValue());
assertNotNull(firstPreviousValue.getTimestamp());
@@ -358,7 +398,7 @@ class EntityStoreAuditServiceTest {
final List<PreviousValue> secondPreviousValues =
previousValues.get(SECOND_PROPERTY_NAME);
assertNotNull(secondPreviousValues);
- final PreviousValue thirdPreviousValue = secondPreviousValues.get(0);
+ final PreviousValue thirdPreviousValue =
secondPreviousValues.getFirst();
assertNotNull(thirdPreviousValue);
assertEquals(THIRD_VALUE, thirdPreviousValue.getPreviousValue());
assertNotNull(thirdPreviousValue.getTimestamp());