Hi Chris,

Does this pull request work for you?
https://github.com/apache/predictionio/pull/482
On Sat, Oct 13, 2018 at 1:11 AM Naoki Takezoe <take...@gmail.com> wrote:
>
> I think the point is that LEventStore doesn't have asynchronous
> methods. We should add methods which return Future to LEventStore and
> modify current blocking methods to take ExecutionContext. I created
> JIRA ticket for that:
> https://jira.apache.org/jira/browse/PIO-182
>
> On the other hand, it makes sense to describe in the documentation. At
> least, we should describe that LEventStore uses the default global
> ExecutionContext and how to configure it if we keep existing blocking
> methods.
>
> 2018年10月12日(金) 16:06 Chris Wewerka <chris.wewe...@gmail.com>:
> >
> > Hi Donald,
> >
> > thanks for your answer and the hint to base off from Naoki's Akka Http 
> > thread. Saw the PR and had the same idea already, as it does not make sense 
> > to base off the old spray code. I worked with spray a couple of years ago 
> > and back then it already had full support for Scala Futures / Fully async 
> > programming. If I get the time I will start with a fork going off Naoki's 
> > Akka HTTP branch.
> >
> > Please have a look at my second mail also, as the usage of the bounded 
> > "standard" Scala Execution context has a dramatic impact of how the 
> > machines resources are leveraged. On our small "All in one" machine we 
> > didn't see much CPU / Load until yesterday when I set the mentioned params 
> > to allow much higher thread counts in the standard Scala Execution context. 
> > We have proven this in our small production environment and it has an huge 
> > impact. In fact the Query Server acted like a water dam, not letting enough 
> > requests in the system to use all of it's resources. You might consider 
> > adding this to the documentation, until I hopefully come up with a PR for 
> > full async engine.
> >
> > Cheers
> > Chris
> >
> > On Fri, 12 Oct 2018 at 02:18, Donald Szeto <don...@apache.org> wrote:
> >>
> >> Hi Chris,
> >>
> >> It is indeed a good idea to create asynchronous versions of the engine 
> >> server! Naoki has recently completed the migration from spray to Akka HTTP 
> >> so you may want to base off from that instead. Let us know if we can help 
> >> in any way.
> >>
> >> I do not recall the exact reason anymore, but engine server was created 
> >> almost 5 years ago, and I don’t remember whether spray could take futures 
> >> natively as responses like Akka HTTP could now. Nowadays there shouldn’t 
> >> be any reason to not provide asynchronous flavors of these APIs.
> >>
> >> Regards,
> >> Donald
> >>
> >> On Thu, Oct 11, 2018 at 3:20 PM Naoki Takezoe <take...@gmail.com> wrote:
> >>>
> >>> Hi Chris,
> >>>
> >>> I think current LEventStore's blocking methods should take 
> >>> ExecutionContext as an implicit parameter and Future version of methods 
> >>> should be provided. I don't know why they aren't. Is there anyone who 
> >>> knows reason for the current LEventStore API?
> >>>
> >>> At the moment, you can consider to use LEvent directly to access Future 
> >>> version of methods as a workaround.
> >>>
> >>> 2018年10月11日(木) 23:05 Chris Wewerka <chris.wewe...@gmail.com>:
> >>>
> >>> >
> >>> > Thanks George, good to hear that!
> >>> >
> >>> > Today I did a test by raising the bar for the max allowed threads in 
> >>> > the "standard"
> >>> >
> >>> > scala.concurrent.ExecutionContext.Implicits.global
> >>> >
> >>> > I did this before calling "pio deploy" by adding
> >>> >
> >>> > export JAVA_OPTS="$JAVA_OPTS -Dscala.concurrent.context.numThreads=1000 
> >>> > -Dscala.concurrent.context.maxThreads=1000"
> >>> >
> >>> > Now we do see much more CPU usage by elasticsearch. So it seems that 
> >>> > the QueryServer by using the standard thread pool bounded to the 
> >>> > available processors acted like a dam.
> >>> >
> >>> > By setting the above values we now have sth. like a traditional Java 
> >>> > JEE or Spring application which blocks thread because of synchronous 
> >>> > calls and creates new threads if there is demand (requests) for it.
> >>> >
> >>> > So this is far from being a good solution. Going full async/reactive is 
> >>> > still the way to go in my opinion.
> >>> >
> >>> > Cheers
> >>> > Chris
> >>> >
> >>> > On Thu, 11 Oct 2018 at 14:07, George Yarish <gyar...@griddynamics.com> 
> >>> > wrote:
> >>> >>
> >>> >>
> >>> >> Hi Chris,
> >>> >>
> >>> >> I'm not a contributor of the predictionio. But want to mention we also 
> >>> >> quite interested in that changes in my company.
> >>> >> We often develop some custom pio engines, and it doesn't look right to 
> >>> >> me to use Await.result with non-blocking api.
> >>> >> Totally agree with your point.
> >>> >> Thanks for the question!
> >>> >>
> >>> >> George
> >>>
> >>>
> >>>
> >>> --
> >>> Naoki Takezoe
>
>
>
> --
> Naoki Takezoe



-- 
Naoki Takezoe

Reply via email to