Uploaded image for project: 'Sling'
  1. Sling
  2. SLING-4806

Only invalidate those DynamicClassLoaderManagers which are becoming invalid

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: Commons ClassLoader 1.3.2
    • Fix Version/s: None
    • Component/s: Commons
    • Labels:
      None

      Description

      Currently all DynamicClassLoaderManagers become invalid if

      1. a new bundle has been started which provides packages which have been previously unresolvable by any of the DynamicClassLoader s or if
      2. a bundle is no longer active which used to provide at least one class being loaded through one of the DynamicClassLoader s.
        In that case the DynamicClassLoaderManagerFactory is first unregistered and then reregistered (https://github.com/apache/sling/blob/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java#L134)

      The whole refresh logic is IMHO only necessary because the JRE caches all classes being requested through a classloader.

      The invalidation could be improved by only reregistering those DynamicClassLoaderManagers which have been used to

      1. load a class which was not available in the past but may be now available (due to a new bundle)
      2. load a class which was provided through a bundle which is now no longer being available

        Attachments

        1. SLING-4806-notworking.patch
          14 kB
          Konrad Windszus

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                kwin Konrad Windszus
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: