Reading $product->id or $order->billing_email has worked since the plugin existed, because they were public properties on an object wrapping a post. 3.0 makes them private with a magic getter that emits a deprecation notice, and every custom template starts talking.
// 2.6 and every tutorial written before April
$id = $product->id;
$price = get_post_meta( $product->id, '_price', true );
// 3.0
$id = $product->get_id();
$price = $product->get_price();
The notices are the easy part — they name the file and the line. The hard part is code that wrote meta directly, because there is no notice for a write that no longer reaches the object’s internal state. A price set with update_post_meta() is invisible to a product loaded through the CRUD layer until the cache is cleared, and sometimes not then.