Take a look at the answer provided by warwickshaw on D.O https://www.drupal.org/node/2241311#comment-8791165
To fix the error message: 'The form has become outdated. ...' try
moving the 'drupal_private_key' in to the Drupal 7 settings.php file.
The Issue See
drupal_get_private_key() is not a safe function.
When variable_get() doesn't return a $key (some outage, maybe a
memcached restarted) you suddenly and silently get assigned a new
If you are using multiple server Drupal system where each server has
it's own MySql database replicated from a Master DB, a Slave DB can
end up with it's own key (which Master doesn't see) and when the slave
gets it's key cached in memcached the fun begins.
Mean while back in the D7 Admin, forms and menus that once worked
The Fix The only safe place in D7 whether using a single or
multi-server setup is to move 'drupal_private_key' value to the
Add $conf['drupal_private_key'] = '...';
To get the value execute on the Staging server (MySql master) drush ev
'print drupal_get_private_key();' and assign the value above.
You should have something like this (these are example values, don't
use) $drupal_hash_salt =
Check the hash_salt is behaving correctly (should match
$drupal_hash_salt) drush ev 'print drupal_get_hash_salt();'
Copy these setting to all other servers in the same Drupal cluster.
On Stage update 'drupal_private_key' row with value used in the
settings.php file. This will replicate and reset any MySql slaves out
of sync. update variable set value = '[drupal_private_key]' where name
On Stage execute drush cc all
Clear your browser cache.
You are good to go!
New D7 Projects When ever you create a new Drupal project make this
the first task after installation.
Other Symptoms of the Same Bug Multiple Save, Cancel buttons appears
after clicking Save or Cancel in Page layouts.