I recently upgraded my site to the newest version of Drupal 7 (7.17) along with several modules. I also attempted to upgrade to the newest version of twitter_bootstrap (now bootstrap) but it proved to buggy and I had to revert to the older version.
The issue I am seeing involves the menu system. The menu system seems to rebuild itself over and over until it runs out of memory. This is not a memory issue, I have dedicated hosting and have set the memory as high as 512M.
I have traced the menu rebuild process by printing to my php error log:
[Wed Nov 28 13:50:11 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:11 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:11 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:11 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:11 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:12 2012] [error] [client 172.21.40.31] Function: menu_rebuild
...... (more of the same)
[Wed Nov 28 13:50:19 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:19 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:19 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:20 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:21 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: menu_get_item
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: menu_rebuild
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] ---menu_rebuild- Transaction
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: menu_router_build
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] Function: _menu_router_build
[Wed Nov 28 13:50:22 2012] [error] [client 172.21.40.31] PHP Fatal error: Allowed memory size of \
268435456 bytes exhausted (tried to allocate 71 bytes) in /var/www/test/includes/menu.inc on line \
3642
Here is the what the menu_rebuild functions look like with my logging:
<?php
function menu_rebuild() {
error_log("Function: menu_rebuild");
if (!lock_acquire('menu_rebuild')) {
error_log("---menu_rebuild- Locked out");
// Wait for another request that is already doing this work.
// We choose to block here since otherwise the router item may not
// be available in menu_execute_active_handler() resulting in a 404.
lock_wait('menu_rebuild');
return FALSE;
}
$transaction = db_transaction();
error_log("---menu_rebuild- Transaction");
try {
list($menu, $masks) = menu_router_build();
_menu_router_save($menu, $masks);
_menu_navigation_links_rebuild($menu);
// Clear the menu, page and block caches.
menu_cache_clear_all();
_menu_clear_page_cache();
error_log("---menu_rebuild- if");
if (defined('MAINTENANCE_MODE')) {
variable_set('menu_rebuild_needed', TRUE);
}
else {
variable_del('menu_rebuild_needed');
error_log("----Deleted variable menu_rebuild_needed");
}
}
catch (Exception $e) {
error_log("---menu_rebuild- Exception");
$transaction->rollback();
watchdog_exception('menu', $e);
}
lock_release('menu_rebuild');
return TRUE;
}
?>A couple of the things I found odd were:
- menu_rebuild is not getting locked out
- The if statement is never reached
- There is no exception, which I knew since nothing is being reported in my Drupal logs
Any help/hints/suggestions would be greatly appreciated.
Thanks
Comments
Fixed the issue -- It appears
Fixed the issue -- It appears to be related to the Profile2 Module. Upgrading to 7.13 fixes it: http://drupal.org/node/1874024
#1399618: Rebuilding lots of exportable entities takes a long time