+1 for removing complexity especially if the sync pattern is being used on
top of the async pattern.
I see this behavior in the AgentManager.send as well -- even thought the
AM 
is capable of async, practically nobody uses it as such.

But I guess the question will arise : what if I do want more than 10^n
long-running storage jobs
(cos my cloud is as successful as AWS :))

On 9/4/13 5:03 PM, "Darren Shepherd" <darren.s.sheph...@gmail.com> wrote:

>I've been reading over the storage code and have come to the conclusion
>that the async aspects of the storage framework should be removed.
>
>Whenever one introduces an async pattern you have to give a lot of
>consideration to its use, benefits, and impact.  Within the context of
>ACS and given the current state of its code, I do not think it will be
>possible to realize any benefits of the current callback approach.
>Since nothing else in ACS uses callbacks, all of the async methods are
>essentially wrapped in synchronous calls.  So nothing as it stands is
>actually async.
>
>Besides the current implementation, you need to conciser how you would
>expect an implementation of the storage framework to use the callback.
>The problem with callbacks is that they assume some in memory state.
>This means if the process/server crashes that state is lost.  Many will
>say just serialize the callback to the DB, but that is very impractical.
>
>Since ACS doesn't actually stand in the data path, an async pattern
>won't really even allow it to have better performance.  ACS is just
>waiting for some storage operation to happen.  ACS can easily spawn 1000
>threads and have them all wait.  If you were to get to this point, you'd
>find that downstream you'll most likely have issues as you have 1000
>create template operations so its killing your filer.  So you will
>throttle storage operations to a level that won't kill your
>infrastructure and that level is no where near the scalability limits of
>threads.
>
>The callbacks pattern really complicates the code and I see no real
>benefit.  Instead of spending a lot of effort trying to make all of ACS
>async to make it beneficial, I'd say that effort should be spent on
>making ACS idempotent and crash-only.  The point being, there's more
>beneficial things we can do with our time.
>
>Given that only solidfire implements the new framework (and ACS legacy
>too), I would assume its a simple things for Edison to just go and
>quickly change it non-async.
>
>Darren

Reply via email to