Author: tallison
Date: Tue Aug 25 17:56:20 2026
New Revision: 1937441

Log:
TIKA-4835 -- docs: performance page for 4.0.x (cause of the 4.0.0 batch 
slowdown, 4.1.0 fix, worked configuration); republish SNAPSHOT line

Modified:
   tika/site/publish/docs/4.0.x/index.html
   tika/site/publish/docs/4.0.x/pipes/performance.html
   tika/site/publish/docs/4.1.0-SNAPSHOT/index.html
   tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/fetchers.html
   tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/plugins/kafka.html
   tika/site/publish/docs/4.1.0-SNAPSHOT/using-tika/server/index.html
   tika/site/publish/docs/sitemap.xml

Modified: tika/site/publish/docs/4.0.x/index.html
==============================================================================
--- tika/site/publish/docs/4.0.x/index.html     Tue Aug 25 16:35:00 2026        
(r1937440)
+++ tika/site/publish/docs/4.0.x/index.html     Tue Aug 25 17:56:20 2026        
(r1937441)
@@ -458,7 +458,7 @@ you have to update.</p>
 <p>Apache Tika is an Apache Software Foundation project, formerly a subproject 
of Apache Lucene.</p>
 </div>
 <div class="paragraph">
-<p><span class="small">Built from commit: <code>81f2eb01d6 
(2026-08-21)</code></span></p>
+<p><span class="small">Built from commit: <code>eaecd350ac 
(2026-08-25)</code></span></p>
 </div>
 </div>
 </div>

Modified: tika/site/publish/docs/4.0.x/pipes/performance.html
==============================================================================
--- tika/site/publish/docs/4.0.x/pipes/performance.html Tue Aug 25 16:35:00 
2026        (r1937440)
+++ tika/site/publish/docs/4.0.x/pipes/performance.html Tue Aug 25 17:56:20 
2026        (r1937441)
@@ -393,13 +393,24 @@
 <div id="toctitle">Table of Contents</div>
 <ul class="sectlevel1">
 <li><a href="#_deployment_shapes">Deployment shapes</a></li>
-<li><a href="#_throughput">Throughput</a></li>
-<li><a href="#endpoint-choice">Endpoint choice: uploading bytes vs 
fetch-and-emit</a></li>
+<li><a href="#_throughput_4_0_0_measurements">Throughput (4.0.0 
measurements)</a></li>
+<li><a href="#endpoint-choice">Endpoint choice: uploading bytes vs 
fetch-and-emit (4.0.0 measurements)</a></li>
 <li><a href="#_latency">Latency</a></li>
 <li><a href="#_memory">Memory</a></li>
 <li><a href="#_isolation_and_recovery">Isolation and recovery</a></li>
 <li><a href="#_choosing_a_shape">Choosing a shape</a></li>
-<li><a href="#_benchmarking_your_own_workload">Benchmarking your own 
workload</a></li>
+<li><a href="#found-in-400">What we found in 4.0.0, and what 4.1.0 changes</a>
+<ul class="sectlevel2">
+<li><a href="#_the_cause_temp_file_volume">The cause: temp-file volume</a></li>
+<li><a href="#_what_it_was_not">What it was <strong>not</strong></a></li>
+<li><a href="#_the_fix_4_1_0_unreleased_at_the_time_of_writing">The fix 
(4.1.0, unreleased at the time of writing)</a></li>
+</ul>
+</li>
+<li><a href="#corpora-case-study">A worked configuration: the regression-test 
box</a>
+<ul class="sectlevel2">
+<li><a href="#_reading_your_own_deployment">Reading your own 
deployment</a></li>
+</ul>
+</li>
 <li><a href="#_appendix_approaches_considered_and_set_aside">Appendix: 
approaches considered and set aside</a></li>
 </ul>
 </div>
@@ -422,13 +433,14 @@ for it.</p>
 </td>
 <td class="content">
 <div class="paragraph">
