Well, you can certainly learn something new about Drupal everyday. I spent a good bit of time trying to figure out why I couldn't perform a simple field value update to a few nodes in an application. So, node_save() was running without error, and nothing I attempted to update in the node object or related fields would save.
After some investigation, I noticed these problem nodes were originally created without a defined language property (
$node->language). I just happened to see this by looking at the "node" table and sorting by the language field in the Drupal database. While Drupal allowed the application create the original nodes without setting the language property, it led to issues when performing an update to the node. My conclusion is that the language property should always be set.
Below I have some examples which illustrate saving a new node and updating an existing node with
$node->language set properly.