diff --git a/includes/menu.inc b/includes/menu.inc index 7468ac1..fc68110 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -453,6 +453,8 @@ function menu_get_item($path = NULL, $router_item = NULL) { $router_items[$path] = $router_item; } if (!isset($router_items[$path])) { + // Rebuild if we know it's needed, or if the menu masks are missing which + // occurs rarely, likely due to a race condition of multiple rebuilds. if (variable_get('menu_rebuild_needed', FALSE) || !variable_get('menu_masks', array())) { if (_menu_check_rebuild()) { menu_rebuild(); @@ -2737,6 +2739,7 @@ function menu_rebuild() { } return FALSE; } + $transaction = db_transaction(); try {