Skip to content

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.