-<p>Closing the throughput gap of the default isolated mode — 
<strong>without</strong> giving up the
-crash/OOM isolation it provides — is an area of active work. Treat the figures 
on
-this page as a snapshot of the 4.0.0 release, not a fixed ceiling: expect the
-isolated-mode gap to narrow in future releases. Note also that this gap is
-specific to the <strong>upload</strong> endpoints on small documents — for 
file-system inputs
-and outputs the fetch/emit endpoints already match or beat 3.x while staying
-fully isolated (see <a href="#endpoint-choice">Endpoint choice: uploading 
bytes vs fetch-and-emit</a>).</p>
+<p>The tables in the first half of this page were measured on the <strong>4.0.0
+release</strong> and are kept as that snapshot. After 4.0.0 shipped we traced 
the
+batch slowdown against 3.x to a specific cause — temp-file volume, not the
+pipes architecture — and fixed it for <strong>4.1.0</strong>. The findings, 
the fix, and a
+worked configuration from the box where it was diagnosed are in
+<a href="#found-in-400">What we found in 4.0.0, and what 4.1.0 changes</a> and 
<a href="#corpora-case-study">A worked configuration: the regression-test 
box</a>. The upload-endpoint gap on tiny
+documents (<a href="#endpoint-choice">Endpoint choice: uploading bytes vs 
fetch-and-emit (4.0.0 measurements)</a>) is a separate, smaller effect and still
+applies.</p>
 </div>
 </td>
 </tr>
@@ -489,7 +501,7 @@ it on failure. The practical 4.x default
 </div>
 </div>
 <div class="sect1">
-<h2 id="_throughput"><a class="anchor" href="#_throughput"></a>Throughput</h2>
+<h2 id="_throughput_4_0_0_measurements"><a class="anchor" 
href="#_throughput_4_0_0_measurements"></a>Throughput (4.0.0 measurements)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The pipes per-request overhead — temp-spool of large payloads, socket IPC, 
and
@@ -559,7 +571,7 @@ smaller, independently-warming worker he
 </div>
 </div>
 <div class="sect1">
-<h2 id="endpoint-choice"><a class="anchor" 
href="#endpoint-choice"></a>Endpoint choice: uploading bytes vs 
fetch-and-emit</h2>
+<h2 id="endpoint-choice"><a class="anchor" 
href="#endpoint-choice"></a>Endpoint choice: uploading bytes vs fetch-and-emit 
(4.0.0 measurements)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>How a document reaches the parser matters as much as the parsing mode. The
@@ -777,32 +789,211 @@ limits with <a href="timeouts.html" clas
 </div>
 </div>
 <div class="sect1">
-<h2 id="_benchmarking_your_own_workload"><a class="anchor" 
href="#_benchmarking_your_own_workload"></a>Benchmarking your own workload</h2>
+<h2 id="found-in-400"><a class="anchor" href="#found-in-400"></a>What we found 
in 4.0.0, and what 4.1.0 changes</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Our own regression testing runs <code>tika-app</code> in batch mode over a 
1.2-million-file
+corpus (file system in, file system out) on a box with spinning disks. That run
+took about 4 hours on Tika 3.x and about 7.5 hours on 4.0.0. The investigation
+that followed is worth summarizing, because the cause was not where the
+architecture suggested it would be.</p>
+</div>
+<div class="sect2">
+<h3 id="_the_cause_temp_file_volume"><a class="anchor" 
href="#_the_cause_temp_file_volume"></a>The cause: temp-file volume</h3>
+<div class="paragraph">
+<p>4.0.0 wrote <strong>8–30 times more temp bytes</strong> than 3.x for the 
same documents:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Digesting an embedded document (MD5/SHA-256 per embedded object) buffered a
+rewindable copy of it that spilled to a temp file past 1 MB — one file per
+embedded object, hundreds of thousands of them over a large corpus.</p>
+</li>
+<li>
+<p>Several parsers and detectors asked for a <code>java.io.File</code> even 
when the
+document was already in memory: the JPEG/TIFF/WebP metadata extractors, the
+OLE2 container detector, the OpenDocument parser&#8217;s inline pictures, the
+digest of translated embedded streams, and the PDF incremental-update scan
+each wrote the bytes out just to read them back.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>On a spinning-disk host where the temp directory, the corpus, and the 
outputs
+share spindles, every temp byte is a seek taken away from a corpus read or an
+extract write. Wall clock tracked temp volume almost linearly.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_what_it_was_not"><a class="anchor" href="#_what_it_was_not"></a>What 
it was <strong>not</strong></h3>
+<div class="paragraph">
+<p>Each of these was measured and ruled out, so they need not be re-chased:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Pipes IPC and result passback — about 1% of worker time.</p>
+</li>
+<li>
+<p>The driver&#8217;s emit path — with the default <code>DYNAMIC</code> 
strategy the workers
+already write nearly all extract bytes themselves; more emitter threads made
+no difference.</p>
+</li>
+<li>
+<p>Reading each container twice for the digest pre-pass — the second read is
+served from the page cache; disk reads were equal to or lower than 
3.x&#8217;s.</p>
+</li>
+<li>
+<p>The parsers — on identical embedded objects most 4.x parsers are as fast or
+faster; the JPEG parser is 4x faster in isolation.</p>
+</li>
+<li>
+<p>4.x extracting more embedded objects (it does, about 3% more) — negligible
+cost.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_the_fix_4_1_0_unreleased_at_the_time_of_writing"><a class="anchor" 
href="#_the_fix_4_1_0_unreleased_at_the_time_of_writing"></a>The fix (4.1.0, 
unreleased at the time of writing)</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>TIKA-4828/TIKA-4829: embedded zip entries are re-read from the archive on
+rewind instead of being copied, and a process-wide 
<code>CacheMemoryBudget</code>
+(seeded by the forked worker, tunable via
+<code>-Dtika.pipes.cacheMemoryBudgetBytes</code> in 
<code>forkedJvmArgs</code>, <code>&#8656;0</code> disables)
+governs how much rewindable content stays in memory.</p>
+</li>
+<li>
+<p>TIKA-4835: the parsers and detectors above no longer spool in-memory input
+to disk; they rewind or read through a seekable channel, within the same
+budget, and fall back to a file only past it.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Measured on the diagnosis box (20,000 randomly sampled files of the corpus,
+page cache evicted before each run, extracts written to the corpus disk):</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 60%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Build and configuration</th>
+<th class="tableblock halign-left valign-top">Temp written</th>
+<th class="tableblock halign-left valign-top">Wall</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Tika 3.x, 
10 consumer threads (three runs)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0.33 
GB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">245 / 287 
/ 328 s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0, 
per-client, 8 workers (the 7.5 h shape)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10.5 
GB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">500 
s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4.1.0 with 
TIKA-4828/29 only, corrected config</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2.8 
GB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">341 
s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4.1.0, 
shared server, 10 threads</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0.26 
GB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">277 
s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4.1.0, 
per-client, 7 workers</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.1 
GB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">287 
s</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>4.1.0 writes less temp than 3.x did, and matches or beats 3.x throughput 
while
+keeping process isolation. These are subset measurements on one host; we have
+not re-timed the full run, and remote emitters (Solr, OpenSearch, S3) were not
+measured.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="corpora-case-study"><a class="anchor" href="#corpora-case-study"></a>A 
worked configuration: the regression-test box</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>The numbers above are illustrative. Throughput depends on your document mix,
-document sizes, requested output format, concurrency, host CPU/heap, and disk
-speed (large payloads spool to a temp directory). Measure with 
<strong>your</strong> corpus:</p>
+<p>The diagnosis box is an 8-core/16-thread Ryzen with 62 GB of RAM and two
+spinning disks in RAID1, holding the temp directory, the 4 TB corpus, and the
+outputs on the same pair of spindles. The corpus is far larger than RAM, so
+every run is effectively cold-cache. The configuration we settled on:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>Fix concurrency equal to the worker count so the comparison is apples to
-apples.</p>
+<p><strong>Per-client mode, <code>numClients = 7</code>.</strong> Tika 
auto-injects
+<code>-XX:ActiveProcessorCount</code> per fork as <code>(cores − 2) / 
numClients</code> but only
+when that slice is at least 2. On 16 logical cores, 8 workers give 1.75 and
+the cap is <strong>skipped</strong> — eight JVMs each sizing GC and JIT for 16 
cores, which
+is what the 7.5 h run did. Seven workers get 2 cores each and the cap
+applies. Per-client cost about 4% versus shared-server here (287 s vs 277 s)
+and dropped no files, where the shared worker loses the in-flight documents
+of every other client when one document crashes it.</p>
+</li>
+<li>
+<p><strong><code>-Xmx4g</code> per fork.</strong> The cache budget clamps to a 
quarter of the fork heap,
+so this gives each worker 1 GB of in-memory rewind space; seven of them
+leave about 30 GB for the page cache, which matters more than heap on a
+cold-cache corpus. Archive-heavy corpora do better with <code>-Xmx6g</code> 
(1.5 GB
+budget) — the tar/gz subset only reached parity with the budget raised.</p>
+</li>
+<li>
+<p>Digest MD5 (SHA-256 measured within noise), default emit strategy, temp
+directory left on disk.</p>
 </li>
+</ul>
+</div>
+<div class="sect2">
+<h3 id="_reading_your_own_deployment"><a class="anchor" 
href="#_reading_your_own_deployment"></a>Reading your own deployment</h3>
+<div class="paragraph">
+<p>Three questions decided the result above, and they are cheap to answer for 
any
+box:</p>
+</div>
+<div class="ulist">
+<ul>
 <li>
-<p>Exclude a warm-up phase — forked workers pay a one-time fork + JIT cost on
-their first requests.</p>
+<p><strong>Do temp, corpus, and outputs share spindles?</strong> 
<code>/proc/mdstat</code>,
+<code>lsblk</code>, or your cloud volume layout will say. If they do, temp 
volume is
+wall clock; if temp is on separate fast storage, the 4.0.0 regression may
+never have shown.</p>
 </li>
 <li>
-<p>Hold the output format constant across the versions or modes you 
compare.</p>
+<p><strong>Is the corpus larger than RAM?</strong> If so, benchmark cold — 
evict the page
+cache (or use a subset you have not touched) and write outputs to the real
+destination. Warm-cache runs with outputs on tmpfs hid this entire problem
+from us for weeks.</p>
 </li>
 <li>
-<p>Watch peak RSS across the whole process tree (front-end plus workers), not
-just one process.</p>
+<p><strong>Does your <code>numClients</code> trip the cap skip?</strong> Check 
the startup log for the
+<code>ActiveProcessorCount</code> decision; if it reports 
<code>skipped</code>, lower
+<code>numClients</code> or set the cap yourself in 
<code>forkedJvmArgs</code>.</p>
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>Beyond those: fix concurrency equal to the worker count when comparing, 
exclude
+a warm-up phase, hold the output format constant, and watch peak RSS across the
+whole process tree rather than one JVM.</p>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
@@ -834,14 +1025,29 @@ is doing its job.</p>
 <p><strong>Swapping the garbage collector.</strong> ParallelGC helped tiny 
documents marginally
 and hurt larger ones — no reliable win over the default across a mixed 
corpus.</p>
 </li>
+<li>
+<p><strong>Driver-side emitter parallelism (<code>numEmitters</code>) and 
worker-direct emit
+(<code>EMIT_ALL</code>) for file-system output.</strong> Neither moved the 
batch numbers: under
+the default <code>DYNAMIC</code> strategy the workers already write nearly all 
extract
+bytes directly.</p>
+</li>
+<li>
+<p><strong>A RAM-disk temp directory.</strong> It does recover the 4.0.0 batch 
loss, and it is
+a useful <strong>diagnostic</strong> (if moving temp to tmpfs makes a run 
fast, temp volume
+is your problem) — but do not run with it. Temp on tmpfs is bounded only by
+RAM: a single large archive expanding into it can exhaust memory for every
+process on the host, starve the page cache a cold-corpus run depends on, or
+count against a container&#8217;s memory limit and get the pod evicted. A slow 
run
+is recoverable; that is not. 4.1.0 removes the temp writes instead of hiding
+them.</p>
+</li>
 </ul>
 </div>
 <div class="paragraph">
-<p>What is left is structural: the fixed per-request IPC + temp-spool + result
-serialization cost, and running several CPU-partitioned JVMs instead of one. 
The
-productive directions are shrinking that per-request cost (RAM-disk temp 
directory,
-keeping more payloads inline, leaner serialization) and fork-pool sizing — not 
a
-single JVM flag.</p>
+<p>What remains structural on the <strong>upload</strong> endpoints is the 
fixed per-request IPC<br>
+result-serialization cost and running several CPU-partitioned JVMs instead of 
one;
+the productive directions there are keeping more payloads inline, leaner
+serialization, and fork-pool sizing — not a single JVM flag.</p>
 </div>
 </div>
 </div>

Modified: tika/site/publish/docs/4.1.0-SNAPSHOT/index.html
==============================================================================
--- tika/site/publish/docs/4.1.0-SNAPSHOT/index.html    Tue Aug 25 16:35:00 
2026        (r1937440)
+++ tika/site/publish/docs/4.1.0-SNAPSHOT/index.html    Tue Aug 25 17:56:20 
2026        (r1937441)
@@ -458,7 +458,7 @@ you have to update.</p>
 <p>Apache Tika is an Apache Software Foundation project, formerly a subproject 
of Apache Lucene.</p>
 </div>
 <div class="paragraph">
-<p><span class="small">Built from commit: <code>81f2eb01d6 
(2026-08-21)</code></span></p>
+<p><span class="small">Built from commit: <code>eaecd350ac 
(2026-08-25)</code></span></p>
 </div>
 </div>
 </div>

Modified: tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/fetchers.html
==============================================================================
--- tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/fetchers.html   Tue Aug 25 
16:35:00 2026        (r1937440)
+++ tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/fetchers.html   Tue Aug 25 
17:56:20 2026        (r1937441)
@@ -479,7 +479,7 @@
 <p>A host that already holds a document&#8201;&#8212;&#8201;tika-server 
serving <code>/tika</code>, or an application calling 
<code>PipesForkParser</code> with an in-memory stream&#8201;&#8212;&#8201;does 
not have to write it to disk for the forked worker to read. Content at or below 
<a href="configuration.html#payload-limits" class="xref 
page"><code>maxInlineBytes</code></a> travels inside the request and is served 
in the worker by the built-in <code>\_\_bytes</code> fetcher; larger content is 
written once to a file instead. A stream that is already backed by a file 
always keeps its file.</p>
 </div>
 <div class="paragraph">
-<p>This is automatic and needs no configuration. <code>\_\_bytes</code> is not 
declarable in a config file and cannot be named by a request.</p>
+<p>This is automatic and needs no configuration. <code>\_\_bytes</code> is not 
declarable in a config file and cannot be named by a request. The payload 
itself has no request-suppliable form either: it travels beside the tuple in 
the host&#8217;s parent-to-worker request envelope, never as a tuple field 
(<code>inlineBytes</code> in a request tuple is rejected). The IPC wire format 
is internal and same-version-only; parent and worker run from the same 
classpath by default, and a version-skewed worker classpath (a <code>-cp</code> 
override in <code>forkedJvmArgs</code>) is unsupported.</p>
 </div>
 </div>
 </div>

Modified: tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/plugins/kafka.html
==============================================================================
--- tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/plugins/kafka.html      Tue Aug 
25 16:35:00 2026        (r1937440)
+++ tika/site/publish/docs/4.1.0-SNAPSHOT/pipes/plugins/kafka.html      Tue Aug 
25 17:56:20 2026        (r1937441)
@@ -399,6 +399,7 @@
 </li>
 <li><a href="#kafka-iterator">Kafka Iterator 
(<code>kafka-pipes-iterator</code>)</a>
 <ul class="sectlevel2">
+<li><a href="#iterator-caveats">Things to know before building on it</a></li>
 <li><a href="#_configuration_2">Configuration</a></li>
 </ul>
 </li>
@@ -411,6 +412,12 @@
 <div class="paragraph">
 <p>The Apache Kafka plugin (<code>tika-pipes-kafka</code>) provides an emitter 
(publishes parsed documents to a Kafka topic) and an iterator (consumes fetch 
requests from a Kafka topic).</p>
 </div>
+<div class="paragraph">
+<p>The two halves have different standing. The <strong>emitter</strong> is a 
plain producer and a good fit: Tika
+parses, results stream to a topic for downstream indexing. The 
<strong>iterator</strong> is a worked example
+whose suitability depends on your parse latency&#8201;&#8212;&#8201;see <a 
href="#iterator-caveats">Things to know before building on it</a> before 
building on
+it.</p>
+</div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 33.3333%;">
@@ -607,25 +614,60 @@ applies. The Default column below is the
 <div class="sect1">
 <h2 id="kafka-iterator"><a class="anchor" href="#kafka-iterator"></a>Kafka 
Iterator (<code>kafka-pipes-iterator</code>)</h2>
 <div class="sectionbody">
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="title">Reference example&#8201;&#8212;&#8201;check that your parse 
latency suits it</div>
 <div class="paragraph">
-<p>Consumes fetch-request messages from a Kafka topic and emits one 
<code>FetchEmitTuple</code> per message. Useful for building event-driven 
pipelines where some upstream system pushes work to a queue.</p>
+<p>Kafka&#8217;s consumer model assumes bounded, roughly uniform per-message 
processing time, so how
+well this component works depends on <strong>how long your documents take to 
parse</strong>. Short, predictable
+parses fit that assumption. Long-running parses do not: pairing Kafka with 
documents that take
+minutes to an hour&#8201;&#8212;&#8201;OCR&#8217;d PDFs, large archives, 
anything near the one-hour default total-task
+timeout&#8201;&#8212;&#8201;works against the grain of the offset model, and 
the caveats below stop being
+theoretical.</p>
 </div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-json hljs" 
data-lang="json">{
-  "pipes-iterator": {
-    "kafka-pipes-iterator": {
-      "topic": "tika-fetch-requests",
-      "bootstrapServers": "kafka1.example.com:9092,kafka2.example.com:9092",
-      "groupId": "tika-pipes-iterator",
-      "autoOffsetReset": "earliest",
-      "pollDelayMs": 100,
-      "emitMax": -1,
-      "fetcherId": "fsf",
-      "emitterId": "kafe"
-    }
-  }
-}</code></pre>
+<div class="paragraph">
+<p>It is kept as a worked example rather than a supported production 
integration. If your workload
+has a long latency tail, consider driving tika-server or tika-grpc from your 
own consumer, where
+you control acknowledgement and retry, and use the <a 
href="#kafka-emitter">Kafka emitter</a> to publish
+results.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="sect2">
+<h3 id="iterator-caveats"><a class="anchor" 
href="#iterator-caveats"></a>Things to know before building on it</h3>
+<div class="paragraph">
+<p><strong>Head-of-line blocking, in proportion to your latency 
spread.</strong> A partition is consumed in order
+by one member of the group. Even with <code>numClients</code> workers parsing 
in parallel, correct offset
+handling can only advance the commit watermark to the lowest un-acknowledged 
offset, so one slow
+document holds up its partition&#8217;s progress. With short, uniform parses 
this is barely
+noticeable; with a long tail, one document can stall a partition for as long 
as it parses.
+This follows from Kafka&#8217;s offset model rather than from a setting.</p>
+</div>
+<div class="paragraph">
+<p><strong>At-most-once delivery.</strong> <code>enable.auto.commit</code> is 
left at Kafka&#8217;s default of <code>true</code>, so offsets
+are committed on a timer as soon as records are 
<strong>polled</strong>&#8201;&#8212;&#8201;before Tika has parsed or emitted
+them. A crash, OOM or failed emit in between loses those documents silently. 
Committing after a
+successful emit is not currently possible: the iterator pushes tuples onto a 
queue and receives
+no completion signal back.</p>
+</div>
+<div class="paragraph">
+<p><strong>It drains and exits; it does not stream.</strong> The iterator 
enqueues what is on the topic and then
+finishes, because tika-pipes' iterator contract is finite. A quiet period ends 
the run (see
+<code>drainIdleMs</code>). It suits a periodic batch drain, not a long-running 
consumer.</p>
+</div>
+<div class="paragraph">
+<p><strong>Give the consumer room to join.</strong> A stock Kafka broker 
applies
+<code>group.initial.rebalance.delay.ms</code> (default 3000) to the first 
member joining an <strong>empty</strong> group.
+A deployment that runs back-to-back, or keeps another member in the group, 
never pays this; one
+that starts cold pays it every run. The iterator waits for a partition 
assignment up to
+<code>assignmentTimeoutMs</code> rather than mistaking a not-yet-assigned 
consumer for an empty topic.</p>
 </div>
 </div>
 <div class="sect2">
@@ -675,7 +717,7 @@ applies. The Default column below is the
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>pollDelayMs</code></p></td>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>100</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Sleep 
between <code>poll()</code> calls when the topic is idle.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Timeout 
passed to each <code>poll()</code> call.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>emitMax</code></p></td>
@@ -683,9 +725,25 @@ applies. The Default column below is the
 <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum 
tuples to emit. <code>-1</code> means unbounded.</p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>assignmentTimeoutMs</code></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>30000</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">How long 
to wait for the consumer to be assigned a partition before failing. A newly
+subscribed consumer returns empty polls while it joins the group; the iterator 
waits for an
+assignment so it cannot mistake that for an empty topic.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>drainIdleMs</code></p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>1000</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">How long 
the topic must stay quiet (no records, after assignment) before it is treated as
+drained and the iterator finishes. A duration rather than a poll count, so it 
holds however
+short <code>pollDelayMs</code> is.</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>groupInitialRebalanceDelayMs</code></p></td>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>3000</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Initial 
rebalance delay for the consumer group.</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Deprecated and ignored.</strong> This is a broker 
setting, not a consumer one, so Kafka never
+applied it. Use <code>assignmentTimeoutMs</code> instead. Still accepted so 
existing configs start;
+scheduled for removal.</p></td>
 </tr>
 </tbody>
 </table>
@@ -696,7 +754,7 @@ applies. The Default column below is the
 <h2 id="kafka-pipeline"><a class="anchor" href="#kafka-pipeline"></a>Complete 
Pipeline Example</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>A Kafka iterator (consuming fetch requests), a filesystem fetcher, and a 
Kafka emitter (publishing parsed results) — the stream-processing shape.</p>
+<p>A Kafka iterator (consuming fetch requests), a filesystem fetcher, and a 
Kafka emitter (publishing parsed results). This end-to-end shape is the 
reference example; see <a href="#iterator-caveats">Things to know before 
building on it</a> before relying on the iterator half.</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -762,7 +820,7 @@ applies. The Default column below is the
 <p>For exactly-once semantics, set <code>enableIdempotence: true</code> (and 
ensure <code>acks: all</code>); for transactional semantics, also set 
<code>transactionalId</code>.</p>
 </li>
 <li>
-<p>The iterator&#8217;s <code>groupId</code> controls partition assignment. 
Set it explicitly in production — without one, the consumer receives a 
transient assignment that resets on restart.</p>
+<p>The iterator&#8217;s <code>groupId</code> controls partition assignment. 
Set it explicitly — without one, the consumer receives a transient assignment 
that resets on restart.</p>
 </li>
 </ul>
 </div>

Modified: tika/site/publish/docs/4.1.0-SNAPSHOT/using-tika/server/index.html
==============================================================================
--- tika/site/publish/docs/4.1.0-SNAPSHOT/using-tika/server/index.html  Tue Aug 
25 16:35:00 2026        (r1937440)
+++ tika/site/publish/docs/4.1.0-SNAPSHOT/using-tika/server/index.html  Tue Aug 
25 17:56:20 2026        (r1937441)
@@ -634,7 +634,11 @@ using the same mapping as <code>/tika</c
 <div class="paragraph">
 <p>A tuple&#8217;s fields are <code>id</code>, <code>fetcher</code>, 
<code>fetchKey</code>, <code>emitter</code>, <code>emitKey</code>, and 
optionally
 <code>fetchRangeStart</code>, <code>fetchRangeEnd</code>, 
<code>metadata</code>, <code>parse-context</code> and 
<code>onParseException</code>. Any other
-field is a <code>400</code> — there is no silent tolerance for a typo. The 
<code>{"tuples":[&#8230;&#8203;]}</code> envelope is
+field is a <code>400</code> — there is no silent tolerance for a typo. There 
is no field for content:
+<code>inlineBytes</code> draws a tailored <code>400</code>, because inline 
content is
+<a href="../../pipes/fetchers.html#reserved-ids" class="xref page">how the 
server feeds its own workers</a>, not something a
+tuple can carry. To parse content you already hold, PUT it to 
<code>/tika</code> or <code>/rmeta</code>, which inline
+it for you. The <code>{"tuples":[&#8230;&#8203;]}</code> envelope is
 required on <code>/async</code>; a bare array is rejected.</p>
 </div>
 </div>

Modified: tika/site/publish/docs/sitemap.xml
==============================================================================
--- tika/site/publish/docs/sitemap.xml  Tue Aug 25 16:35:00 2026        
(r1937440)
+++ tika/site/publish/docs/sitemap.xml  Tue Aug 25 17:56:20 2026        
(r1937441)
@@ -2,714 +2,714 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/charset-detection-design.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/charsoup-supported-languages.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/embedded-documents.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/integration-testing/run-uat-script.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/integration-testing/tika-app.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/integration-testing/tika-eval-regression.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/integration-testing/tika-server.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/junk-detection-build.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/junk-detection.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/language-detection-build.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/language-detection.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/local-vlm-server.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/robustness.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/setting-limits.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/spooling.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/advanced/zip-detection.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/detectors.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/digesters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/encoding-detectors.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/metadata-filters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/parsers/external-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/parsers/pdf-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/parsers/tess4j-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/parsers/tesseract-ocr-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/configuration/parsers/vlm-parsers.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/developers/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/developers/metadata-keys.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/developers/serialization.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/faq.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/release-guides/docker.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/release-guides/grpc.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/release-guides/helm.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/release-guides/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/release-guides/release-artifacts.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/release-guides/tika.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/maintainers/site.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/chunk-strategies.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/design-notes-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/inference-handler-requirements.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/metadata-changes-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/migrating-tika-server-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/migrating-to-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/migration-to-4x/serialization-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/configuration.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/cpu-sizing.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/emitters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/fetchers.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/getting-started.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/iterators.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/parse-modes.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/performance.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/atlassian-jwt.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/azblob.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/csv.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/elasticsearch.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/filesystem.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/gcs.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/google-drive.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/http.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/jdbc.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/json.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/kafka.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/microsoft-graph.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/opensearch.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/s3.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/solr.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/plugins/writing-a-plugin.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/reporters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/shared-server-mode.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/timeouts.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/troubleshooting.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/pipes/unpack-config.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/roadmap.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/security.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/cli/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/docker.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/grpc/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/java-api/getting-started.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/java-api/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/server/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.1.0-SNAPSHOT/using-tika/server/tls.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/charset-detection-design.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/charsoup-supported-languages.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/embedded-documents.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/integration-testing/run-uat-script.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/integration-testing/tika-app.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/integration-testing/tika-eval-regression.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/integration-testing/tika-server.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/junk-detection-build.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/junk-detection.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/advanced/language-detection-build.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/language-detection.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/local-vlm-server.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/robustness.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/setting-limits.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/spooling.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/advanced/zip-detection.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/configuration/detectors.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/configuration/digesters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/encoding-detectors.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/configuration/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/metadata-filters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/parsers/external-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/parsers/pdf-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/parsers/tess4j-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/parsers/tesseract-ocr-parser.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/configuration/parsers/vlm-parsers.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/developers/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/developers/metadata-keys.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/developers/serialization.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/faq.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/maintainers/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/maintainers/release-guides/docker.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/maintainers/release-guides/grpc.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/maintainers/release-guides/helm.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/maintainers/release-guides/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/maintainers/release-guides/release-artifacts.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/maintainers/release-guides/tika.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/maintainers/site.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/chunk-strategies.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/design-notes-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/inference-handler-requirements.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/metadata-changes-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/migrating-tika-server-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/migrating-to-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/migration-to-4x/serialization-4x.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/configuration.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/cpu-sizing.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/emitters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/fetchers.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/getting-started.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/iterators.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/parse-modes.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/performance.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/atlassian-jwt.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/azblob.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/csv.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/elasticsearch.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/filesystem.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/gcs.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/google-drive.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/http.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/jdbc.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/json.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/kafka.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/microsoft-graph.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/opensearch.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/s3.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/solr.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/pipes/plugins/writing-a-plugin.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/reporters.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/shared-server-mode.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/timeouts.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/troubleshooting.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/pipes/unpack-config.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/roadmap.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/security.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/cli/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/docker.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/grpc/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 
<loc>https://tika.apache.org/docs/4.0.x/using-tika/java-api/getting-started.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/java-api/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/server/index.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 <url>
 <loc>https://tika.apache.org/docs/4.0.x/using-tika/server/tls.html</loc>
-<lastmod>2026-08-22T02:03:35.856Z</lastmod>
+<lastmod>2026-08-25T17:54:06.055Z</lastmod>
 </url>
 </urlset>

Reply via email to