Troubleshooting

For arlanix/product-feed 1.0.0

Troubleshooting

Find a problem by the message you see: search this page for its exact words, leaving out the names and numbers in it.

When feeds never run

The grid's Health says — and Last delivery never delivered long after Generate, and the feed grid and form show a warning that the feed cron or the Magento indexer cron has not run in the last 15 minutes:

  • No crontab. cron:run by hand works, nothing happens on its own: bin/magento cron:install.
  • Groups limited. A crontab or a deployment that runs cron:run --group=default only, or a hosting panel that schedules named groups, leaves arlanix_feed or index out. Run all groups, or add bin/magento cron:run --group=arlanix_feed and --group=index.
  • Catalogue being built. Last delivery says Catalogue: being built: the product indexer is invalid and indexer_reindex_all_invalid has not built it yet; see The indexers.
  • Jobs pile up as pending. The cron process dies or is killed before the jobs start; look at the cron's own output and at the PHP CLI memory and time limits. Every run records the limits it ran under; the Feed run history item of the support bundle lists them for each run beside its peak memory.

The log

The modules log to var/log/arlanix.log. The level is set in the admin or in app/etc/env.php; see Log level.

What the jobs write there, for one feed or one store view, never stopping the others:

Level Line Means
info Run of feed "google-shopping" skipped: … The command line or another cron is on the same feed. Nothing is wrong; the next minute takes it.
info Run of feed "google-shopping" waits: … The catalogue is being built, which on a large catalogue takes a while. No run is recorded; the feed is delivered the minute the build is done.
warning Run of feed "google-shopping" refused: Nothing to deliver … / Nothing taken down … Every product was left out, so nothing was published or taken down. The feed's Why? says what to fix.
warning Feed 7 skipped: no installed module provides its channel "…" The module of the feed's channel was removed. Said once at each scheduled time; the feed runs again at the next one once the module is back.
error Run of feed "google-shopping" failed: … Anything else, with its trace. A failed file feed is tried again within 15 minutes, or at its schedule if that comes first; each failure in a row after that waits twice as long, schedule or not: 30 minutes, an hour, two, four, then every six hours until a delivery works. Generate or Deliver to SFTP runs it at once. A feed sent row by row waits 5 minutes, then 10, 20, 40 and an hour at most; saving it ends the wait. Google refusing the account, or not answering, stops the run where it is: Stopped part way: …, see Google Merchant Center.
error Building the rows of store view 1 failed; its feeds map again on delivery: … The indexer could not build some products' rows; the rest of the catalogue goes on, and the feeds of that store view are mapped again on their next delivery.
warning 3 feed run(s) were last heard from long ago and are marked stuck. The arlanix_feed_mark_stuck_runs job, every 5 minutes, found runs that had not reported progress for arlanix_feed/schedule/stuck_after minutes, 30 by default, and marked them Stopped responding. The process running them died or was killed: look at the cron's output and the PHP CLI memory and time limits.
warning Feed history cleanup ran out of time; the rest goes on the next run. The nightly arlanix_feed_clean_runs job removes old runs in batches for a limited time. A long history takes more than one night; nothing is wrong.
error Feed history cleanup failed: … / Marking stuck feed runs failed: … The job stopped on an error, with its trace. The next run of the job tries again.
warning Google taxonomy: https://www.google.com/basepages/producttype/taxonomy-with-ids.de-DE.txt could not be fetched (…). Using the copy bundled with the module. The store cannot reach www.google.com; see Requirements. The category search uses the en-US list bundled with the module.
warning Google taxonomy de-DE: 2 line(s) could not be read, first was "…". Google's list had lines the module could not read. The rest of the list is used.
error Google taxonomy de-DE: nothing was fetched and the bundled copy at … could not be read. Neither Google nor the module's own file gave a list, and the category search says The taxonomy for de-DE could not be fetched and the copy bundled at … could not be read. Reinstall the module's files, then let the store reach www.google.com.

On the command line

arlanix:feed:generate stops before it runs any feed when its options are wrong:

