The import that exits 0 and imports nothing
Two different ways a product import reports complete success while doing none of the work, and neither of them shows up in the exit code or the job table.
A full product import normally takes most of a day on the install I am thinking of. Roughly 190,000 products. One run finished in eighty seconds, exited 0, wrote a clean job row, and moved both timestamps.
It had imported one family out of about 1,600.
Failure one: it refuses, and still exits 0
If a previous job is still marked as processing, the import command prints a message saying it cannot run two jobs at once, and then exits with status 0. Any wrapper, cron entry or deploy script that checks the exit code records a twelve hour import as having completed successfully in under a second.
The lock is a status column on the job table. A crashed run leaves it set, and every subsequent import politely declines while reporting success.
Failure two: a leftover filter scopes the whole run
The connector supports an advanced filter, which is how you import one family while testing. The filter is configuration, so it persists. Nobody clears it.
A later "full" import honours that filter. It exits 0, sets the job status to success, updates the timestamps and logs a clean run. Nothing in the exit code, the job row or the log distinguishes it from a real full import. The only tell is the duration, and only if you know what the duration is supposed to be.
What to check instead
Never trust the exit code on this command. It is not lying about the command, it is telling you the command ran, which is a different question from whether the import happened.
Compare the duration against a known-good run. Eighty seconds against eighteen hours is not a performance improvement.
Clear the advanced filter after any scoped test, and check it before any run you intend to be complete.
Check the job status before starting, and know which value means processing, because that is what silently blocks the next run.
The theme, and it is the same theme as most things I end up writing down: the failure is quiet, the reporting is confidently wrong, and the only defence is knowing what the numbers should look like when it works.
