Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-4685

Hardcoded path when creating Bootstrap ClassLoader in Nifi

    XMLWordPrintableJSON

Details

    Description

      Found a hardcoded path to lib/bootstrap in org.apache.nifi.NiFi class when calling createBootstrapClassLoader() :

      private static ClassLoader createBootstrapClassLoader() throws IOException {
              //Get list of files in bootstrap folder
              final List<URL> urls = new ArrayList<>();
              Files.list(Paths.get({color:red}_"lib/bootstrap"_{color})).forEach(p -> {
                  try {
                      urls.add(p.toUri().toURL());
                  } catch (final MalformedURLException mef) {
                      LOGGER.warn("Unable to load " + p.getFileName() + " due to " + mef, mef);
                  }
              });
              //Create the bootstrap classloader
              return new URLClassLoader(urls.toArray(new URL[0]), Thread.currentThread().getContextClassLoader());
          }
      

      There are multiple places where the .\lib directory is defined:

      • BOOTSTRAP_LIBS or %LIB_DIR% environment variables in nifi.sh or run-nifi.bat
      • lib.dir in bootstrap.conf is most likely it
      • nifi.nar.library.directory or nifi.web.war.directory identify the library folder but don't quite refer to the bootstrap

      Perhaps using lib.dir in bootstrap.conf or create a new lib.bootstrap.dir property.

      Using different library folders would allow configuring multiple instances of Nifi using the same resource. I managed changing the properties and environment variables above to point to a common lib directory but this harcoded prevented run-nifi.bat to run successfully. dump-nifi.bat and status-nifi.bat ran without issue.

      Attachments

        Activity

          People

            Unassigned Unassigned
            sflorea Sorin Florea
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: