Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.

- zookeeper: Add 3.9.6 ([#1662]).
- airflow, superset, druid, nifi: Add SBOMs for the frontend (npm) dependencies ([#1600]).
- nifi: Backport NIFI-15958 to log periodic progress while waiting for the content archive scan and provenance re-index, for `2.6.0`, `2.7.2`, and `2.9.0` ([#1611]).
- nifi: Backport [NIFI-15958](https://issues.apache.org/jira/browse/NIFI-15958) to log progress during the content archive scan and provenance re-index ([#1611] and [#1727]).
- hbase: Add an SBOM for the web UI (npm) dependencies, which are unpacked from webjars and therefore not covered by the CycloneDX Maven plugin ([#1620]).
- trino: Add SBOMs for the web UI, both for the two npm projects behind it and for the pre-built JavaScript vendored into the source tree ([#1620]).
- hive: Restore the `get_table` and `get_table_objects_by_name` Thrift methods that HIVE-26537 removed in Hive 4.0.1, for `4.2.0` ([#1636]).
Expand Down Expand Up @@ -187,6 +187,7 @@ All notable changes to this project will be documented in this file.
[#1721]: https://github.com/stackabletech/docker-images/pull/1721
[#1723]: https://github.com/stackabletech/docker-images/pull/1723
[#1725]: https://github.com/stackabletech/docker-images/pull/1725
[#1727]: https://github.com/stackabletech/docker-images/pull/1727

## [26.7.0] - 2026-07-21

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
From fed2334144a3f2e7a3114ee67061ab6d9c1d18d1 Mon Sep 17 00:00:00 2001
From: exceptionfactory <exceptionfactory@apache.org>
Date: Fri, 11 Sep 2026 11:09:10 -0500
Subject: NIFI-15958 Added progress logging for repository scanning

---
.../provenance/store/WriteAheadStorePartition.java | 10 ++++++++++
.../repository/FileSystemRepository.java | 14 ++++++++++++--
2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/store/WriteAheadStorePartition.java b/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/store/WriteAheadStorePartition.java
index 688ba9da577bf3e2f2779afa35551f4f56e3a81b..5aeff416a9cad646887833270ecf434742909e08 100644
--- a/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/store/WriteAheadStorePartition.java
+++ b/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/store/WriteAheadStorePartition.java
@@ -59,6 +59,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@@ -66,6 +67,7 @@ import java.util.stream.Stream;

public class WriteAheadStorePartition implements EventStorePartition {
private static final Logger logger = LoggerFactory.getLogger(WriteAheadStorePartition.class);
+ private static final int REINDEX_FILE_PROGRESS_LOG_INTERVAL = 25;

private final RepositoryConfiguration config;
private final File partitionDirectory;
@@ -611,6 +613,8 @@ public class WriteAheadStorePartition implements EventStorePartition {
final ExecutorService executor = Executors.newFixedThreadPool(Math.min(4, eventFilesToReindex.size()), new NamedThreadFactory("Re-Index Provenance Events", true));
final List<Future<?>> futures = new ArrayList<>(eventFilesToReindex.size());
final AtomicLong reindexedCount = new AtomicLong(0L);
+ final AtomicInteger filesReindexed = new AtomicInteger(0);
+ final int totalFilesToReindex = eventFilesToReindex.size();

// Re-Index the last bunch of events.
// We don't use an Event Iterator here because it's possible that one of the event files could be corrupt (for example, if NiFi does while
@@ -659,6 +663,12 @@ public class WriteAheadStorePartition implements EventStorePartition {
logger.warn("Failed to find event with ID {} in Event File {}", minEventIdToReindex, eventFile, eof);
} catch (final Exception e) {
logger.error("Failed to index Provenance Events found in {}", eventFile, e);
+ } finally {
+ final int filesCompleted = filesReindexed.incrementAndGet();
+ if (filesCompleted == 1 || filesCompleted == totalFilesToReindex || filesCompleted % REINDEX_FILE_PROGRESS_LOG_INTERVAL == 0) {
+ logger.info("Re-indexed {} of {} Files for Partition [{}] including {} Events",
+ filesCompleted, totalFilesToReindex, partitionName, reindexedCount.get());
+ }
}
};

diff --git a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
index ddcb048da27251a94ca7968336435fe9ff93564a..7a9fc1eda6f07cb3849c6091f188b380234bfadb 100644
--- a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
+++ b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/FileSystemRepository.java
@@ -89,6 +89,7 @@ public class FileSystemRepository implements ContentRepository {
public static final long MIN_CLEANUP_INTERVAL_MILLIS = TimeUnit.SECONDS.toMillis(1L);
public static final long DEFAULT_CLEANUP_INTERVAL_MILLIS = TimeUnit.MINUTES.toMillis(1L);
public static final String ARCHIVE_DIR_NAME = "archive";
+ private static final int ARCHIVE_SCAN_SECTION_LOG_INTERVAL = 256;
// 100 MB cap for the configurable NiFiProperties.MAX_APPENDABLE_CLAIM_SIZE property to prevent
// unnecessarily large resource claim files
public static final String APPENDABLE_CLAIM_LENGTH_CAP = "100 MB";
@@ -326,7 +327,7 @@ public class FileSystemRepository implements ContentRepository {

// If the path didn't exist to begin with, there's no archive directory, so don't bother scanning.
if (pathExists) {
- futures.add(executor.submit(() -> scanArchiveDirectories(realPath.toFile(), containerState)));
+ futures.add(executor.submit(() -> scanArchiveDirectories(containerName, realPath.toFile(), containerState)));
}
}

@@ -349,7 +350,8 @@ public class FileSystemRepository implements ContentRepository {
containers.putAll(realPathMap);
}

- private void scanArchiveDirectories(final File containerDir, final ContainerState containerState) {
+ private void scanArchiveDirectories(final String containerName, final File containerDir, final ContainerState containerState) {
+ long archivedFilesFound = 0L;
for (int i = 0; i < SECTIONS_PER_CONTAINER; i++) {
final File sectionDir = new File(containerDir, String.valueOf(i));
final File archiveDir = new File(sectionDir, ARCHIVE_DIR_NAME);
@@ -363,7 +365,15 @@ public class FileSystemRepository implements ContentRepository {
}

containerState.incrementArchiveCount(filenames.length);
+ archivedFilesFound += filenames.length;
+
+ final int sectionsScanned = i + 1;
+ if (sectionsScanned % ARCHIVE_SCAN_SECTION_LOG_INTERVAL == 0 && sectionsScanned < SECTIONS_PER_CONTAINER) {
+ LOG.info("Scanned {} Sections for [{}] found {} Archived Files", sectionsScanned, containerName, archivedFilesFound);
+ }
}
+
+ LOG.info("Finished scanning {} Sections for [{}] found {} Archived Files", SECTIONS_PER_CONTAINER, containerName, archivedFilesFound);
}

// Visible for testing

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From c8d8dbf331280344b8beac46e00c1c26dd6ba0c9 Mon Sep 17 00:00:00 2001
From a29d0205697f62f2426979fda1a5b8407b414a8a Mon Sep 17 00:00:00 2001
From: David Handermann <exceptionfactory@apache.org>
Date: Tue, 22 Sep 2026 04:10:27 -0500
Subject: NIFI-16369 Removed custom Iceberg REST Client to fix OAuth 2
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From c0c336f0bb4f460487d1183629d31a4c281ecfbb Mon Sep 17 00:00:00 2001
From 40f64728560fae1b6c6337e453dae05f40f7f889 Mon Sep 17 00:00:00 2001
From: Fabian Grosch <grosch.fabian@outlook.de>
Date: Tue, 6 Oct 2026 17:33:25 +0200
Subject: NIFI-16431 Allow HashiCorp Vault Parameter Provider to list secrets
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From 4ad1abb2b2827d8a54f85413bba9aa0d2b5da727 Mon Sep 17 00:00:00 2001
From 4601c5c63cc15cc2a6d94cf576a7fb5eab7b158e Mon Sep 17 00:00:00 2001
From: Nick Larsen <nick.larsen@stackable.tech>
Date: Thu, 15 Oct 2026 13:36:40 +0200
Subject: Remove Develocity Maven extension
Expand All @@ -19,7 +19,7 @@ instead of bumping it.

diff --git a/.mvn/develocity.xml b/.mvn/develocity.xml
deleted file mode 100644
index f320f96953..0000000000
index f320f96953a712dbd490b57906d014a90b320530..0000000000000000000000000000000000000000
--- a/.mvn/develocity.xml
+++ /dev/null
@@ -1,47 +0,0 @@
Expand Down Expand Up @@ -72,7 +72,7 @@ index f320f96953..0000000000
-</develocity>
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
deleted file mode 100644
index 3eddf27e9f..0000000000
index 3eddf27e9f83028669ab4d4c6383c1a8c263b6dc..0000000000000000000000000000000000000000
--- a/.mvn/extensions.xml
+++ /dev/null
@@ -1,34 +0,0 @@
Expand Down
Loading
Loading