Details

    • Type: Sub-task
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.5.0
    • Component/s: plastic
    • Labels:
      None

      Description

      I would like to improve page loading time by improving its concurrent execution.

      Here is a first patch related to it: TAP5-2545

      Now the worst place from lock contention point of view is synchronization on PlasticClassLoader. Actually there are two kind of synchronization: synchronized methods in PlasticClassLoader and synchronized (loader) sections in PlasticClassPool.

      Recently most class loaders added support for parallel class loading:
      https://bugs.eclipse.org/bugs/show_bug.cgi?id=464442
      https://bz.apache.org/bugzilla/show_bug.cgi?id=57681

      If we would like to split global lock, then we can use following trick for it.

      We can substitute code like this:

      PlasticClassLoader.java
          public synchronized Class<?> defineClassWithBytecode(String className, byte[] bytecode)
          {
              return defineClass(className, bytecode, 0, bytecode.length);
          }
      

      with following one:

          public Class<?> defineClassWithBytecode(String className, byte[] bytecode)
          {
              synchronized (className.intern())
              {
                  return defineClass(className, bytecode, 0, bytecode.length);
              }
          }
      

      It is just an idea to quickly check solution.

      Can anybody check and discuss idea? Or even better to fix issue.
      I'm not an expert in concurrency and afraid making changes in such a critical place at least before somebody reviewed my idea. So any feedback would be appreciated.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jkemnade Jochen Kemnade
                Reporter:
                mihasik Michael Mikhulya
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: