Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-22639

ClassLoaderUtil cannot print classpath of FlinkUserCodeClassLoader

    XMLWordPrintableJSON

    Details

      Description

      Hello, community.

      I found FlinkUserCodeClassLoader is wrapping by 

      SafetyNetWrapperClassLoader, but it cut getURL invoking chain.

       

      ClassLoaderUtil.getUserCodeClassLoaderInfo:

      public static String getUserCodeClassLoaderInfo(ClassLoader loader) {
              if (loader instanceof URLClassLoader) {
                  URLClassLoader cl = (URLClassLoader) loader;
      
                  try {
                      StringBuilder bld = new StringBuilder();
      
                      if (cl == ClassLoader.getSystemClassLoader()) {
                          bld.append("System ClassLoader: ");
                      } else {
                          bld.append("URL ClassLoader:");
                      }
      
                      for (URL url : cl.getURLs()) {
                      }
      }
      SafetyNetWrapperClassLoader(FlinkUserCodeClassLoader inner, ClassLoader parent) {
          super(new URL[0], parent);
          this.inner = inner;
      }
      

      The constructor passed an empty array to super class, SafetyNetWrapperClassLoader.getURL should dispatch this invocation.

      @Override
      public URL[] getURLs() {
          return inner.getURLs();
      }
      
      

      Otherwise,  

      ClassLoaderUtil.getUserCodeClassLoaderInfo(theJarClassLoader);
      

      will print empty, like below:

      URL ClassLoader:
      

       
       

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                paul8263 Yao Zhang
                Reporter:
                Adrian Z Adrian Zhong
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: