Here's my back story before I get into what my issue is.

I've been working on an old site which never the features module installed. I'm in the process of updating the site on a DEV server and currently I'm trying to port my changes into STAGING and then I'll make them live. Currently I'm trying to port my DEV changes into STAGING with the use of Features. Keep in mind, none of my existing cck content types were originally created with Features and my DEV and STAGING (which is a current port of LIVE) are about 4 months apart worth of changes.

During this process I've encountered this issue with Features. I've modified some content types on DEV and I'm trying to port these changes to STAGING with Features. I created a features module which had an export of all my content types, which I attempted to install into STAGING. This complained that there were some conflicts between the two types (like changes from Limit 1 to Limit Unlimited). I manually updated both my DEV and STAGING, to remove these conflicts. Features module really assisted me to know what the differences between the two sites were and helped me merge them.

Now I have no conflicts, and I've created a new version of my exported content types feature module. I've gone ahead and installed this on STAGNG. It now complains that the features module is "overridden". I attempt to do a "revert" to get staging to revert itself back to the features module which I pulled from DEV, but this does not appear to be working. Afterwards the differences between still exist if I check "compare".

I decided to poke around a little further and noticed that in my "recent log entries" after I try and do an "override", I get this error:

array_merge_recursive() [<a href='function.array-merge-recursive'>function.array-merge-recursive</a>]: recursion detected in includes/module.inc on line 473.

I tried to get at some debugging information for you guys, but I'm unable to get at any with out causing a WSOD.

Any assistance on this matter would be appreciated,
JOrdans

CommentFileSizeAuthor
#2 sandbox-6.x-1.0.tgz5.12 KBaleksey.tk

Comments

j0rd’s picture

In drush when I do an drush features revert I get this:

$ drush features revert tbw_content_types
Current state already matches defaults, aborting.

Now I'm confused :D Could someone elaborate on what's going on here.

aleksey.tk’s picture

StatusFileSize
new5.12 KB

i'm getting this error too

Drupal 6.14 with my test feature. Feature attached.

aleksey.tk’s picture

Version: 6.x-1.0-beta3 » 6.x-1.0-beta4
yhahn’s picture

Status: Active » Closed (duplicate)

I'm looking at your feature now and I see that it has copies of OG default views in it. Out of curiosity, how did you get these to export? Did you override them, turn off OG, and then export your feature?

The actual reason for the error is that there are conflicting exported views from different modules -- both sandbox and OG are providing og, og_members, etc. When this is the case, module_invoke_all('views_default_views') attempts to do an array merge recursive against the colliding views objects and barfs.

As a general rule of thumb, don't use the names of other modules' views in your features. For example, clone - don't override - the OG views if you're using them as a starting point.

Setting this as a duplicate of #650292: Limit export options only to current feature's components & 'normal' objects

mbria’s picture

Thanks yhahn for the explanation.

I found the same issue with a duplicated timeline view.
Removing the view from the feature package was enough to fix the problem.

arcane’s picture

I am also getting this in Drupal 7.x-1.0-beta4 when I go to the admin modules list screen. I added a feature from the Feeds module when I enabled it.

mpotter’s picture

I am also getting this. Definitely a change in the recent update. It seems to be related to a PHP bug in the array_merge_recursive function with certain versions of PHP (https://bugs.php.net/bug.php?id=42177). We are running on Acquia hosting, which only has PHP 5.2.4 and shows this error. On our development servers running PHP 5.2.17 this error does not occur.

Searching some other issues similar to this it seems that array_merge_recursive does not like empty arrays. I will take a look at the recent changes to Features to see what change might be causing this.

The best workaround if you can do it is to upgrade your PHP version. If you are stuck with older PHP like I am with Acquia then stay tuned for a patch.

mpotter’s picture

The recursive error seems related to the change made from this issue: http://drupal.org/node/1079440#comment-5077872

Putting the name check back in fixes the recursive error.

function ctools_component_features_api($module_name) {
  $api = array();
  foreach (_ctools_features_get_info() as $component => $info) {
    if ($info['module'] === $module_name) {
      $api[$component] = $info;
    }
//  $api[$component] = $info;
  }
  return $api;
}

Unfortunately this also prevents the above issue regarding custom panels from being fixed. Maybe somebody can come up with a better fix for the original issue.

The underlying problem is that by removing the module name check, the ctools_component_features_api is returning the same large array of all ctools plugin api info each time it is called.

mpotter’s picture

Several duplicate issues on this same problem. The patch to solve this bug is here: #1079440: Module name check prevents panels custom content panes export