dependabot[bot] opened a new pull request, #9200:
URL: https://github.com/apache/storm/pull/9200

   Bumps [org.rocksdb:rocksdbjni](https://github.com/facebook/rocksdb) from 
10.10.1.1 to 11.8.1.
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/facebook/rocksdb/releases";>org.rocksdb:rocksdbjni's 
releases</a>.</em></p>
   <blockquote>
   <h2>RocksDB 11.8.1</h2>
   <h2>11.8.1 (2026-07-28)</h2>
   <h3>Public API Changes</h3>
   <ul>
   <li>Add <code>DBOptions::read_io_executor_threads</code> to increase the 
maximum thread count of the shared filesystem read I/O executor used for 
asynchronous reads when opening a DB. Opening a DB never reduces the shared 
executor thread count. Change the experimental 
<code>FSRandomAccessFile::SubmitReadAsync()</code> API to return whether the 
asynchronous path was used, and add the 
<code>FILE_SUBMIT_ASYNC_READ_FALLBACK</code> ticker to count calls that fall 
back to synchronous reads.</li>
   </ul>
   <h3>Performance Improvements</h3>
   <ul>
   <li>When <code>DBOptions::avoid_unnecessary_blocking_io</code> is true, 
obsolete <code>OPTIONS-*</code> files found during DB open are deleted by 
background purge instead of synchronously on the opening thread.</li>
   </ul>
   <h2>11.8.0 (2026-07-28)</h2>
   <h3>Public API Changes</h3>
   <ul>
   <li>Add callback-based asynchronous read APIs, <code>DB::GetAsync()</code> 
and <code>DB::MultiGetAsync()</code>. The idea is that when IO is required, 
RocksDB can suspend its internal coroutine read path, allowing the read 
executor thread to do other work. When the IO is complete, RocksDB invokes the 
user callback. This requires filesystem support for full performance benefits. 
A new filesystem API <code>FSRandomAccessFile::SubmitReadAsync()</code> is 
introduced for this. Unlike <code>ReadAsync</code>, the filesystem is 
responsible for eventually calling the callback. 
<code>FileSystem::GetReadExecutor()</code> returns the IO executor whose 
EventBases run coroutine read processing. In the Posix filesystem, an IO-uring 
based event loop is used to complete the IO.</li>
   <li>Added <code>FlushOptions::listener_wait</code> (default 
<code>false</code>). When set together with <code>FlushOptions::wait == 
true</code>, <code>DB::Flush()</code> will not return until the registered 
<code>EventListener::OnFlushCompleted</code> callbacks for the flushed 
memtables have finished running. By default (<code>false</code>), 
<code>Flush(wait=true)</code> may return as soon as the flush result is 
committed, which can be before (or while) the <code>OnFlushCompleted</code> 
callbacks execute on the background flush thread. Also added the corresponding 
C API <code>rocksdb_flushoptions_set_listener_wait()</code> / 
<code>rocksdb_flushoptions_get_listener_wait()</code>.</li>
   <li>Deprecated <code>PinnableWideColumns::serialized_size()</code> in favor 
of the new <code>PinnableWideColumns::payload_size()</code>, which returns the 
total size of the columns' names and values (for a plain value this equals the 
value size). Relatedly, wide-column read accounting changed subtly: read 
statistics for entities (<code>BYTES_READ</code>, <code>BYTES_PER_READ</code>, 
and the per-key byte counts for 
<code>GetEntity</code>/<code>MultiGetEntity</code>) and the 
<code>ReadOptions::value_size_soft_limit</code> threshold now measure entities 
by this payload size instead of the serialized entity size. This drops 
serialization framing bytes from those measurements (so reported/limited sizes 
for entity reads are slightly smaller than before) and makes plain-value and 
wide-column accounting consistent.</li>
   </ul>
   <h3>Behavior Changes</h3>
   <ul>
   <li><code>ReadOptions::value_size_soft_limit</code> now also bounds the blob 
values resolved from pre-flush blob direct write references during 
<code>MultiGet</code>/<code>MultiGetEntity</code> (previously these were 
resolved after the limit check and read without bound). Enforcement is 
&quot;always make progress&quot;: at least one key is read even if its value 
alone exceeds the limit, and only once the returned size exceeds the limit do 
subsequent keys get <code>Status::Aborted</code> -- so a caller retrying the 
aborted keys cannot loop forever on a single value that by itself exceeds the 
limit.</li>
   </ul>
   <h3>Performance Improvements</h3>
   <ul>
   <li>Reduced copying when reading wide-column entities that have 
blob-referenced columns, whether stored in separate blob files or embedded 
(same-file) as blob records in the same SST. On the point-lookup 
(<code>GetEntity</code>/<code>MultiGetEntity</code>) and blob-backed 
memtable/direct-write read paths, resolving these columns no longer 
re-serializes the whole entity into a fresh buffer: inline columns are 
referenced in place in the pinned entity and each resolved blob value is 
referenced in place from its fetched buffer. This is enabled by an internal 
change to <code>PinnableWideColumns</code> that lets its columns reference 
multiple backing buffers.</li>
   </ul>
   <h2>11.7.0 (2026-07-16)</h2>
   <h3>Public API Changes</h3>
   <ul>
   <li>Added <code>RangeLockManagerHandle::SetIsKilledCallback()</code>, a 
<code>std::function&lt;bool()&gt;</code> predicate polled during range-lock 
waits. When it returns true, a blocked <code>GetRangeLock()</code> wait returns 
promptly with <code>Status::Aborted()</code> instead of waiting for the lock 
timeout. Range-lock users that install no callback keep the original 
wait-until-grant-or-timeout behavior.</li>
   <li>Added <code>MultiScanArgs::reverse</code> to support reverse MultiScan 
reads over bounded scan ranges.</li>
   </ul>
   <h3>Behavior Changes</h3>
   <ul>
   <li>When using <code>LockWAL()</code>, live-file capture APIs such as 
checkpoint and backup now flush WAL-disabled unpersisted data; they can block 
until <code>UnlockWAL()</code> or return <code>Aborted</code> when called from 
the same thread that holds <code>LockWAL()</code> to avoid deadlock. 
<code>UnlockWAL()</code> must now also be called from the same thread that 
called <code>LockWAL()</code>.</li>
   </ul>
   <h3>Performance Improvements</h3>
   <ul>
   <li>Fixed slow DB open with <code>best_efforts_recovery</code>, and slow 
catch-up of secondary and follower (read-only) instances, in which time and 
memory grew quadratically with the number of files in the DB (so the slowdown 
was worst for large DBs with long history).</li>
   </ul>
   <h2>11.6.0 (2026-07-02)</h2>
   <h3>New Features</h3>
   <ul>
   <li>Added EXPERIMENTAL embedded blob SST support through 
<code>SstFileWriter::OpenWithEmbeddedBlobs()</code>, storing eligible large 
values as same-file blob records in block-based SST files and resolving them 
transparently for reads. This niche feature currently supports uncompressed 
embedded blobs only; compression options are placeholders and compression 
support is deferred to follow-up work.</li>
   </ul>
   <h3>Public API Changes</h3>
   <ul>
   <li>Expanded the C API (<code>include/rocksdb/c.h</code>) with a large set 
of new <code>rocksdb_*</code> functions, mostly option getters/setters plus 
table-properties, job/event-listener, and metadata accessors, a WAL filter, a 
ReadOptions table filter, and a backup exclude-files callback. Many are now 
produced by a new semi-automated generator (<code>tools/c_api_gen/</code>) from 
the C++ headers; <code>include/rocksdb/c.h</code> remains a single 
self-contained header and the signatures of pre-existing functions are 
unchanged.</li>
   </ul>
   <h3>Bug Fixes</h3>
   <ul>
   <li>Reverted PR14831 that made range_lock_manager aware of reverse-order 
CF</li>
   <li>Fixed a bug in <code>RandomAccessFileReader::ReadAsync</code> where an 
already-aligned direct-IO read request with a null <code>scratch</code> and a 
caller-provided <code>aligned_buf</code> would take the &quot;already 
aligned&quot; fast path and submit the null buffer to the underlying async read 
(e.g. a null iovec base to io_uring, failing with EFAULT). This could surface 
as spurious iterator failures during async prefetch (MultiScan with async IO) 
on direct-IO databases. The async path now allocates a backing buffer in this 
case, matching the synchronous <code>Read</code> path.</li>
   <li>Fixed a bug where closing a read-only DB instance could delete live SST 
files created by a concurrent read-write DB sharing the same directory.</li>
   </ul>
   <h2>11.5.0 (2026-06-16)</h2>
   <h3>New Features</h3>
   <ul>
   <li>External table readers that open files through 
<code>ExternalTableOptions::fs</code> now update RocksDB SST/file-read 
statistics and file IO listener callbacks, making external file IO activity 
visible in existing read metrics.</li>
   <li>Added <code>DB::PrepareFileIngestion()</code>, a two-phase form of 
<code>IngestExternalFile</code>/<code>IngestExternalFiles</code>. 
<code>PrepareFileIngestion()</code> performs all of the work that does not 
require the DB mutex (validating the arguments, reading each external file's 
metadata, and linking/copying the files into the DB) and returns an opaque 
<code>FileIngestionHandle</code>. <code>DB::CommitFileIngestionHandle()</code> 
(or <code>DB::CommitFileIngestionHandles()</code> for several handles at once) 
then makes the prepared files visible; multiple handles are committed 
atomically in a single MANIFEST write, or none are. 
<code>FileIngestionHandle::Abort()</code> (or simply destroying the handle) 
cancels a prepared ingestion and rolls it back. This gives flexibility to the 
application to Prepare a file separately from when its committed, and may 
shorten an applications critical path on <code>IngestExternalFile</code>.</li>
   <li>Added two stats histograms reporting the per-call latency (in 
microseconds) of each successful 
<code>IngestExternalFile</code>/<code>IngestExternalFiles</code> call, split by 
phase: <code>rocksdb.ingest.external.file.prepare.micros</code> (argument 
validation and reading/validating/linking the external files, which does not 
block live writes) and <code>rocksdb.ingest.external.file.run.micros</code> 
(the ingestion performed under the DB mutex while live writes are blocked). 
Failed ingestions are not recorded.</li>
   <li>Added <code>DBOptions::use_direct_io_for_compaction_reads</code> 
(default false). When enabled, compaction-input SST reads use 
<code>O_DIRECT</code> while user reads remain buffered, avoiding page-cache 
eviction of hot user-read data by sequential compaction scans. Pair with 
<code>use_direct_io_for_flush_and_compaction = true</code> on write-heavy 
workloads for direct I/O on both compaction inputs and outputs. Rejected at 
Open when combined with <code>allow_mmap_reads = true</code>. No-op when 
<code>use_direct_reads = true</code> is already set (since all reads are 
already direct).</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/meta/rocksdb/blob/v11.8.1/HISTORY.md";>org.rocksdb:rocksdbjni's
 changelog</a>.</em></p>
   <blockquote>
   <h2>11.8.1 (07/28/2026)</h2>
   <h3>Public API Changes</h3>
   <ul>
   <li>Add <code>DBOptions::read_io_executor_threads</code> to increase the 
maximum thread count of the shared filesystem read I/O executor used for 
asynchronous reads when opening a DB. Opening a DB never reduces the shared 
executor thread count. Change the experimental 
<code>FSRandomAccessFile::SubmitReadAsync()</code> API to return whether the 
asynchronous path was used, and add the 
<code>FILE_SUBMIT_ASYNC_READ_FALLBACK</code> ticker to count calls that fall 
back to synchronous reads.</li>
   </ul>
   <h3>Performance Improvements</h3>
   <ul>
   <li>When <code>DBOptions::avoid_unnecessary_blocking_io</code> is true, 
obsolete <code>OPTIONS-*</code> files found during DB open are deleted by 
background purge instead of synchronously on the opening thread.</li>
   </ul>
   <h2>11.8.0 (07/28/2026)</h2>
   <h3>Public API Changes</h3>
   <ul>
   <li>Add callback-based asynchronous read APIs, <code>DB::GetAsync()</code> 
and <code>DB::MultiGetAsync()</code>. The idea is that when IO is required, 
RocksDB can suspend its internal coroutine read path, allowing the read 
executor thread to do other work. When the IO is complete, RocksDB invokes the 
user callback. This requires filesystem support for full performance benefits. 
A new filesystem API <code>FSRandomAccessFile::SubmitReadAsync()</code> is 
introduced for this. Unlike <code>ReadAsync</code>, the filesystem is 
responsible for eventually calling the callback. 
<code>FileSystem::GetReadExecutor()</code> returns the IO executor whose 
EventBases run coroutine read processing. In the Posix filesystem, an IO-uring 
based event loop is used to complete the IO.</li>
   <li>Added <code>FlushOptions::listener_wait</code> (default 
<code>false</code>). When set together with <code>FlushOptions::wait == 
true</code>, <code>DB::Flush()</code> will not return until the registered 
<code>EventListener::OnFlushCompleted</code> callbacks for the flushed 
memtables have finished running. By default (<code>false</code>), 
<code>Flush(wait=true)</code> may return as soon as the flush result is 
committed, which can be before (or while) the <code>OnFlushCompleted</code> 
callbacks execute on the background flush thread. Also added the corresponding 
C API <code>rocksdb_flushoptions_set_listener_wait()</code> / 
<code>rocksdb_flushoptions_get_listener_wait()</code>.</li>
   <li>Deprecated <code>PinnableWideColumns::serialized_size()</code> in favor 
of the new <code>PinnableWideColumns::payload_size()</code>, which returns the 
total size of the columns' names and values (for a plain value this equals the 
value size). Relatedly, wide-column read accounting changed subtly: read 
statistics for entities (<code>BYTES_READ</code>, <code>BYTES_PER_READ</code>, 
and the per-key byte counts for 
<code>GetEntity</code>/<code>MultiGetEntity</code>) and the 
<code>ReadOptions::value_size_soft_limit</code> threshold now measure entities 
by this payload size instead of the serialized entity size. This drops 
serialization framing bytes from those measurements (so reported/limited sizes 
for entity reads are slightly smaller than before) and makes plain-value and 
wide-column accounting consistent.</li>
   </ul>
   <h3>Behavior Changes</h3>
   <ul>
   <li><code>ReadOptions::value_size_soft_limit</code> now also bounds the blob 
values resolved from pre-flush blob direct write references during 
<code>MultiGet</code>/<code>MultiGetEntity</code> (previously these were 
resolved after the limit check and read without bound). Enforcement is 
&quot;always make progress&quot;: at least one key is read even if its value 
alone exceeds the limit, and only once the returned size exceeds the limit do 
subsequent keys get <code>Status::Aborted</code> -- so a caller retrying the 
aborted keys cannot loop forever on a single value that by itself exceeds the 
limit.</li>
   </ul>
   <h3>Performance Improvements</h3>
   <ul>
   <li>Reduced copying when reading wide-column entities that have 
blob-referenced columns, whether stored in separate blob files or embedded 
(same-file) as blob records in the same SST. On the point-lookup 
(<code>GetEntity</code>/<code>MultiGetEntity</code>) and blob-backed 
memtable/direct-write read paths, resolving these columns no longer 
re-serializes the whole entity into a fresh buffer: inline columns are 
referenced in place in the pinned entity and each resolved blob value is 
referenced in place from its fetched buffer. This is enabled by an internal 
change to <code>PinnableWideColumns</code> that lets its columns reference 
multiple backing buffers.</li>
   </ul>
   <h2>11.7.0 (07/16/2026)</h2>
   <h3>Public API Changes</h3>
   <ul>
   <li>Added <code>RangeLockManagerHandle::SetIsKilledCallback()</code>, a 
<code>std::function&lt;bool()&gt;</code> predicate polled during range-lock 
waits. When it returns true, a blocked <code>GetRangeLock()</code> wait returns 
promptly with <code>Status::Aborted()</code> instead of waiting for the lock 
timeout. Range-lock users that install no callback keep the original 
wait-until-grant-or-timeout behavior.</li>
   <li>Added <code>MultiScanArgs::reverse</code> to support reverse MultiScan 
reads over bounded scan ranges.</li>
   </ul>
   <h3>Behavior Changes</h3>
   <ul>
   <li>When using <code>LockWAL()</code>, live-file capture APIs such as 
checkpoint and backup now flush WAL-disabled unpersisted data; they can block 
until <code>UnlockWAL()</code> or return <code>Aborted</code> when called from 
the same thread that holds <code>LockWAL()</code> to avoid deadlock. 
<code>UnlockWAL()</code> must now also be called from the same thread that 
called <code>LockWAL()</code>.</li>
   </ul>
   <h3>Performance Improvements</h3>
   <ul>
   <li>Fixed slow DB open with <code>best_efforts_recovery</code>, and slow 
catch-up of secondary and follower (read-only) instances, in which time and 
memory grew quadratically with the number of files in the DB (so the slowdown 
was worst for large DBs with long history).</li>
   </ul>
   <h2>11.6.0 (07/02/2026)</h2>
   <h3>New Features</h3>
   <ul>
   <li>Added EXPERIMENTAL embedded blob SST support through 
<code>SstFileWriter::OpenWithEmbeddedBlobs()</code>, storing eligible large 
values as same-file blob records in block-based SST files and resolving them 
transparently for reads. This niche feature currently supports uncompressed 
embedded blobs only; compression options are placeholders and compression 
support is deferred to follow-up work.</li>
   </ul>
   <h3>Public API Changes</h3>
   <ul>
   <li>Expanded the C API (<code>include/rocksdb/c.h</code>) with a large set 
of new <code>rocksdb_*</code> functions, mostly option getters/setters plus 
table-properties, job/event-listener, and metadata accessors, a WAL filter, a 
ReadOptions table filter, and a backup exclude-files callback. Many are now 
produced by a new semi-automated generator (<code>tools/c_api_gen/</code>) from 
the C++ headers; <code>include/rocksdb/c.h</code> remains a single 
self-contained header and the signatures of pre-existing functions are 
unchanged.</li>
   </ul>
   <h3>Bug Fixes</h3>
   <ul>
   <li>Reverted PR14831 that made range_lock_manager aware of reverse-order 
CF</li>
   <li>Fixed a bug in <code>RandomAccessFileReader::ReadAsync</code> where an 
already-aligned direct-IO read request with a null <code>scratch</code> and a 
caller-provided <code>aligned_buf</code> would take the &quot;already 
aligned&quot; fast path and submit the null buffer to the underlying async read 
(e.g. a null iovec base to io_uring, failing with EFAULT). This could surface 
as spurious iterator failures during async prefetch (MultiScan with async IO) 
on direct-IO databases. The async path now allocates a backing buffer in this 
case, matching the synchronous <code>Read</code> path.</li>
   <li>Fixed a bug where closing a read-only DB instance could delete live SST 
files created by a concurrent read-write DB sharing the same directory.</li>
   </ul>
   <h2>11.5.0 (06/16/2026)</h2>
   <h3>New Features</h3>
   <ul>
   <li>External table readers that open files through 
<code>ExternalTableOptions::fs</code> now update RocksDB SST/file-read 
statistics and file IO listener callbacks, making external file IO activity 
visible in existing read metrics.</li>
   <li>Added <code>DB::PrepareFileIngestion()</code>, a two-phase form of 
<code>IngestExternalFile</code>/<code>IngestExternalFiles</code>. 
<code>PrepareFileIngestion()</code> performs all of the work that does not 
require the DB mutex (validating the arguments, reading each external file's 
metadata, and linking/copying the files into the DB) and returns an opaque 
<code>FileIngestionHandle</code>. <code>DB::CommitFileIngestionHandle()</code> 
(or <code>DB::CommitFileIngestionHandles()</code> for several handles at once) 
then makes the prepared files visible; multiple handles are committed 
atomically in a single MANIFEST write, or none are. 
<code>FileIngestionHandle::Abort()</code> (or simply destroying the handle) 
cancels a prepared ingestion and rolls it back. This gives flexibility to the 
application to Prepare a file separately from when its committed, and may 
shorten an applications critical path on <code>IngestExternalFile</code>.</li>
   <li>Added two stats histograms reporting the per-call latency (in 
microseconds) of each successful 
<code>IngestExternalFile</code>/<code>IngestExternalFiles</code> call, split by 
phase: <code>rocksdb.ingest.external.file.prepare.micros</code> (argument 
validation and reading/validating/linking the external files, which does not 
block live writes) and <code>rocksdb.ingest.external.file.run.micros</code> 
(the ingestion performed under the DB mutex while live writes are blocked). 
Failed ingestions are not recorded.</li>
   <li>Added <code>DBOptions::use_direct_io_for_compaction_reads</code> 
(default false). When enabled, compaction-input SST reads use 
<code>O_DIRECT</code> while user reads remain buffered, avoiding page-cache 
eviction of hot user-read data by sequential compaction scans. Pair with 
<code>use_direct_io_for_flush_and_compaction = true</code> on write-heavy 
workloads for direct I/O on both compaction inputs and outputs. Rejected at 
Open when combined with <code>allow_mmap_reads = true</code>. No-op when 
<code>use_direct_reads = true</code> is already set (since all reads are 
already direct).</li>
   </ul>
   <h3>Public API Changes</h3>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li>See full diff in <a 
href="https://github.com/facebook/rocksdb/commits/v11.8.1";>compare view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.rocksdb:rocksdbjni&package-manager=maven&previous-version=10.10.1.1&new-version=11.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   Dependabot will resolve any conflicts with this PR as long as you don't 
alter it yourself. You can also trigger a rebase manually by commenting 
`@dependabot rebase`.
   
   [//]: # (dependabot-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   <details>
   <summary>Dependabot commands and options</summary>
   <br />
   
   You can trigger Dependabot actions by commenting on this PR:
   - `@dependabot rebase` will rebase this PR
   - `@dependabot recreate` will recreate this PR, overwriting any edits that 
have been made to it
   - `@dependabot show <dependency name> ignore conditions` will show all of 
the ignore conditions of the specified dependency
   - `@dependabot ignore this major version` will close this PR and stop 
Dependabot creating any more for this major version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this minor version` will close this PR and stop 
Dependabot creating any more for this minor version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this dependency` will close this PR and stop 
Dependabot creating any more for this dependency (unless you reopen the PR or 
upgrade to it yourself)
   
   
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to