Tiles
  1. Tiles
  2. TILES-204

UrlDefinitionFactory crashes during getDefinitions on multiple requests

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 2.0.4
    • Fix Version/s: 2.0.5
    • Component/s: tiles-core
    • Labels:
      None
    • Environment:

      tomcat 5.5

    • Flags:
      Patch

      Description

      consider the following: tiles is initialized using the org.apache.tiles.definition.UrlDefinitionsFactory default definitions factory.

      now, when a request receives and the tiles container is instructed to render a specific tiles definition, the following happens (the interessing parts):

      1. invoke 'Definition getDefinition(String name, TilesRequestContext tilesContext)' of UrlDefinitionFactory.
      2. from there invoke 'Definitions getDefinitions()' of UrlDefinitionFactory.
      3. if the instance attribute 'definitions' is null, from there invoke 'Definitions readDefinitions()' of UrlDefinitionFactory.

      within the third call the configuration is actually parsed and the beans/instances/what ever defined within the configuration file(s) are getting created.
      unfortunatelly the UrlDefinitionFactory does not synchronize the call to the 'Definitions readDefinitions()' method. the result is, if there are multiple request reaching the servlet container at once and there has no other request been received so long, we get into classical multithreading problematics where each thread is bothering the others and the process of creating the definitions list crashs.

      1. UrlDefinitionsFactory.diff
        0.5 kB
        Dirk Alexander Schaefer

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Antonio Petrelli
            Reporter:
            Dirk Alexander Schaefer
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development