message: throw from apply_block if pushing a scheduled/input transaction fails
diff: @@ -792,18 +792,25 @@ struct controller_impl {
  FC_ASSERT( b->block_extensions.size() == 0, "no supported extensions" );
  start_block( b->timestamp, b->confirmed, s );
  + transaction_trace_ptr trace;
  +
  for( const auto& receipt : b->transactions ) {
  auto num_pending_receipts = pending->_pending_block_state->block->transactions.size();
  if( receipt.trx.contains<packed_transaction>() ) {
  auto& pt = receipt.trx.get<packed_transaction>();
  auto mtrx = std::make_shared<transaction_metadata>(pt);
  - push_transaction( mtrx, fc::time_point::maximum(), false, receipt.cpu_usage_us );
  + trace = push_transaction( mtrx, fc::time_point::maximum(), false, receipt.cpu_usage_us );
  } else if( receipt.trx.contains<transaction_id_type>() ) {
  - push_scheduled_transaction( receipt.trx.get<transaction_id_type>(), fc::time_point::maximum(), receipt.cpu_usage_us );
  + trace = push_scheduled_transaction( receipt.trx.get<transaction_id_type>(), fc::time_point::maximum(), receipt.cpu_usage_us );
  } else {
  EOS_ASSERT( false, block_validate_exception, "encountered unexpected receipt type" );
  }
  + if( trace && trace->except ) {
  + edump((*trace));
  + throw *trace->except;
  + }
  +
  EOS_ASSERT( pending->_pending_block_state->block->transactions.size() > 0,
  block_validate_exception, "expected a receipt",
  ("block", *b)("expected_receipt", receipt)
  