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

Only invalidate those DynamicClassLoaderManagers which are becoming invalid

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 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

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            kwin Konrad Windszus

            Dates

              Created:
              Updated:

              Slack

                Issue deployment