Message Means
Specify --feed=<identifier> or --all. Neither option was given. The command exits with 2.
--build-only and --deliver-only are mutually exclusive. Both were given. The command exits with 2.
No active feeds. --all found no feed that is switched on. The command exits with 0.

How each feed's run ended, and the exit codes, are in Run a feed from the command line.

Deliveries

SFTP

A server that is slow, silent or refuses the connection is in When the server is slow or down. One more message comes from the upload itself:

Message Means
The SFTP destination directory does not exist or is not accessible. The folder of the feed's Remote file name or path is not there, or the SFTP user cannot open it. Create it on the server or correct the path; a bare file name uploads to the account's root directory.

Google Merchant Center (API)

A refused or silent Google is in When Google refuses the account, or does not answer. These come from the feed itself, in a run's Details:

Message Means
This feed has no Google account chosen, so there is nowhere to send products. The feed's Google account is empty. Choose one in the Channel section and save.
Merchant Center did not create a data source for this feed. Google answered the request for the feed's data source without one. Run the feed again; if it says the same, look in Merchant Center for a data source named *Magento: * and the feed's identifier.
Merchant Center already holds "…" for this feed, and it does not take products through the API. Google cannot change that on a source that exists: delete it in Merchant Center and register again. A data source of that name was made in Merchant Center as a file or another input. Delete it there, then press Register with Merchant Center in the feed's Channel section, or run the feed.

A feed that supplements another writes these to the log as warnings, and its run goes on; the products still reach its own data source, and the next run tries the link again:

Message Means
This feed does not own its products, and no feed was named for it to supplement — so what it sends applies to nothing. Choose one under Channel. Owns the products is off and Supplements feed is empty.
The feed this one supplements has not registered its own data source yet, so the link could not be made. Run that feed first, then this one. The primary feed has not run, nor been registered.
The feed this one supplements belongs to a different Google account A supplemental data source can only be linked to a primary one of the same Merchant Center account. Choose a feed that sends to the same account.

Your own extensions

What the modules say when an extension of yours is wired wrong:

Message Means
No installed module delivers feeds of the channel type "…". A feed's channel has no item in ChannelPool, usually because the module that registered it was removed or switched off. See Channels.
Unknown resolver "…". Available: …. A mapping row names a resolver that has no item in ResolverPool. See Resolvers.
Unknown format "…". Available: …. A feed's format has no item in WriterPool. See Writers.
There is no setting "…" on this entity. Register it in di.xml, as an item of the "settings" array of the … this entity is wired to. A form field or a setting was saved that no setting pool declares. See Add the channel's settings.
The setting "…" does not name a fieldset. … A setting's name has no /: it is named <fieldset>/<field>, the fieldset it appears in, then the field.
The setting "…" declares normalise as …. It has to name a class: … A setting's normalise item is not an object.
The … "…" is a …. It has to implement …. A pool item is not the interface the pool takes. See Extend the module.

What the store owner sees

The manual's Troubleshooting explains these to the store owner. Here each is with the code that says it, for when the owner sends one on.

Message Said by Why, in the code
The feed cron or the Magento indexer cron has not run in the last 15 minutes, … Arlanix_Feed, Model/Feed/QuietCronWarning.php See When feeds never run.
The feed indexer … is set to "Update on Save", … Arlanix_Feed, Model/Build/Indexer/RealtimeIndexerWarning.php See The indexers.
3 products were left out of the feed on … / Nothing was delivered on … Arlanix_Feed, Controller/Adminhtml/Feed/Edit.php The feed's last run left products out; the run's messages say which and why.
No mapping rule for …, which the feed type requires. … Arlanix_Feed, Model/Field/MappingCoverage.php The feed type's field catalog marks fields required that the mapping has no row for; see Field catalogs.
Feed "…" is switched off, so nothing will pick it up. … Arlanix_Feed, Model/Feed/OnDemandRun.php The feed is inactive, and the cron takes active feeds only.
Feed "…" is sent as its products change; there is nothing to run by hand. Arlanix_Feed, Model/Feed/OnDemandRun.php The feed's channel declares no on_demand in ChannelPool; see Channels.
Another feed already uses the identifier "…". Arlanix_Feed, Model/Feed/Validator.php Identifiers are unique.
Feed "…" already publishes to …. … Arlanix_Feed, Model/Feed/FileCollisionValidator.php Two feeds resolve to the same path under pub/media.
The file name cannot contain a folder: … Arlanix_Core, Model/Settings/Normaliser/FilenameNormaliser.php A / or \ in channel/filename is refused, not stripped, so a name cannot reach outside the feeds folder.
Mapping: rows … both write "…". … Arlanix_Feed, Model/Feed/MappingSection.php Two rules for one target field. Nothing of the feed is saved.
Google categories: row … has only one half filled in. … Arlanix_Feed, Model/Feed/CategoryAssignmentsSection.php
Conditions: "…" is not a condition a feed can choose its products by. Arlanix_Feed, Model/Feed/ConditionsSection.php The conditions hold a type outside the feed's own condition classes.
Cron will never act on "…", … Arlanix_Feed, Model/Feed/Validator.php The Schedule section comes to a cron expression with no next run.
Choose the SFTP connection this feed publishes through. and the other SFTP refusals on save Arlanix_FeedSftp, Model/Feed/SftpSettingsValidator.php See Point a feed at it.
Choose the Merchant Center account this feed publishes into. …, Fill in …, … cannot be changed: … Arlanix_FeedGoogleMerchant, Model/Feed/ApiSettingsValidator.php Feed label and content language are fixed once Google creates the data source. See Set up the feed.
A primary data source already exists for this account, label and language: … Arlanix_FeedGoogleMerchant, Model/Feed/DuplicatePrimaryValidator.php Two primary sources with the same account, label and language would claim the same offer ids.
These inventory sources do not serve this feed's store view: … Arlanix_FeedInventory, Model/Feed/SourcesValidator.php A source not linked to a stock of the store view's website.
Nothing to preview: … / The store view's catalogue was not built with … yet, … Arlanix_Feed, view/adminhtml/templates/feed/preview.phtml The second: the mapping reads attributes the store view's catalogue index does not hold yet (Block/Adminhtml/Feed/Preview.php, getUnbuilt()); the next build adds them.
Nothing to deliver: … Arlanix_Feed, Model/DeliveryV2/FileChannel.php Every product left out, or none matched, and channel/allow_empty is off.
Nothing taken down: … Arlanix_Feed, Model/DeliveryV2/PushChannel.php The same, for a feed sent row by row.
Feed "…" has no mapping rules. Arlanix_Feed, Model/Feed/FeedReadiness.php The run stops before it maps anything.
Stopped part way: … Arlanix_Feed, Model/DeliveryV2/PushChannel.php See When Google refuses the account, or does not answer.
This feed is counted over inventory sources …, and none of them exists and is enabled. … Arlanix_FeedInventory, Model/Source/SelectedSources.php The sources saved on the feed were deleted or disabled since.
The target field "…" is not a valid XML element name. … Arlanix_Core, Model/Writer/XmlRssWriter.php An XML feed's mapping writes a field whose name XML refuses as an element.
Cannot delete "…": it is used by …. … Arlanix_Feed, Model/ResourceModel/Dictionary.php Mapping rows of those feeds name the dictionary.
This dictionary falls back to a default value, so it needs one. … Arlanix_Feed, Model/Dictionary/Validator.php
"…" has … options, too many to choose from in a list. … Arlanix_Feed, Model/Source/AttributeOptions.php More than 2,000 option labels.
This SFTP connection is used by … / SFTP host must be a host name or IP address, … Arlanix_FeedSftp, Model/ResourceModel/Connection.php, Model/Connection/Validator.php
This Google account is used by … / The Merchant Center account id is a number, … Arlanix_FeedGoogleMerchant, Model/ResourceModel/GmcAccount.php, Model/GmcAccount/Validator.php
Files already published were left in place. / The data source of feed "…" and its products stay in Merchant Center. … Arlanix_Feed, Controller/Adminhtml/Feed/Delete.php The deleted notice of the feed's ChannelPool item; see Channels.

In the admin

Message Means
Something went wrong. Check the log for details. An error the module did not expect. Its error line in var/log/arlanix.log starts with what was being done, such as Deleting feed 7:, and has the trace.