Okay, thanks for the notification. I'll close the bug for now -- we can re-open if there is any nashorn issue identified during the work you do on handlebars.

Thanks,
-Sundar

On Monday 01 June 2015 05:35 PM, Sebastien Deleuze wrote:
See Handlebars developers feedback [1].

As suggested before, Handlerbars is not designed with concurrency in mind,
but they may accept some pull requests to improve that if that means no
regression for other regular users.
I will try to have a look to at least identify what should be done and have
an idea of the amount of work needed to fix that.

[1]
https://github.com/wycats/handlebars.js/issues/1031#issuecomment-107271075

On Tue, May 26, 2015 at 7:50 AM, A. Sundararajan <
[email protected]> wrote:

Oops. double negative :)

/but the compiled handlebars function may not be MT-unsafe./

should have been

"but the compiled handlebars function may not be MT-safe".

-Sundar


On Tuesday 26 May 2015 11:15 AM, A. Sundararajan wrote:

Actually either the Handlebars.compile or the compiled function could be
MT-unsafe. FWIW, I tried the following change to handlebars's render.js
script:

function renderHandlebars(template, model) {

     // Create a real Javascript Object from the model Map
     var data = {};
     for (var k in model) {
         // Convert Java Iterable and List to real Javascript arrays
         if (model[k] instanceof Java.type("java.lang.Iterable")) {
             data[k] = Java.from(model[k]);
         } else {
             data[k] = model[k];
         }
     }
     // TODO Manage compiled template cache
     var compiledTemplate = Handlebars.compile(template);

     // call compiled template function as synchronized
     // use Handlebars object as lock

     return Java.synchronized(function(data) {
         compiledTemplate(data);
     }, Handlebars);
}

With that change, it appears handlebars MT-usage seems fine [i.e., no
exception seen]. This suggests that the Handlebars.compile itself is
MT-safe but the compiled handlebars function may not be MT-unsafe. FYI.



Reply via email to