Actions taken:
- My gut says this is a memcache issue... So I tried disabling the memcache and cacherouter modules... No effect so re-enabled.
- However, when I import the LIVE database onto my machine all the missing field handlers and menu items magically reappear -- same data, different machine, different result. This means the underlying data is fine, but (likely) the generated/stored cached version is getting truncated or partially filled somehow.
- Tweaked the /etc/php5/conf.d/suhosin.ini settings and restarted Apache but nothing changed...
- Since no PHP errors I assume this is not a max packet size issue for mysql.
I just restarted memcache:
jim@quince:~$ sudo /etc/init.d/memcached restart
Restarting memcached: memcached.
And the site suddenly started working normally again! Menus back,
SO this is a memcache issue - either the config settings aren't quite right, or the Drupal module has a bug. In any case the net result is that Drupal is often working with incorrect/incomplete cached data despite the underlying structures and data being fine. This is because either the output or stored data in memcache is truncated, or what Drupal sends to it is wrong, or it's not being cleared properly when Drupal says it should be.
Passing to Chris, but will keep looking through the Memcache issue list at http://drupal.org/project/issues/memcache