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

Only invalidate those DynamicClassLoaderManagers which are becoming invalid

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Won't Fix
    • Commons ClassLoader 1.3.2
    • None
    • Commons
    • 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

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

              Dates

                Created:
                Updated:
                Resolved: