Glossary¶
Terminology used across Fujin Shuttle, with the Rapidflow lineage where it applies.
Rapidflow¶
The Unirgy Rapidflow import/export engine for Magento that Fujin Shuttle ports to Shopware. Its core vocabulary — agent, deputy, processor pipeline, batch emitter — carries over directly. See Concepts.
Agent¶
A flyweight selected for one (data type, transfer mode) pair (e.g. product + import).
Registered in AgentContainer, matched and cloned per run by the selector. Delegates the work
to a deputy. (src/DataType/Agent/)
Deputy¶
The concrete worker for a data type — it knows the shape of that type and orchestrates the
two passes. (src/Deputy/)
Two-pass model¶
Pass A scans the CSV and resolves every referenced code to an ID once (auto-creating where allowed); Pass B streams the rows and writes them in concurrent batches using the Pass A maps. See Concepts.
Asset maps¶
The code → idBytes maps a deputy builds in Pass A (category paths, manufacturers, property
options, …) and reuses in Pass B so the write phase avoids per-row lookups.
Channel / Backend¶
The request/response seam between a deputy and the database layer. A deputy sends a typed
ServiceRequest to a Backend; LocalBackend runs it in-process today, but the seam is
kept wire-compatible so a remote-cluster transport can be added later. (src/Channel/)
Request handler¶
A class that executes one kind of ServiceRequest — resolve, load, upsert, link, delete, or a
special merge. Registered with the fujin_shuttle.request_handler DI tag, keyed by request
class. There are ~47. (src/Channel/RequestHandler/)
Depot¶
The only layer that talks SQL. An import depot builds INSERT … ON DUPLICATE KEY UPDATE
bulk statements; an export depot keyset-pages rows out into the wide-column shape.
(src/DataDepot/)
ID resolver¶
Resolves a CSV code/name/path to a Shopware BINARY(16) UUID, and can auto-create the target
(categories, property options, custom fields). (src/IdResolver/Shopware/)
Batch emitter¶
The pipeline stage that accumulates streamed rows into batches, flushing at batch_size or when
the row type changes. (BatchEmitter in flyokai/fujin-shuttle-message)
Processor / pipeline¶
The streaming transform chain (CSV reader → … → batch emitter) built on
flyokai/amp-data-pipeline. Each processor can read its source on several concurrent fibers.
Bulk SQL / InsertOnDuplicate¶
The raw, multi-row INSERT … ON DUPLICATE KEY UPDATE builder (flyokai/laminas-db-bulk-update)
that replaces per-row DAL writes — the core of the speed-up.
AMPHP¶
The PHP async framework Fujin Shuttle runs Pass B on. Combined with a non-blocking ext-mysqli
driver, it lets multiple batches' queries be in flight on a single thread.
Revolt¶
The event loop AMPHP schedules its fibers on.
Fiber¶
A cooperative coroutine. Each batch in Pass B runs as a fiber; when its query awaits the network, the loop runs another batch's fiber.
Connection pool / driver¶
dbDriver picks the pool: async (pooled non-blocking mysqli, default) or sync
(Shopware PDO). The async pool sets FOREIGN_KEY_CHECKS=0 once per link because Pass A
guarantees FK targets exist.
Profile¶
A saved, re-runnable import/export configuration (type, mode, file, columns, options). Stored in
fujin_profile / fujin_profile_column. See Admin UI.
Job¶
One execution of a profile, tracked in fujin_job with live status, phase, progress and a
heartbeat_at stamp; per-row messages go to fujin_job_log. See
Database schema.
Run monitor¶
The component that, for tracked runs, writes throttled progress, bumps the heartbeat, and reads
the job status so a stopping flag stops the run cooperatively.
Sync threshold¶
syncRowThreshold — imports at or below it run inline in the request;
larger ones are queued to the messenger worker.
Ownership guard¶
A seam (src/Ownership/) that decides whether a row may create/update a product. The base
plugin allows everything (null guard); the marketplace plugin overrides it to enforce per-seller
ownership.