Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.3.1, 1.13
    • Fix Version/s: 2.4, 1.14
    • Component/s: plugin
    • Labels:
      None
    • Patch Info:
      Patch Available
    • Flags:
      Patch

      Description

      While working on upgrading the indexer-elastic plugin from 2.x to 5.x, I ran into several nasty runtime dependency issues (both local and on Hadoop). After seeking help on the mailing list, I still was unable to resolve these issues and after digging further, decided to try a different plugin classloader strategy.

      The normal classloader delegates class loading requests to it's parent classloader. This can cause all sorts of nasty runtime dependency version conflicts (jar hell, version conflicts), since the plugin's own classloader gets queried last. The child-first classloader approach tries to load a class from the plugin's dependencies first and when unavailable, delegates to it's parent classloader. This fixed the issues I had.

      The new approach can give runtime LinkageErrors, but these are easily resolvable (see the patch for a few examples)

      I've tested the new loader a bit and am curious about others' findings.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                wastl-nagel Sebastian Nagel
                Reporter:
                jurian Jurian Broertjes
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: