Guards are honored in Chef when a wrapper uses .run_action on a resource. For execute blocks, this can prevent otherwise idempotent blocks from executing correctly.
Execute mapreduce-jobhistory-done-dir creates /tmp/hadoop-yarn/staging/history/done
Execute yarn-app-mapreduce-am-staging-dir creates /tmp/hadoop-yarn/staging, but only if it doesn't exist
In this case, the yarn.app.mapreduce.am.staging-dir doesn't get its proper permissions set.
This has been merged to master of hadoop_cookbook