<div dir="ltr">I'm disposing after use because if i'm not the working memory is not empty between 2 calls right ? And I am saying that I'm using them as a pool because I have 5 sessions that could be used at the same time, which is impossible if I declare only one.<div>
<br><div>If you have recommandation for my use case, please tell me as I found nothing in the doc about this.</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-13 22:42 GMT+02:00 Mark Proctor <span dir="ltr"><<a href="mailto:mproctor@codehaus.org" target="_blank">mproctor@codehaus.org</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">as it says in the docs. we’ve designed things to put in foundations for future multi-threaded exploitation, but there is nothing there now.<div>
<br></div><div>The example code doesn’t make too much sense to me. As you are saying you are using them as a pool, but you are disposing after use.</div><span class="HOEnZb"><font color="#888888"><div><br></div></font></span><div>
<span class="HOEnZb"><font color="#888888">Mark</font></span><div><div class="h5"><br><div><div>On 11 Apr 2014, at 08:48, Mercier Jonathan <<a href="mailto:jmercier@genoscope.cns.fr" target="_blank">jmercier@genoscope.cns.fr</a>> wrote:</div>
<br><blockquote type="cite">
<div text="#000000" bgcolor="#FFFFFF">
<div>Le 09/04/2014 11:20, Maxime Falaize a
écrit :<br>
</div>
<blockquote type="cite">
<div dir="ltr">I confirm that the multithreaded rules evaluation
is not currently supported. See <a href="https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/RuleBaseConfiguration.java#L683" target="_blank">https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/RuleBaseConfiguration.java#L683</a><br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2014-04-07 12:27 GMT+02:00 Maxime
Falaize <span dir="ltr"><<a href="mailto:maxime.falaize@gmail.com" target="_blank">maxime.falaize@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I'm sorry but I don't understand what you are
talking about. In this article, there is nothing about
multithreaded rules evaluation. It just says that the
Phreak algorithm is designed for thread safety and <b>future</b>
multicore processors exploitation. It doesn't mean that it
is already multithreaded. Moreover I tested my
appliciation with and without multithreaded sessions (I am
using Drools 6.0.1.Final) and I noted a faster execution
in the multithreaded one.</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2014-04-04 13:53 GMT+02:00
jmercier <span dir="ltr"><<a href="mailto:jmercier@genoscope.cns.fr" target="_blank">jmercier@genoscope.cns.fr</a>></span>:
<div>
<div>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Le 04/03/2014 09:55, Maxime Falaize a écrit :<br>
<div>
<div>> Hello,<br>
><br>
> I want to ask you if it is a good
practive to pool stateful sessions<br>
> for a specific ruleset to improve the
execution performance.<br>
> Actually in my application I execute my
rules by calling SOAP<br>
> webservice. For performance purpose, I
test multithreaded calls to my<br>
> webservice and I noted that when I pool
sessions in the server side,<br>
> it improves the performance a lot.<br>
><br>
> To pool sessions, I just declare multiple
ksession tag in my<br>
> kmodule.xml :<br>
><br>
> <kbase name="KBase"
packages="com.example.*"><br>
> <ksession
name="KSession1"/><br>
> <ksession
name="KSession2"/><br>
> <ksession
name="KSession3"/><br>
> <ksession
name="KSession4"/><br>
> <ksession
name="KSession5"/><br>
> </kbase><br>
><br>
> In my spring webservice endpoint I just
put that code to handle the<br>
> pool :<br>
><br>
> @Endpoint<br>
> public class ExampleEndpoint implements
InitializingBean {<br>
><br>
> @Autowired<br>
> private ExampleRuleService
ruleService;<br>
> private Map<Integer, Boolean>
isRunningMap = new<br>
> HashMap<Integer, Boolean>();<br>
> private static final int
NB_POOL_SESSIONS = 5;<br>
><br>
> @PayloadRoot(localPart =
"com.example.ExampleRequest")<br>
> @ResponsePayload<br>
> public ExampleResponse handleRequest(<br>
> @RequestPayload
ExampleRequest request) throws<br>
> InterruptedException {<br>
> KieServices ks =
KieServices.Factory.get();<br>
> KieContainer kc =
ks.getKieClasspathContainer();<br>
> while (true) {<br>
> for (int i = 0; i <
NB_POOL_SESSIONS; i++) {<br>
> boolean run = false;<br>
><br>
> synchronized
(isRunningMap) {<br>
> if
(!isRunningMap.get(i)) {<br>
>
isRunningMap.put(i, true);<br>
> run = true;<br>
> }<br>
> }<br>
><br>
> if (run) {<br>
> KieSession ksession =
kc.newKieSession("KSession"<br>
> + (i + 1));<br>
> ExampleResponse
response =<br>
> ruleService.run(ksession, request);<br>
> ksession.dispose();<br>
><br>
> isRunningMap.put(i,
false);<br>
> return response;<br>
> }<br>
> }<br>
> Thread.sleep(100);<br>
> }<br>
> }<br>
><br>
> public void afterPropertiesSet()
throws Exception {<br>
> for (int i = 1; i <=
NB_POOL_SESSIONS; i++) {<br>
> isRunningMap.put((i - 1),
false);<br>
> }<br>
> }<br>
><br>
> }<br>
><br>
> It works well because in my benchmark I
improve 5 times the<br>
> performance (as I have 5 different
threads) but I wondered if it is a<br>
> good practice and if it does not hide any
issues that I could have in<br>
> the future.<br>
><br>
> Thanks for your help.<br>
><br>
> --<br>
> Maxime FALAIZE<br>
</div>
</div>
>
_______________________________________________<br>
> rules-users mailing list<br>
> <a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br>
<br>
Hi maxime,<br>
<br>
I do not remember if use drools 6 or drools 5. If
you using drools 6.<br>
Phreaks algorithm use multi threading according to
use 'from<br>
accummulate' far i understand here:<br>
<a href="http://planet.jboss.org/post/drools_6_performance_with_the_phreak_algorithm" target="_blank">http://planet.jboss.org/post/drools_6_performance_with_the_phreak_algorithm</a><br>
<br>
Instead to put a thread by ksession here rules
evaluation are<br>
multi-threaded.<br>
<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></blockquote>
</div>
</div>
</div>
<span><font color="#888888"><br>
<br clear="all">
<div><br>
</div>
-- <br>
Maxime FALAIZE
</font></span></div>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
Maxime FALAIZE
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
rules-users mailing list
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
Ah yes. Maybe Mark Proktor could tell some information about this<br>
</div>
_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></blockquote>
</div><br></div></div></div></div><br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Maxime FALAIZE
</div>