You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by se...@apache.org on 2021/04/19 02:09:30 UTC

[bigtop] branch master updated: BIGTOP-3485. Bump Solr to v8.7.0. (#765)

This is an automated email from the ASF dual-hosted git repository.

sekikn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bigtop.git


The following commit(s) were added to refs/heads/master by this push:
     new c4b6fef  BIGTOP-3485. Bump Solr to v8.7.0. (#765)
c4b6fef is described below

commit c4b6fef387583ccfdcaa626bc6da33785d461abd
Author: Masatake Iwasaki <iw...@apache.org>
AuthorDate: Mon Apr 19 11:09:24 2021 +0900

    BIGTOP-3485. Bump Solr to v8.7.0. (#765)
---
 bigtop-packages/src/common/solr/do-component-build |   8 +-
 bigtop-packages/src/common/solr/install_solr.sh    |   2 +-
 .../common/solr/patch0-SOLR-14663-backport.diff    | 604 ---------------------
 bigtop-packages/src/common/solr/solr.default       |   2 +-
 bigtop-packages/src/common/solr/solrctl.sh         |   5 +
 bigtop-packages/src/common/solr/solrd              |   7 +-
 bigtop-tests/smoke-tests/solr/build.gradle         |   4 +
 .../package/src/main/resources/apt/solr-doc.xml    |  46 +-
 .../package/src/main/resources/apt/solr.xml        |   3 +-
 .../package/src/main/resources/yum/solr-doc.xml    |  46 +-
 .../package/src/main/resources/yum/solr.xml        |   3 +-
 .../package/src/main/resources/zypper/solr-doc.xml |  46 +-
 .../package/src/main/resources/zypper/solr.xml     |   3 +-
 bigtop.bom                                         |   2 +-
 14 files changed, 24 insertions(+), 757 deletions(-)

diff --git a/bigtop-packages/src/common/solr/do-component-build b/bigtop-packages/src/common/solr/do-component-build
index 7facbc1..9e8d8ef 100755
--- a/bigtop-packages/src/common/solr/do-component-build
+++ b/bigtop-packages/src/common/solr/do-component-build
@@ -20,19 +20,14 @@ set -ex
 
 IVY_MIRROR_PROP=${IVY_MIRROR_PROP:-https://repo1.maven.org/maven2}
 BUILD_OPTS="-Dversion=${FULL_VERSION} -Dhadoop.version=${HADOOP_VERSION} \
-            -Dslf4j.binding=slf4j-log4j12 -Dexclude.from.war=nothing   \
+            -Dexclude.from.war=nothing   \
             -Divy.home=${HOME}/.ivy2 -Drepo.maven.org=$IVY_MIRROR_PROP \
             -Divy_bootstrap_url1=$IVY_MIRROR_PROP \
             -Divy_install_path=${HOME}/.ant/lib -lib ${HOME}/.ant/lib  \
             -Dreactor.repo=file://${HOME}/.m2/repository"
 
-# FIXME: the following really needs to be made flexible at the product level
-sed -i -e '/<dependency org="org.mortbay.jetty" name="jetty"/s#/ *>#>#' solr/core/ivy.xml
-sed -i -e '/<dependency org="org.mortbay.jetty" name="jetty"/a<artifact name="jetty" ext="jar"/></dependency>' solr/core/ivy.xml
-
 # FIXME: this needs to be fixed at the product level
 ant $BUILD_OPTS ivy-bootstrap
-mkdir -p solr/test-framework/lib || :
 
 ant $BUILD_OPTS clean
 
@@ -47,7 +42,6 @@ mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -Dartif
 mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-dataimporthandler -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-dataimporthandler-$SOLR_VERSION.jar
 mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-analysis-extras -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-analysis-extras-$SOLR_VERSION.jar
 mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-solrj -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-solrj-$SOLR_VERSION.jar
-mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-uima -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-uima-$SOLR_VERSION.jar
 mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-test-framework -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-test-framework-$SOLR_VERSION.jar
 mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-cell -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-cell-$SOLR_VERSION.jar
 mvn install:install-file -DcreateChecksum=true -DgroupId=org.apache.solr -DartifactId=solr-clustering -Dversion=$SOLR_VERSION -Dpackaging=jar -Dfile=solr/dist/solr-clustering-$SOLR_VERSION.jar
diff --git a/bigtop-packages/src/common/solr/install_solr.sh b/bigtop-packages/src/common/solr/install_solr.sh
index e0a842c..fe84a6f 100644
--- a/bigtop-packages/src/common/solr/install_solr.sh
+++ b/bigtop-packages/src/common/solr/install_solr.sh
@@ -139,7 +139,7 @@ cp -ra ${BUILD_DIR}/example/ $PREFIX/$DOC_DIR/
 install -d -m 0755 $PREFIX/$DEFAULT_DIR
 cp $DISTRO_DIR/solr.default $PREFIX/$DEFAULT_DIR/solr
 install -d -m 0755 $PREFIX/${CONF_DIR}.dist
-cp -a ${BUILD_DIR}/server/resources/log4j.properties $PREFIX/${CONF_DIR}.dist
+cp -a ${BUILD_DIR}/server/resources/* $PREFIX/${CONF_DIR}.dist
 
 # Copy in the wrapper
 cp -a ${DISTRO_DIR}/solrd $PREFIX/$LIB_DIR/bin/solrd
diff --git a/bigtop-packages/src/common/solr/patch0-SOLR-14663-backport.diff b/bigtop-packages/src/common/solr/patch0-SOLR-14663-backport.diff
deleted file mode 100644
index 3733636..0000000
--- a/bigtop-packages/src/common/solr/patch0-SOLR-14663-backport.diff
+++ /dev/null
@@ -1,604 +0,0 @@
-diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
-index 387f260dae5..f16fae10efc 100644
---- a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
-+++ b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
-@@ -20,9 +20,11 @@ import java.io.InputStream;
- import java.lang.invoke.MethodHandles;
- import java.nio.charset.StandardCharsets;
- import java.util.Collection;
-+import java.util.Collections;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
-+import java.util.Set;
- import java.util.concurrent.TimeUnit;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
-@@ -71,6 +73,8 @@ import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
-  * A {@link org.apache.solr.request.SolrRequestHandler} for ConfigSets API requests.
-  */
- public class ConfigSetsHandler extends RequestHandlerBase implements PermissionNameProvider {
-+  final public static Boolean DISABLE_CREATE_AUTH_CHECKS = Boolean.getBoolean("solr.disableConfigSetsCreateAuthChecks"); // this is for back compat only
-+  final public static String DEFAULT_CONFIGSET_NAME = "_default";
-   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-   protected final CoreContainer coreContainer;
-   public static long DEFAULT_ZK_TIMEOUT = 300*1000;
-@@ -151,7 +155,8 @@ public class ConfigSetsHandler extends RequestHandlerBase implements PermissionN
-     SolrZkClient zkClient = coreContainer.getZkController().getZkClient();
-     String configPathInZk = ZkConfigManager.CONFIGS_ZKNODE + Path.SEPARATOR + configSetName;
- 
--    if (zkClient.exists(configPathInZk, true)) {
-+    boolean overwritesExisting = zkClient.exists(configPathInZk, true);
-+    if (overwritesExisting) {
-       throw new SolrException(ErrorCode.BAD_REQUEST,
-           "The configuration " + configSetName + " already exists in zookeeper");
-     }
-@@ -166,31 +171,96 @@ public class ConfigSetsHandler extends RequestHandlerBase implements PermissionN
-     InputStream inputStream = contentStreamsIterator.next().getStream();
- 
-     // Create a node for the configuration in zookeeper
--    boolean trusted = getTrusted(req);
--    zkClient.makePath(configPathInZk, ("{\"trusted\": " + Boolean.toString(trusted) + "}").
--        getBytes(StandardCharsets.UTF_8), true);
-+    Set<String> filesToDelete = Collections.emptySet();
-+    createBaseZnode(zkClient, overwritesExisting, isTrusted(req, coreContainer.getAuthenticationPlugin()), false, configPathInZk);
- 
-     ZipInputStream zis = new ZipInputStream(inputStream, StandardCharsets.UTF_8);
-     ZipEntry zipEntry = null;
-     while ((zipEntry = zis.getNextEntry()) != null) {
-       String filePathInZk = configPathInZk + "/" + zipEntry.getName();
-+      if (filePathInZk.endsWith("/")) {
-+        filesToDelete.remove(filePathInZk.substring(0, filePathInZk.length() -1));
-+      } else {
-+        filesToDelete.remove(filePathInZk);
-+      }
-       if (zipEntry.isDirectory()) {
--        zkClient.makePath(filePathInZk, true);
-+        zkClient.makePath(filePathInZk, false, true);
-       } else {
-         createZkNodeIfNotExistsAndSetData(zkClient, filePathInZk,
-             IOUtils.toByteArray(zis));
-       }
-     }
-     zis.close();
-+    deleteUnusedFiles(zkClient, filesToDelete);
-+  }
-+
-+  private void createBaseZnode(SolrZkClient zkClient, boolean overwritesExisting, boolean requestIsTrusted, boolean cleanup, String configPathInZk) throws KeeperException, InterruptedException {
-+    byte[] baseZnodeData =  ("{\"trusted\": " + Boolean.toString(requestIsTrusted) + "}").getBytes(StandardCharsets.UTF_8);
-+
-+    if (overwritesExisting) {
-+      if (cleanup && requestIsTrusted) {
-+        zkClient.setData(configPathInZk, baseZnodeData, true);
-+      } else if (!requestIsTrusted) {
-+        ensureOverwritingUntrustedConfigSet(zkClient, configPathInZk);
-+      }
-+    } else {
-+      zkClient.makePath(configPathInZk, baseZnodeData, true);
-+    }
-   }
- 
--  boolean getTrusted(SolrQueryRequest req) {
--    AuthenticationPlugin authcPlugin = coreContainer.getAuthenticationPlugin();
-+  private void deleteUnusedFiles(SolrZkClient zkClient, Set<String> filesToDelete) throws InterruptedException, KeeperException {
-+    if (!filesToDelete.isEmpty()) {
-+      if (log.isInfoEnabled()) {
-+        log.info("Cleaning up {} unused files", filesToDelete.size());
-+      }
-+      if (log.isDebugEnabled()) {
-+        log.debug("Cleaning up unused files: {}", filesToDelete);
-+      }
-+      for (String f:filesToDelete) {
-+        try {
-+          zkClient.delete(f, -1, true);
-+        } catch (KeeperException.NoNodeException nne) {
-+        }
-+      }
-+    }
-+  }
-+
-+  /*
-+   * Fail if an untrusted request tries to update a trusted ConfigSet
-+   */
-+  private void ensureOverwritingUntrustedConfigSet(SolrZkClient zkClient, String configSetZkPath) {
-+    boolean isCurrentlyTrusted = isCurrentlyTrusted(zkClient, configSetZkPath);
-+    if (isCurrentlyTrusted) {
-+      throw new SolrException(ErrorCode.BAD_REQUEST, "Trying to make an unstrusted ConfigSet update on a trusted configSet");
-+    }
-+  }
-+
-+  private static boolean isCurrentlyTrusted(SolrZkClient zkClient, String configSetZkPath) {
-+    byte[] configSetNodeContent;
-+    try {
-+      configSetNodeContent = zkClient.getData(configSetZkPath, null, null, true);
-+      if (configSetNodeContent == null || configSetNodeContent.length == 0) {
-+        return true;
-+      }
-+    } catch (KeeperException e) {
-+      throw new SolrException(ErrorCode.SERVER_ERROR, "Exception while fetching current configSet at " + configSetZkPath, e);
-+    } catch (InterruptedException e) {
-+      Thread.currentThread().interrupt();
-+      throw new SolrException(ErrorCode.SERVER_ERROR, "Interrupted while fetching current configSet at " + configSetZkPath, e);
-+    }
-+    @SuppressWarnings("unchecked")
-+    Map<Object, Object> contentMap = (Map<Object, Object>) Utils.fromJSON(configSetNodeContent);
-+    return (boolean) contentMap.getOrDefault("trusted", true);
-+  }
-+
-+  static boolean isTrusted(SolrQueryRequest req, AuthenticationPlugin authPlugin) {
-     log.info("Trying to upload a configset. authcPlugin: {}, user principal: {}",
--        authcPlugin, req.getUserPrincipal());
--    if (authcPlugin != null && req.getUserPrincipal() != null) {
-+        authPlugin, req.getUserPrincipal());
-+    if (authPlugin != null && req.getUserPrincipal() != null) {
-+      log.debug("Trusted configset request");
-       return true;
-     }
-+    log.debug("Untrusted configset request");
-     return false;
-   }
- 
-@@ -259,7 +329,31 @@ public class ConfigSetsHandler extends RequestHandlerBase implements PermissionN
-     CREATE_OP(CREATE) {
-       @Override
-       Map<String, Object> call(SolrQueryRequest req, SolrQueryResponse rsp, ConfigSetsHandler h) throws Exception {
--        Map<String, Object> props = req.getParams().required().getAll(null, NAME, BASE_CONFIGSET);
-+        String baseConfigSetName = req.getParams().get(BASE_CONFIGSET, DEFAULT_CONFIGSET_NAME);
-+        String newConfigSetName = req.getParams().get(NAME);
-+        if (newConfigSetName == null || newConfigSetName.length() == 0) {
-+          throw new SolrException(ErrorCode.BAD_REQUEST, "ConfigSet name not specified");
-+        }
-+
-+        ZkConfigManager zkConfigManager = new ZkConfigManager(h.coreContainer.getZkController().getZkStateReader().getZkClient());
-+        if (zkConfigManager.configExists(newConfigSetName)) {
-+          throw new SolrException(ErrorCode.BAD_REQUEST, "ConfigSet already exists: " + newConfigSetName);
-+        }
-+
-+        // is there a base config that already exists
-+        if (!zkConfigManager.configExists(baseConfigSetName)) {
-+          throw new SolrException(ErrorCode.BAD_REQUEST,
-+                  "Base ConfigSet does not exist: " + baseConfigSetName);
-+        }
-+
-+        Map<String, Object> props = req.getParams().required().getAll(null, NAME);//CollectionsHandler.copy(req.getParams().required(), null, NAME);
-+        props.put(BASE_CONFIGSET, baseConfigSetName);
-+        if (!DISABLE_CREATE_AUTH_CHECKS &&
-+                !isTrusted(req, h.coreContainer.getAuthenticationPlugin()) &&
-+                isCurrentlyTrusted(h.coreContainer.getZkController().getZkClient(), ZkConfigManager.CONFIGS_ZKNODE + "/" +  baseConfigSetName)) {
-+          throw new SolrException(ErrorCode.UNAUTHORIZED, "Can't create a configset with an unauthenticated request from a trusted " + BASE_CONFIGSET);
-+        }
-+
-         return copyPropertiesWithPrefix(req.getParams(), props, PROPERTY_PREFIX + ".");
-       }
-     },
-diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
-index 5a01c6cc054..f75b5ac508c 100644
---- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
-+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
-@@ -36,6 +36,7 @@ import java.nio.ByteBuffer;
- import java.nio.charset.StandardCharsets;
- import java.util.Arrays;
- import java.util.Collection;
-+import java.util.Collections;
- import java.util.Deque;
- import java.util.HashSet;
- import java.util.Iterator;
-@@ -45,6 +46,7 @@ import java.util.Properties;
- import java.util.Set;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipOutputStream;
-+import java.util.Locale;
- 
- import org.apache.commons.io.FileUtils;
- import org.apache.http.HttpEntity;
-@@ -85,6 +87,7 @@ import org.apache.solr.common.util.Base64;
- import org.apache.solr.common.util.NamedList;
- import org.apache.solr.common.util.Utils;
- import org.apache.solr.core.ConfigSetProperties;
-+import org.apache.solr.core.TestSolrConfigHandler;
- import org.apache.solr.core.TestDynamicLoading;
- import org.apache.solr.security.BasicAuthIntegrationTest;
- import org.apache.zookeeper.CreateMode;
-@@ -125,7 +128,7 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
-   @Test
-   public void testCreateErrors() throws Exception {
-     final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
--    final SolrClient solrClient = getHttpSolrClient(baseUrl);
-+    try (final SolrClient solrClient = getHttpSolrClient(baseUrl)) {
-     solrCluster.uploadConfigSet(configset("configset-2"), "configSet");
- 
-     // no action
-@@ -137,9 +140,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
-     CreateNoErrorChecking create = new CreateNoErrorChecking();
-     verifyException(solrClient, create, NAME);
- 
--    // no base ConfigSet name
-+    // set ConfigSet
-     create.setConfigSetName("configSetName");
--    verifyException(solrClient, create, BASE_CONFIGSET);
- 
-     // ConfigSet already exists
-     Create alreadyExists = new Create();
-@@ -151,29 +153,65 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
-     baseConfigNoExists.setConfigSetName("newConfigSet").setBaseConfigSetName("baseConfigSet");
-     verifyException(solrClient, baseConfigNoExists, "Base ConfigSet does not exist");
- 
--    solrClient.close();
-+    //solrClient.close();
-+    }
-   }
- 
-   @Test
-   public void testCreate() throws Exception {
-     // no old, no new
--    verifyCreate("baseConfigSet1", "configSet1", null, null);
-+    verifyCreate("baseConfigSet1", "configSet1", null, null, null, null);
- 
-     // no old, new
-     verifyCreate("baseConfigSet2", "configSet2",
--        null, ImmutableMap.<String, String>of("immutable", "true", "key1", "value1"));
-+        null, ImmutableMap.<String, String>of("immutable", "true", "key1", "value1"), null, null);
- 
-     // old, no new
-     verifyCreate("baseConfigSet3", "configSet3",
--        ImmutableMap.<String, String>of("immutable", "false", "key2", "value2"), null);
-+        ImmutableMap.<String, String>of("immutable", "false", "key2", "value2"), null, null, null);
- 
-     // old, new
-     verifyCreate("baseConfigSet4", "configSet4",
-         ImmutableMap.<String, String>of("immutable", "true", "onlyOld", "onlyOldValue"),
--        ImmutableMap.<String, String>of("immutable", "false", "onlyNew", "onlyNewValue"));
-+        ImmutableMap.<String, String>of("immutable", "false", "onlyNew", "onlyNewValue"), null, null);
-   }
- 
--  private void setupBaseConfigSet(String baseConfigSetName, Map<String, String> oldProps) throws Exception {
-+  @Test
-+  public void testCreateWithTrust() throws Exception {
-+    String configsetName = "regular";
-+    String configsetSuffix = "testCreateWithTrust";
-+    String configsetSuffix2 = "testCreateWithTrust2";
-+    protectConfigsHandler();
-+    uploadConfigSetWithAssertions(configsetName, configsetSuffix, "solr", "SolrRocks");
-+    uploadConfigSetWithAssertions(configsetName, configsetSuffix2, null, null);
-+    try (SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
-+            AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null)) {
-+      assertTrue(isTrusted(zkClient, configsetName, configsetSuffix));
-+      assertFalse(isTrusted(zkClient, configsetName, configsetSuffix2));
-+      try {
-+        ignoreException("unauthenticated request");
-+        // trusted -> unstrusted
-+        createConfigSet(configsetName + configsetSuffix, "foo", Collections.emptyMap(), solrCluster.getSolrClient(), null, null);
-+        fail("Expecting exception");
-+      } catch (SolrException e) {
-+        assertEquals(SolrException.ErrorCode.UNAUTHORIZED.code, e.code());
-+        unIgnoreException("unauthenticated request");
-+      }
-+      // trusted -> trusted
-+      verifyCreate(configsetName + configsetSuffix, "foo2", Collections.emptyMap(), Collections.emptyMap(), "solr", "SolrRocks");
-+      assertTrue(isTrusted(zkClient, "foo2", ""));
-+
-+      // unstrusted -> unstrusted
-+      verifyCreate(configsetName + configsetSuffix2, "bar", Collections.emptyMap(), Collections.emptyMap(), null, null);
-+      assertFalse(isTrusted(zkClient, "bar", ""));
-+
-+      // unstrusted -> trusted
-+      verifyCreate(configsetName + configsetSuffix2, "bar2", Collections.emptyMap(), Collections.emptyMap(), "solr", "SolrRocks");
-+      assertTrue(isTrusted(zkClient, "bar2", ""));
-+    }
-+  }
-+
-+  private void setupBaseConfigSet(String baseConfigSetName, Map<String, String> oldProps, boolean trusted) throws Exception {
-     final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
-     final File tmpConfigDir = createTempDir().toFile();
-     tmpConfigDir.deleteOnExit();
-@@ -183,36 +221,53 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
-           getConfigSetProps(oldProps), StandardCharsets.UTF_8);
-     }
-     solrCluster.uploadConfigSet(tmpConfigDir.toPath(), baseConfigSetName);
-+    // Mark configset untrusted
-+    String trustedFlag = "{\"trusted\": false}"; // default is untrusted
-+    if (trusted) trustedFlag = "{\"trusted\": true}";
-+    SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
-+            AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
-+    zkClient().setData("/configs/" + baseConfigSetName, trustedFlag.getBytes(StandardCharsets.UTF_8), true);
-+    zkClient.close();
-   }
- 
-   private void verifyCreate(String baseConfigSetName, String configSetName,
--      Map<String, String> oldProps, Map<String, String> newProps) throws Exception {
-+      Map<String, String> oldProps, Map<String, String> newProps, String username, String password) throws Exception {
-     final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
--    final SolrClient solrClient = getHttpSolrClient(baseUrl);
--    setupBaseConfigSet(baseConfigSetName, oldProps);
-+    try (final SolrClient solrClient = getHttpSolrClient(baseUrl)) {
-+      if (username != null && password != null)
-+        setupBaseConfigSet(baseConfigSetName, oldProps, true);
-+      else
-+        setupBaseConfigSet(baseConfigSetName, oldProps, false);
- 
--    SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
-+      SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
-         AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
--    try {
--      ZkConfigManager configManager = new ZkConfigManager(zkClient);
--      assertFalse(configManager.configExists(configSetName));
--
--      Create create = new Create();
--      create.setBaseConfigSetName(baseConfigSetName).setConfigSetName(configSetName);
--      if (newProps != null) {
--        Properties p = new Properties();
--        p.putAll(newProps);
--        create.setNewConfigSetProperties(p);
-+      try {
-+        ZkConfigManager configManager = new ZkConfigManager(zkClient);
-+        assertFalse(configManager.configExists(configSetName));
-+
-+        ConfigSetAdminResponse response = createConfigSet(baseConfigSetName, configSetName, newProps, solrClient, username, password);
-+        assertNotNull(response.getResponse());
-+        assertTrue(configManager.configExists(configSetName));
-+
-+        verifyProperties(configSetName, oldProps, newProps, zkClient);
-+      } finally {
-+        zkClient.close();
-       }
--      ConfigSetAdminResponse response = create.process(solrClient);
--      assertNotNull(response.getResponse());
--      assertTrue(configManager.configExists(configSetName));
-+    }
-+  }
- 
--      verifyProperties(configSetName, oldProps, newProps, zkClient);
--    } finally {
--      zkClient.close();
-+  private ConfigSetAdminResponse createConfigSet(String baseConfigSetName, String configSetName, Map<String, String> newProps, SolrClient solrClient, String username, String password) throws SolrServerException, IOException {
-+    Create create = new Create();
-+    create.setBaseConfigSetName(baseConfigSetName).setConfigSetName(configSetName);
-+    if (newProps != null) {
-+      Properties p = new Properties();
-+      p.putAll(newProps);
-+      create.setNewConfigSetProperties(p);
-     }
--    solrClient.close();
-+    if (username != null && password != null) {
-+      create.setBasicAuthCredentials(username, password);
-+    }
-+    return create.process(solrClient);
-   }
- 
-   private NamedList getConfigSetPropertiesFromZk(
-@@ -277,6 +332,15 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
-     }
-   }
- 
-+  private boolean isTrusted(SolrZkClient zkClient, String configsetName, String configsetSuffix) throws KeeperException, InterruptedException {
-+    String configSetZkPath = String.format(Locale.ROOT,"/configs/%s%s", configsetName, configsetSuffix);
-+    byte[] configSetNodeContent = zkClient.getData(configSetZkPath, null, null, true);;
-+
-+    @SuppressWarnings("unchecked")
-+    Map<Object, Object> contentMap = (Map<Object, Object>) Utils.fromJSON(configSetNodeContent);
-+    return (boolean) contentMap.getOrDefault("trusted", true);
-+  }
-+
-   @Test
-   public void testUploadErrors() throws Exception {
-     final SolrClient solrClient = new HttpSolrClient(
-@@ -404,7 +468,7 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
-         "  'authorization':{\n" +
-         "    'class':'solr.RuleBasedAuthorizationPlugin',\n" +
-         "    'user-role':{'solr':'admin'},\n" +
--        "    'permissions':[{'name':'security-edit','role':'admin'}, {'name':'config-edit','role':'admin'}]}}";
-+        "    'permissions':[{'name':'security-edit','role':'admin'}]}}";
- 
-     HttpClient cl = null;
-     try {
-diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
-index a11072754f1..efdc0fd97ae 100644
---- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
-+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java
-@@ -17,11 +17,14 @@
- package org.apache.solr.cloud;
- 
- import java.lang.invoke.MethodHandles;
-+import java.nio.charset.StandardCharsets;
- import java.util.Arrays;
- import java.util.LinkedList;
- import java.util.List;
- 
- import org.apache.solr.SolrTestCaseJ4;
-+import org.apache.solr.common.cloud.SolrZkClient;
-+import org.apache.solr.common.cloud.ZkStateReader;
- import org.apache.solr.client.solrj.SolrClient;
- import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
- import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create;
-@@ -56,13 +59,19 @@ public class TestConfigSetsAPIExclusivity extends SolrTestCaseJ4 {
-   @Override
-   @After
-   public void tearDown() throws Exception {
--    solrCluster.shutdown();
-+    if (null != solrCluster) {
-+      solrCluster.shutdown();
-+      solrCluster = null;
-+    }
-     super.tearDown();
-   }
- 
-   @Test
-   public void testAPIExclusivity() throws Exception {
-     int trials = 20;
-+    ZkStateReader reader = solrCluster.getSolrClient().getZkStateReader();
-+    if (reader == null)
-+      solrCluster.getSolrClient().connect();
-     setupBaseConfigSet(GRANDBASE_CONFIGSET_NAME);
-     CreateThread createBaseThread =
-         new CreateThread(solrCluster, BASE_CONFIGSET_NAME, GRANDBASE_CONFIGSET_NAME, trials);
-@@ -89,6 +98,8 @@ public class TestConfigSetsAPIExclusivity extends SolrTestCaseJ4 {
- 
-   private void setupBaseConfigSet(String baseConfigSetName) throws Exception {
-     solrCluster.uploadConfigSet(configset("configset-2"), baseConfigSetName);
-+    //Make configset untrusted
-+    solrCluster.getZkClient().setData("/configs/" + baseConfigSetName, "{\"trusted\": false}".getBytes(StandardCharsets.UTF_8), true);
-   }
- 
-   private Exception getFirstExceptionOrNull(List<Exception> list) {
-diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
-index 34acb2509e0..5d510403bd4 100644
---- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
-+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java
-@@ -91,8 +91,14 @@ public class TestConfigSetsAPIZkFailure extends SolrTestCaseJ4 {
-   @Override
-   @After
-   public void tearDown() throws Exception {
--    solrCluster.shutdown();
--    zkTestServer.shutdown();
-+    if (null != solrCluster) {
-+      solrCluster.shutdown();
-+      solrCluster = null;
-+    }
-+    if (null != zkTestServer) {
-+      zkTestServer.shutdown();
-+      zkTestServer = null;
-+    }
-     super.tearDown();
-   }
- 
-@@ -102,10 +108,10 @@ public class TestConfigSetsAPIZkFailure extends SolrTestCaseJ4 {
-     final SolrClient solrClient = getHttpSolrClient(baseUrl);
- 
-     final Map<String, String> oldProps = ImmutableMap.of("immutable", "true");
--    setupBaseConfigSet(BASE_CONFIGSET_NAME, oldProps);
- 
-     SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
-         AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
-+    setupBaseConfigSet(BASE_CONFIGSET_NAME, oldProps, zkClient);
-     try {
-       ZkConfigManager configManager = new ZkConfigManager(zkClient);
-       assertFalse(configManager.configExists(CONFIGSET_NAME));
-@@ -127,7 +133,7 @@ public class TestConfigSetsAPIZkFailure extends SolrTestCaseJ4 {
-     solrClient.close();
-   }
- 
--  private void setupBaseConfigSet(String baseConfigSetName, Map<String, String> oldProps) throws Exception {
-+  private void setupBaseConfigSet(String baseConfigSetName, Map<String, String> oldProps, SolrZkClient zkClient) throws Exception {
-     final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
-     final File tmpConfigDir = createTempDir().toFile();
-     tmpConfigDir.deleteOnExit();
-@@ -137,6 +143,7 @@ public class TestConfigSetsAPIZkFailure extends SolrTestCaseJ4 {
-           getConfigSetProps(oldProps), StandardCharsets.UTF_8);
-     }
-     solrCluster.uploadConfigSet(tmpConfigDir.toPath(), baseConfigSetName);
-+    zkClient.setData("/configs/" + baseConfigSetName, "{\"trusted\": false}".getBytes(StandardCharsets.UTF_8), true);
-   }
- 
-   private StringBuilder getConfigSetProps(Map<String, String> map) {
-diff --git a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
-index 13d4d0161f7..eae84548965 100644
---- a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
-+++ b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
-@@ -16,9 +16,8 @@
-  */
- package org.apache.solr.core;
- 
--import java.io.File;
--import java.io.IOException;
--import java.io.StringReader;
-+import java.io.*;
-+import java.nio.ByteBuffer;
- import java.lang.invoke.MethodHandles;
- import java.util.Arrays;
- import java.util.Collections;
-@@ -66,7 +65,24 @@ public class TestSolrConfigHandler extends RestTestBase {
- 
-   private static final String collection = "collection1";
-   private static final String confDir = collection + "/conf";
-+  public static ByteBuffer getFileContent(String f) throws IOException {
-+      return getFileContent(f, true);
-+    }
- 
-+  /**
-+     * @param loadFromClassPath if true, it will look in the classpath to find the file,
-+     *        otherwise load from absolute filesystem path.
-+     */
-+    public static ByteBuffer getFileContent(String f, boolean loadFromClassPath) throws IOException {
-+      ByteBuffer jar;
-+      File file = loadFromClassPath ? getFile(f): new File(f);
-+      try (FileInputStream fis = new FileInputStream(file)) {
-+        byte[] buf = new byte[fis.available()];
-+        fis.read(buf);
-+        jar = ByteBuffer.wrap(buf);
-+      }
-+      return jar;
-+    }
- 
-   @Before
-   public void before() throws Exception {
-diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestConfigsApi.java b/solr/core/src/test/org/apache/solr/handler/admin/TestConfigsApi.java
-index d2c96a66be2..5721db48799 100644
---- a/solr/core/src/test/org/apache/solr/handler/admin/TestConfigsApi.java
-+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestConfigsApi.java
-@@ -29,7 +29,6 @@ import org.apache.zookeeper.KeeperException;
- 
- import static java.util.Collections.EMPTY_MAP;
- import static org.apache.solr.client.solrj.SolrRequest.METHOD.DELETE;
--import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST;
- import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
- import static org.apache.solr.handler.admin.TestCollectionAPIs.compareOutput;
- 
-@@ -52,8 +51,5 @@ public class TestConfigsApi extends SolrTestCaseJ4 {
-     for (Api api : handler.getApis()) apiBag.register(api, EMPTY_MAP);
-     compareOutput(apiBag, "/cluster/configs/sample", DELETE, null, null,
-         "{name :sample, operation:delete}");
--
--    compareOutput(apiBag, "/cluster/configs", POST, "{create:{name : newconf, baseConfigSet: sample }}", null,
--        "{operation:create, name :newconf,  baseConfigSet: sample }");
-   }
- }
-diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
-index 0b3608ba2a7..f53d082ae9e 100644
---- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
-+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
-@@ -138,12 +138,7 @@ public class ZkConfigManager {
-       for (String file : files) {
-         List<String> children = zkClient.getChildren(fromZkPath + "/" + file, null, true);
-         if (children.size() == 0) {
--          final String toZkFilePath = toZkPath + "/" + file;
--          logger.info("Copying zk node {} to {}",
--              fromZkPath + "/" + file, toZkFilePath);
--          byte[] data = zkClient.getData(fromZkPath + "/" + file, null, null, true);
--          zkClient.makePath(toZkFilePath, data, true);
--          if (copiedToZkPaths != null) copiedToZkPaths.add(toZkFilePath);
-+          copyData(copiedToZkPaths, fromZkPath + "/" + file, toZkPath + "/" + file);
-         } else {
-           copyConfigDirFromZk(fromZkPath + "/" + file, toZkPath + "/" + file, copiedToZkPaths);
-         }
-@@ -154,6 +149,13 @@ public class ZkConfigManager {
-     }
-   }
- 
-+  private void copyData(Set<String> copiedToZkPaths, String fromZkFilePath, String toZkFilePath) throws KeeperException, InterruptedException {
-+    logger.info("Copying zk node {} to {}", fromZkFilePath, toZkFilePath);
-+    byte[] data = zkClient.getData(fromZkFilePath, null, null, true);
-+    zkClient.makePath(toZkFilePath, data, true);
-+    if (copiedToZkPaths != null) copiedToZkPaths.add(toZkFilePath);
-+  }
-+
-   /**
-    * Copy a config in ZooKeeper
-    *
-@@ -175,6 +177,14 @@ public class ZkConfigManager {
-    * @throws IOException if an I/O error occurs
-    */
-   public void copyConfigDir(String fromConfig, String toConfig, Set<String> copiedToZkPaths) throws IOException {
-+    String fromConfigPath = CONFIGS_ZKNODE + "/" + fromConfig;
-+    String toConfigPath = CONFIGS_ZKNODE + "/" + toConfig;
-+    try {
-+      copyData(copiedToZkPaths, fromConfigPath, toConfigPath);
-+    } catch (KeeperException | InterruptedException e) {
-+      throw new IOException("Error config " + fromConfig + " to " + toConfig,
-+              SolrZkClient.checkInterrupted(e));
-+    }
-     copyConfigDirFromZk(CONFIGS_ZKNODE + "/" + fromConfig, CONFIGS_ZKNODE + "/" + toConfig, copiedToZkPaths);
-   }
- 
--- 
-2.17.1
-
diff --git a/bigtop-packages/src/common/solr/solr.default b/bigtop-packages/src/common/solr/solr.default
index 8e73200..a326dce 100644
--- a/bigtop-packages/src/common/solr/solr.default
+++ b/bigtop-packages/src/common/solr/solr.default
@@ -89,7 +89,7 @@
 # Solr provides a default Log4J configuration properties file in server/resources
 # however, you may want to customize the log settings and file appender location
 # so you can point the script to use a different log4j.properties file
-#LOG4J_PROPS=/var/lib/solr/log4j.properties
+#LOG4J_PROPS=/etc/solr/conf/log4j2-console.xml
 
 # Changes the logging level. Valid values: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF. Default is INFO
 # This is an alternative to changing the rootLogger in log4j.properties
diff --git a/bigtop-packages/src/common/solr/solrctl.sh b/bigtop-packages/src/common/solr/solrctl.sh
index 19bdfe0..2d347d9 100755
--- a/bigtop-packages/src/common/solr/solrctl.sh
+++ b/bigtop-packages/src/common/solr/solrctl.sh
@@ -46,6 +46,7 @@ Commands:
                 [--stat name]
                 [--deletedocs name]
                 [--list]
+                [--config name <json>]
 
     core        [--create name [-p name=value]...]
                 [--reload name]
@@ -342,6 +343,10 @@ while test $# != 0 ; do
 
             shift 4
             ;;
+        --config)
+            eval $SOLR_ADMIN_API_CMD "'/$3/config'" -H "'Content-Type: application/json'" "--data-binary '$4'"
+            shift 4
+            ;;
         --delete|--reload)
             COL_ACTION=`echo $2 | tr '[a-z]-' '[A-Z] '`
             eval $SOLR_ADMIN_API_CMD "'/admin/collections?action=`echo $COL_ACTION`&name=$3'"
diff --git a/bigtop-packages/src/common/solr/solrd b/bigtop-packages/src/common/solr/solrd
index 7ae138d..b1f023f 100755
--- a/bigtop-packages/src/common/solr/solrd
+++ b/bigtop-packages/src/common/solr/solrd
@@ -64,7 +64,7 @@ BASEDIR=`cd ${BASEDIR}/..;pwd`
 SOLR_MODE=${RUN_MODE:-cloud}
 SOLR_PORT=${SOLR_PORT:-8983}
 SOLR_ADMIN_PORT=${SOLR_ADMIN_PORT:-8984}
-SOLR_LOG4J_CONFIG=${LOG4J_PROPS:-/etc/solr/conf/log4j.properties}
+SOLR_LOG4J_CONFIG=${LOG4J_PROPS:-/etc/solr/conf/log4j2-console.xml}
 
 SOLR_HOME=${SOLR_HOME:-/var/lib/solr}
 export SOLR_LOGS_DIR=${SOLR_LOGS_DIR:-/var/log/solr}
@@ -131,10 +131,13 @@ fi
 # FIXME: we need to set this because of the jetty-centric default solr.xml
 SOLR_OPTS="${SOLR_OPTS} -Dhost=$HOSTNAME -Djetty.port=$SOLR_PORT"
 
+# SOLR-15133
+SOLR_OPTS="${SOLR_OPTS} -XX:-UseLargePages"
+
 export SOLR_OPTS="${SOLR_OPTS} -Dsolr.host=$HOSTNAME
                                -Dsolr.port=$SOLR_PORT
                                -Dsolr.admin.port=$SOLR_ADMIN_PORT
-                               -Dlog4j.configuration=file://$SOLR_LOG4J_CONFIG
+                               -Dlog4j.configurationFile=file://$SOLR_LOG4J_CONFIG
                                -Dsolr.log.dir=$SOLR_LOGS_DIR
                                -Dsolr.solr.home=$SOLR_HOME"
 
diff --git a/bigtop-tests/smoke-tests/solr/build.gradle b/bigtop-tests/smoke-tests/solr/build.gradle
index 74c7dd1..84a24f0 100644
--- a/bigtop-tests/smoke-tests/solr/build.gradle
+++ b/bigtop-tests/smoke-tests/solr/build.gradle
@@ -29,6 +29,10 @@ def create_collection() {
     executable "/usr/bin/solrctl"
     args "collection", "--create", "smoke"
   }
+  exec {
+    executable "/usr/bin/solrctl"
+    args "collection", "--config", "smoke", '{"set-property": {"requestDispatcher.requestParsers.enableRemoteStreaming": true}, "set-property": {"requestDispatcher.requestParsers.enableStreamBody": true}}'
+  }
 }
 
 def junitVersion = '4.11'
diff --git a/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr-doc.xml b/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr-doc.xml
index 86021df..167e689 100644
--- a/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr-doc.xml
+++ b/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr-doc.xml
@@ -1606,50 +1606,6 @@
     <file name='/usr/share/doc/solr-doc/solr-dataimporthandler/stylesheet.css' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc/solr-dataimporthandler/deprecated-list.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc/solr-dataimporthandler/help-doc.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/overview-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/allclasses-noframe.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/SolrUIMAConfigurationReader.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/package-use.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/package-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/UIMAUpdateRequestProcessorFactory.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-use.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/FieldMappingException.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/class-use' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/class-use/FieldMappingException.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/SolrUIMAConfigurationReader.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/UIMAUpdateRequestProcessorFactory.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/UIMAToSolrMapper.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/UIMAUpdateRequestProcessor.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/SolrUIMAConfiguration.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/UIMAToSolrMapper.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/UIMAUpdateRequestProcessor.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/package-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/package-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/org/apache/solr/uima/processor/SolrUIMAConfiguration.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/resources' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/resources/inherit.gif' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/package-list' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/serialized-form.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/allclasses-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/overview-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/index.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/constant-values.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/prettify.js' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/overview-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/stylesheet.css' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/deprecated-list.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc/solr-uima/help-doc.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc/solr-velocity' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc/solr-velocity/allclasses-noframe.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc/solr-velocity/org' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
@@ -2674,4 +2630,4 @@
     <file name='/usr/share/doc/solr-doc/solr-dataimporthandler-extras/deprecated-list.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc/solr-dataimporthandler-extras/help-doc.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
   </content>
-</solr-doc>
\ No newline at end of file
+</solr-doc>
diff --git a/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr.xml b/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr.xml
index 9cdc288..f8d42c2 100644
--- a/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr.xml
+++ b/bigtop-tests/test-artifacts/package/src/main/resources/apt/solr.xml
@@ -28,7 +28,6 @@
     <file name='/usr/lib/solr/lib/httpclient-4.1.3.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/lib/httpmime-4.1.3.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-dataimporthandler-extras-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/lib/solr/apache-solr-uima-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-solrj-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-velocity-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-test-framework-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
@@ -481,4 +480,4 @@
     <file name='/etc/default' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <config name='/etc/default/solr' owners='-1' perm='-rw-r--r--' user='root' group='root' />
   </content>
-</solr>
\ No newline at end of file
+</solr>
diff --git a/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr-doc.xml b/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr-doc.xml
index 1725bd9..3a6e9bb 100644
--- a/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr-doc.xml
+++ b/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr-doc.xml
@@ -2590,50 +2590,6 @@
     <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-test-framework/resources' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-test-framework/resources/inherit.gif' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-test-framework/stylesheet.css' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/allclasses-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/allclasses-noframe.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/constant-values.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/deprecated-list.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/help-doc.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/index.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/SolrUIMAConfiguration.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/SolrUIMAConfigurationReader.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/UIMAToSolrMapper.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/UIMAUpdateRequestProcessor.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/UIMAUpdateRequestProcessorFactory.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/class-use' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/class-use/SolrUIMAConfiguration.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/class-use/SolrUIMAConfigurationReader.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/class-use/UIMAToSolrMapper.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/class-use/UIMAUpdateRequestProcessor.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/class-use/UIMAUpdateRequestProcessorFactory.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/FieldMappingException.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/class-use' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/class-use/FieldMappingException.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/package-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/package-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/package-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/exception/package-use.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/package-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/package-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/package-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/org/apache/solr/uima/processor/package-use.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/overview-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/overview-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/overview-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/package-list' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/prettify.js' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/resources' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/resources/inherit.gif' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/serialized-form.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-uima/stylesheet.css' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-velocity' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-velocity/allclasses-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr-velocity/allclasses-noframe.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
@@ -2668,4 +2624,4 @@
     <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/solr.png' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <doc  name='/usr/share/doc/solr-doc-BIGTOP-PACKAGE-VERSION/tutorial.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
   </content>
-</solr-doc>
\ No newline at end of file
+</solr-doc>
diff --git a/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr.xml b/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr.xml
index 68c5855..f78b4f2 100644
--- a/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr.xml
+++ b/bigtop-tests/test-artifacts/package/src/main/resources/yum/solr.xml
@@ -108,7 +108,6 @@
     <file name='/usr/lib/solr/apache-solr-langid-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-solrj-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-test-framework-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/lib/solr/apache-solr-uima-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-velocity-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/bin' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <file name='/usr/lib/solr/bin/solrd' owners='-1' perm='-rwxr-xr-x' user='root' group='root' />
@@ -466,4 +465,4 @@
     <file name='/var/log/solr' owners='-1' perm='drwxr-xr-x' user='solr' group='solr' />
     <file name='/var/run/solr' owners='-1' perm='drwxr-xr-x' user='solr' group='solr' />
   </content>
-</solr>
\ No newline at end of file
+</solr>
diff --git a/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr-doc.xml b/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr-doc.xml
index 21cf8cb..10bbbca 100644
--- a/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr-doc.xml
+++ b/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr-doc.xml
@@ -2590,50 +2590,6 @@
     <file name='/usr/share/doc/packages/solr-doc/solr-test-framework/resources' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <doc  name='/usr/share/doc/packages/solr-doc/solr-test-framework/resources/inherit.gif' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <doc  name='/usr/share/doc/packages/solr-doc/solr-test-framework/stylesheet.css' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/allclasses-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/allclasses-noframe.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/constant-values.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/deprecated-list.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/help-doc.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/index.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/SolrUIMAConfiguration.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/SolrUIMAConfigurationReader.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/UIMAToSolrMapper.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/UIMAUpdateRequestProcessor.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/UIMAUpdateRequestProcessorFactory.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/SolrUIMAConfiguration.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/SolrUIMAConfigurationReader.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/UIMAToSolrMapper.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/UIMAUpdateRequestProcessor.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/class-use/UIMAUpdateRequestProcessorFactory.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/FieldMappingException.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/class-use' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/class-use/FieldMappingException.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/exception/package-use.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/package-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/package-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/package-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/org/apache/solr/uima/processor/package-use.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/overview-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/overview-summary.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/overview-tree.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/package-list' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/prettify.js' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/share/doc/packages/solr-doc/solr-uima/resources' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/resources/inherit.gif' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/serialized-form.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <doc  name='/usr/share/doc/packages/solr-doc/solr-uima/stylesheet.css' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/share/doc/packages/solr-doc/solr-velocity' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <doc  name='/usr/share/doc/packages/solr-doc/solr-velocity/allclasses-frame.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <doc  name='/usr/share/doc/packages/solr-doc/solr-velocity/allclasses-noframe.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
@@ -2668,4 +2624,4 @@
     <doc  name='/usr/share/doc/packages/solr-doc/solr.png' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <doc  name='/usr/share/doc/packages/solr-doc/tutorial.html' owners='-1' perm='-rw-r--r--' user='root' group='root' />
   </content>
-</solr-doc>
\ No newline at end of file
+</solr-doc>
diff --git a/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr.xml b/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr.xml
index 68c5855..f78b4f2 100644
--- a/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr.xml
+++ b/bigtop-tests/test-artifacts/package/src/main/resources/zypper/solr.xml
@@ -108,7 +108,6 @@
     <file name='/usr/lib/solr/apache-solr-langid-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-solrj-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-test-framework-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
-    <file name='/usr/lib/solr/apache-solr-uima-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/apache-solr-velocity-4.0.0.jar' owners='-1' perm='-rw-r--r--' user='root' group='root' />
     <file name='/usr/lib/solr/bin' owners='-1' perm='drwxr-xr-x' user='root' group='root' />
     <file name='/usr/lib/solr/bin/solrd' owners='-1' perm='-rwxr-xr-x' user='root' group='root' />
@@ -466,4 +465,4 @@
     <file name='/var/log/solr' owners='-1' perm='drwxr-xr-x' user='solr' group='solr' />
     <file name='/var/run/solr' owners='-1' perm='drwxr-xr-x' user='solr' group='solr' />
   </content>
-</solr>
\ No newline at end of file
+</solr>
diff --git a/bigtop.bom b/bigtop.bom
index fba17de..c570b4c 100644
--- a/bigtop.bom
+++ b/bigtop.bom
@@ -206,7 +206,7 @@ bigtop {
     'solr' {
       name    = 'solr'
       relNotes = 'Apache Solr'
-      version { base = '6.6.6'; pkg = base; release = 1 }
+      version { base = '8.7.0'; pkg = base; release = 1 }
       tarball { destination = "$name-${version.base}-src.tgz"
                 source      = destination }
       url     { download_path = "lucene/$name/${version.base}"