anyone?

On Jun 10, 11:06 am, Jan  Limpens <[email protected]> wrote:
> Hello,
>
> I was having difficulties with that Facility, so before I dive into
> what could be possibly wrong, I would like to share my code and hope
> somebody spots an error right on, to save me some time debugging...
>
> The trouble is, that if an exception (maybe a specific exception, but
> I am not sure) is thrown withing the transaction, the transaction
> stays open with a lock on the tables and it takes until sql server
> recycles for these tables become responsible again.
>
> The action method is pretty long, so I'll try to reduce it here and
> put the original code @http://pastebin.com/m3144a7e4.
>
>         [Transactional]
>         [Filter(ExecuteWhen.BeforeAction, typeof(AuthenticationFilter))]
>         [Filter(ExecuteWhen.BeforeAction, typeof(RequiresFullCartFilter))]
>         [SecureChannelFilter(true)]
>         public class CheckOutController : BaseController
>         {
>                 [AccessibleThrough(Verb.Post)]
>                 [Transaction(TransactionMode.Requires)]
>                 [return: JSONReturnBinder]
>                 public virtual PlaceOrderViewData PlaceOrder(
>                         [DataBind("viewData.TempOrder")] Order tempOrder,
>                         string selectedFreightOption,
>                         [DataBind("viewData.Card")] CreditCardDTO 
> creditCardDTO,
>                         [DataBind("viewData.Address")] AddressDTO addressDTO,
>                         string bankPaymentOption,
>                         string billingAddress,
>                         string selectedPaymentOption,
>                         Boolean useFreightAsBillingAddress)
>                 {
> // work, work, work
> // I do a million things to construct an correct order out of the
> given params. all this works, so I cut it out here
> // but then I try to send an email....
> try // in a try!
>                         {
> // XXXXXXX
> sendOrderConfirmationMail(candidateOrder);
> // some config error (an iis smtp pickup path that did not exist on
> the server) caused this to fail
> // iis continued responsive
> // but all the tables that were opened in the transaction are locked
> now because the transaction is never committed
> // XXXXXXX
>                         }
>                         catch (Exception ex)
>                         {
> // I have this nowhere in my logs, so my guess is, the http request
> stops here and is killed after a period of time,
> // at the browser level I never received an answer. Only subsequent
> calls give me ado timeout exceptions.
>                                 Logger.Warn("Could not send order 
> confirmation mail.",
> ex.GetInnermostException());
>                                 return new 
> PlaceOrderViewData(ActionResult.Success,
> ExternalMessageFactory.Checkout.OkButCouldNotSendMail, url);
>                         }
>
>                         return new PlaceOrderViewData(ActionResult.Success, 
> "", url);
>                 }
>         }
>
> Now correcting that config also "fixed" the error, but I am still kind
> of spooked that this is possible at all. How can I be certain that
> some exception at a completely different place won't leave my
> transactions open, rendering the whole site useless?
>
> Please mind, I am not blaming any component or author in particular,
> everything might work as expected and I might be doing everything
> wrong. But help and hints would be thankfully accepted.
>
> -- Jan
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to