<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Components on Lucille</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/architecture/components/</link><description>Recent content in Components on Lucille</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 23 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kmwtechnology.github.io/lucille/docs-0.9.0/architecture/components/index.xml" rel="self" type="application/rss+xml"/><item><title>Event</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/architecture/components/events/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.9.0/architecture/components/events/</guid><description>&lt;h2 id="lucille-events"&gt;Lucille Events&lt;/h2&gt;
&lt;p&gt;As a Document passes through the Lucille pipeline, Event messages are generated at key transitions. The Publisher consumes these events to track the lifecycle of every document in the run and determine when all work is complete.&lt;/p&gt;
&lt;h2 id="event-types"&gt;Event Types&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Event&lt;/th&gt;
 &lt;th&gt;Who Sends It&lt;/th&gt;
 &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CREATE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Worker (on behalf of a Stage)&lt;/td&gt;
 &lt;td&gt;A child document was generated inside the pipeline and must be tracked.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;FINISH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Indexer&lt;/td&gt;
 &lt;td&gt;A document was successfully sent to the search backend.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;FAIL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Worker or Indexer&lt;/td&gt;
 &lt;td&gt;A document failed during processing or indexing.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DROP&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Worker&lt;/td&gt;
 &lt;td&gt;A document was explicitly dropped and will not be indexed.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Events include the document&amp;rsquo;s &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;run_id&lt;/code&gt;, allowing the Publisher to match each event to its corresponding accounting entry.&lt;/p&gt;</description></item><item><title>Worker</title><link>https://kmwtechnology.github.io/lucille/docs-0.9.0/architecture/components/worker/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://kmwtechnology.github.io/lucille/docs-0.9.0/architecture/components/worker/</guid><description>&lt;p&gt;A &lt;em&gt;Worker&lt;/em&gt; is a thread that pulls Documents from the source queue, runs them through a Pipeline of Stages, and pushes the processed results onto the destination queue for the Indexer to consume.&lt;/p&gt;
&lt;h2 id="what-the-worker-does"&gt;What the Worker Does&lt;/h2&gt;
&lt;p&gt;When a Worker starts, it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Constructs its own instance of the configured Pipeline (including a private instance of every Stage).&lt;/li&gt;
&lt;li&gt;Enters a polling loop, pulling Documents from the source queue one at a time.&lt;/li&gt;
&lt;li&gt;Passes each Document through every Stage in the Pipeline in order.&lt;/li&gt;
&lt;li&gt;Pushes the processed Document (and any child documents) to the destination queue.&lt;/li&gt;
&lt;li&gt;Sends lifecycle events (FINISH, FAIL, DROP, CREATE) to the Publisher via the event queue.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="per-thread-pipeline-isolation"&gt;Per-Thread Pipeline Isolation&lt;/h2&gt;
&lt;p&gt;Each Worker thread has its &lt;strong&gt;own isolated Pipeline instance&lt;/strong&gt;. This is a deliberate design choice:&lt;/p&gt;</description></item></channel></rss>