Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-595

ResourceManagerImpl.getResource() causes locking issues

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.5
    • 1.6
    • Engine
    • None
    • jdk 1.5

    Description

      The ResourceManagerImpl.getResource() method is synchronized, which makes it difficult to share a Velocity Runtime between threads in an environment such as a j2ee web application.

      After upgrading Velocity to version 1.5 in Roller and running some performance tests I saw a very noticeable decrease in throughput for the application. I fired up jconsole and noticed that almost all of my app server threads were in a BLOCKED state and were waiting on the ResourceManagerImpl.getResource() method.

      In my particular case the difference resulted in a loss of 2/3 of my original ops/sec, which is pretty huge. After simply switching Velocity back to the 1.4 release and rerunning the test I saw the results I expected.

      I assume this is overactive use of Java synchronization because the developer guide suggests that the singleton model is "very appropriate model for use in a Servlet 2.2+ compliant web application".

      Attachments

        1. VELOCITY-595.patch
          2 kB
          Nathan Bubna
        2. VELOCITY-595.jarkko.patch
          8 kB
          Nathan Bubna

        Issue Links

          Activity

            People

              Unassigned Unassigned
              agilliland Allen T. Gilliland IV
              Votes:
              1 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: