Clarification needed : is there any blocking constraint in Orchard architecture which could prevent us using async controllers and methods

Topics: Customizing Orchard, General, Writing modules
Oct 4, 2015 at 2:15 PM
Just to know because I deal with assemblies installing a default async controller and have freeze problems with it.
Thanks to the usual Orchard gurus.
Developer
Oct 4, 2015 at 3:54 PM
Oct 4, 2015 at 4:09 PM
Well in 2012 it was not OK.
There was something suggested

"I strongly needed to have AsyncController which i easily changed FilterResolvingActionInvoker to be based on AsyncControllerActionInvoker instead of ControllerActionInvoker.

But there was other problems because of automatic transaction disposal after completion of request. in AsyncController starting thread and the thread that completes the request can be different which throws following exception in Dispose method of TransactionManager class:
A TransactionScope must be disposed on the same thread that it was created.

This exception is suppressed without any logging and really was hard to find out. in this case session remains not-disposed and subsequent sessions will timeout.
so i made dispose method public on ITransactionManager and now in my AsyncController, whenever i need a query to database i wrap it in:

using (_services.TransactionManager) {
.....
}

i think this is a simple feature that can be used in Orchard."


But as this is still an issue....
Oct 4, 2015 at 4:11 PM
Poor always sync Orchard.....