Fixing features for hotfolder

Here is some documentation about the process I used to solve some issues with hotfolder and the features module. I was doing this partly through the web interface and partly through a console, so this is a reconstruction of what I remember and the console log. 

 

I was getting the following error message when I tried to check hotfolder watches (see https://www.drupal.org/node/2453659):

Notice: Undefined property: stdClass::$field_watch_config_scheme

 

That error is related to the field not being properly configured by the features module. The way to fix this is to 'revert' the feature. That's a real pain to do unless you're using drush.

So... Log into a console on the server and change to the sites directory for your site. I use KiTTY.

First, let's update drush:
  > composer global update

 

Reverting a feature is done like this:
  > drush features-revert hotfolder -y

However, features won't detect any changes unless you clear its codecache variable first.

   > drush variable-delete features_semaphore

Now you can revert the feature.

   > drush features-revert hotfolder -y

 
Attempting to revert the feature resulted in this exception:

   exception 'FieldException' with message 'Cannot change an existing field's entity_types property.'

But that's not very helpful because it's too vague, so I changed the code to tell me more details (/modules/field/field.crud.inc, approx line 237):

  throw new FieldException("Cannot change an existing field's entity_types property.\n--- Field: ".$field['field_name'].$field['entity_types']);

 

The features settings on the web page (/admin/structure/features/hotfolder), showed it was stuck rebuilding the fields.
To make features try again to rebuild fields, delete this variable:

   > drush variable-delete features_semaphore

 

At some point, the module wouldn't install properly, and was giving me the field exception. (there is a lot of repeating commands, so remember that you can select a command from the console history using up-arrow.)

   > drush dre hotfolder -y      # disable, uninstall (remove) and re-enable the module

This was giving me exceptions, like 

   exception 'FieldException' with message 'Cannot change an existing field's entity_types property.
   --- Field: job_record_actions

The answer to that is

   > drush field-delete field_job_record_actions

... and then try to disable/uninstall/reenable again, which most of the time resulted in a different field causing the exception. Keep repeating these steps until the module is installed without giving an exception.

Sometimes I got an exception like this:

  exception 'DatabaseSchemaObjectExistsException' with message 'Table field_data_field_job_record_retries already exists.'

The answer to that is to delete the table in the database. I don't know if there is a drush command for that. And then try the reinstall command, etc.

And then... finally... this should work and hopefully features will show hotfolder as enabled and not rebuildling anything:

  > drush features-revert hotfolder -y

 

So with the module installed properly and its features fixed, everything should work now.

 

Here's another handy drush command

  > drush cc all   # clear all caches

 

Tags: