Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-7663

Make the supported locales initialization thread-safe

    XMLWordPrintable

    Details

      Description

      The Gadgeti18n#supportedLang initialization is not thread-safe and after being wrapped in the Freemarker wrapper class we randomly end up with the following stacktrace when loading the OpenSocial dashboard:

      freemarker.core.InvalidReferenceException: Expression lang is undefined on line 2, column 23 in dynamic-translations.ftl.
      	at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
      	at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134)
      	at freemarker.core.Dot._getAsTemplateModel(Dot.java:78)
      	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
      	at freemarker.core.Expression.getStringValue(Expression.java:93)
      	at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
      	at freemarker.core.Environment.visit(Environment.java:208)
      	at freemarker.core.MixedContent.accept(MixedContent.java:92)
      	at freemarker.core.Environment.visit(Environment.java:208)
      	at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
      	at freemarker.core.Environment.visit(Environment.java:415)
      	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
      	at freemarker.core.Environment.visit(Environment.java:208)
      	at freemarker.core.MixedContent.accept(MixedContent.java:92)
      	at freemarker.core.Environment.visit(Environment.java:208)
      	at freemarker.core.Environment.include(Environment.java:1477)
      	at freemarker.core.Include.accept(Include.java:169)
      	at freemarker.core.Environment.visit(Environment.java:208)
      	at freemarker.core.MixedContent.accept(MixedContent.java:92)
      	at freemarker.core.Environment.visit(Environment.java:208)
      	at freemarker.core.Environment.process(Environment.java:188)
      	at org.nuxeo.ecm.platform.rendering.fm.FreemarkerEngine.render(FreemarkerEngine.java:183)
      	at org.nuxeo.opensocial.webengine.gadgets.render.GadgetSpecView.render(GadgetSpecView.java:187)
      	at org.nuxeo.opensocial.webengine.gadgets.GadgetResource.getGadgetFile(GadgetResource.java:63)
      	...
      2011-09-29 03:24:30,752 ERROR [freemarker.runtime] 
      Expression lang is undefined on line 2, column 23 in dynamic-translations.ftl.
      The problematic instruction:
      ----------
      ==> ${lang.language} [on line 2, column 21 in dynamic-translations.ftl]
       in include "dynamic-translations.ftl" [on line 11, column 5 in gadget://userworkspaces]
      ----------
      

      The supportedLang field can be statically initialized to avoid this issue.

        Attachments

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 4 hours
                4h