Repository: incubator-ranger Updated Branches: refs/heads/master e3d50db85 -> 3c8b40fcf
RANGER-1107: Performance trace to measure policy download performance in plugins Signed-off-by: Madhan Neethiraj <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/3c8b40fc Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/3c8b40fc Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/3c8b40fc Branch: refs/heads/master Commit: 3c8b40fcf317235bc5597b4d6ffe535c7a5baa34 Parents: e3d50db Author: Abhay Kulkarni <[email protected]> Authored: Thu Jul 14 17:17:58 2016 -0700 Committer: Madhan Neethiraj <[email protected]> Committed: Mon Jul 18 00:16:50 2016 -0700 ---------------------------------------------------------------------- .../policyengine/RangerPolicyEngineImpl.java | 9 + .../ranger/plugin/util/PolicyRefresher.java | 37 ++- ranger-tools/conf/log4j.properties | 2 +- ranger-tools/scripts/README.txt | 13 + .../scripts/ranger-plugin-perftester.sh | 32 +++ .../policyengine/RangerPluginPerfTester.java | 259 +++++++++++++++++++ .../RangerPolicyenginePerfTester.java | 34 ++- .../src/main/webapp/WEB-INF/log4j.xml | 2 +- src/main/assembly/ranger-tools.xml | 7 + 9 files changed, 387 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java index f20923c..1b8433b 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java @@ -63,6 +63,9 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { if(RangerPerfTracer.isPerfTraceEnabled(PERF_POLICYENGINE_INIT_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_POLICYENGINE_INIT_LOG, "RangerPolicyEngine.init(appId=" + appId + ",hashCode=" + Integer.toHexString(System.identityHashCode(this)) + ")"); + long freeMemory = Runtime.getRuntime().freeMemory(); + long totalMemory = Runtime.getRuntime().totalMemory(); + PERF_POLICYENGINE_INIT_LOG.debug("In-Use memory: " + (totalMemory - freeMemory) + ", Free memory:" + freeMemory); } if (options == null) { @@ -131,6 +134,12 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { RangerPerfTracer.log(perf); + if (PERF_POLICYENGINE_INIT_LOG.isDebugEnabled()) { + long freeMemory = Runtime.getRuntime().freeMemory(); + long totalMemory = Runtime.getRuntime().totalMemory(); + PERF_POLICYENGINE_INIT_LOG.debug("In-Use memory: " + (totalMemory - freeMemory) + ", Free memory:" + freeMemory); + } + if (LOG.isDebugEnabled()) { LOG.debug("<== RangerPolicyEngineImpl()"); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java index f865a2a..38e05d9 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java @@ -179,6 +179,9 @@ public class PolicyRefresher extends Thread { if(RangerPerfTracer.isPerfTraceEnabled(PERF_POLICYENGINE_INIT_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_POLICYENGINE_INIT_LOG, "PolicyRefresher.loadPolicy(serviceName=" + serviceName + ")"); + long freeMemory = Runtime.getRuntime().freeMemory(); + long totalMemory = Runtime.getRuntime().totalMemory(); + PERF_POLICYENGINE_INIT_LOG.debug("In-Use memory: " + (totalMemory-freeMemory) + ", Free memory:" + freeMemory); } //load policy from PolicyAdmin @@ -195,6 +198,12 @@ public class PolicyRefresher extends Thread { RangerPerfTracer.log(perf); + if (PERF_POLICYENGINE_INIT_LOG.isDebugEnabled()) { + long freeMemory = Runtime.getRuntime().freeMemory(); + long totalMemory = Runtime.getRuntime().totalMemory(); + PERF_POLICYENGINE_INIT_LOG.debug("In-Use memory: " + (totalMemory-freeMemory) + ", Free memory:" + freeMemory); + } + if (svcPolicies != null) { plugIn.setPolicies(svcPolicies); policiesSetInPlugin = true; @@ -213,6 +222,12 @@ public class PolicyRefresher extends Thread { ServicePolicies svcPolicies = null; + RangerPerfTracer perf = null; + + if(RangerPerfTracer.isPerfTraceEnabled(PERF_POLICYENGINE_INIT_LOG)) { + perf = RangerPerfTracer.getPerfTracer(PERF_POLICYENGINE_INIT_LOG, "PolicyRefresher.loadPolicyFromPolicyAdmin(serviceName=" + serviceName + ")"); + } + try { svcPolicies = rangerAdmin.getServicePoliciesIfUpdated(lastKnownVersion); @@ -240,7 +255,9 @@ public class PolicyRefresher extends Thread { LOG.error("PolicyRefresher(serviceName=" + serviceName + "): failed to refresh policies. Will continue to use last known version of policies (" + lastKnownVersion + ")", excp); } - if(LOG.isDebugEnabled()) { + RangerPerfTracer.log(perf); + + if(LOG.isDebugEnabled()) { LOG.debug("<== PolicyRefresher(serviceName=" + serviceName + ").loadPolicyfromPolicyAdmin()"); } @@ -261,6 +278,12 @@ public class PolicyRefresher extends Thread { if(cacheFile != null && cacheFile.isFile() && cacheFile.canRead()) { Reader reader = null; + RangerPerfTracer perf = null; + + if(RangerPerfTracer.isPerfTraceEnabled(PERF_POLICYENGINE_INIT_LOG)) { + perf = RangerPerfTracer.getPerfTracer(PERF_POLICYENGINE_INIT_LOG, "PolicyRefresher.loadFromCache(serviceName=" + serviceName + ")"); + } + try { reader = new FileReader(cacheFile); @@ -278,6 +301,8 @@ public class PolicyRefresher extends Thread { } catch (Exception excp) { LOG.error("failed to load policies from cache file " + cacheFile.getAbsolutePath(), excp); } finally { + RangerPerfTracer.log(perf); + if(reader != null) { try { reader.close(); @@ -320,6 +345,13 @@ public class PolicyRefresher extends Thread { } if(cacheFile != null) { + + RangerPerfTracer perf = null; + + if(RangerPerfTracer.isPerfTraceEnabled(PERF_POLICYENGINE_INIT_LOG)) { + perf = RangerPerfTracer.getPerfTracer(PERF_POLICYENGINE_INIT_LOG, "PolicyRefresher.saveToCache(serviceName=" + serviceName + ")"); + } + Writer writer = null; try { @@ -337,6 +369,9 @@ public class PolicyRefresher extends Thread { } } } + + RangerPerfTracer.log(perf); + } } else { LOG.info("policies is null. Nothing to save in cache"); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/ranger-tools/conf/log4j.properties ---------------------------------------------------------------------- diff --git a/ranger-tools/conf/log4j.properties b/ranger-tools/conf/log4j.properties index 21f7fad..4ead802 100644 --- a/ranger-tools/conf/log4j.properties +++ b/ranger-tools/conf/log4j.properties @@ -23,7 +23,7 @@ log4j.threshold=ALL log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%m%n +log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n # # ranger.perf log level http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/ranger-tools/scripts/README.txt ---------------------------------------------------------------------- diff --git a/ranger-tools/scripts/README.txt b/ranger-tools/scripts/README.txt index 7dc84e9..55170d5 100644 --- a/ranger-tools/scripts/README.txt +++ b/ranger-tools/scripts/README.txt @@ -67,3 +67,16 @@ This file describes how to build, setup, configure and run the performance testi [RangerPolicyEngine.isAccessAllowed] execCount:64, totalTimeTaken:1873, maxTimeTaken:276, minTimeTaken:4, avgTimeTaken:29 + +RangerPluginPerfTester tool + +Steps 1 - 4 as above.. + +Run the tool with + + % ./ranger-plugin-perftester.sh -s <service-type> -n <service-name> -a <app-id> -r <ranger-admin-host> -t <socket-read-timeout-in-milliseconds> -p <policy-download-interval-in-milliseconds> -c <local-policy-cache-dir> -e <policy-evaluator-type> + + Example: + % ./ranger-plugin-perftester.sh -s hive -n cl1_hive -a test_hive_plugin -r http://ranger_admin_host -t 30000 -p 30000 -c /tmp/hive/policycache -e nocache + + http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/ranger-tools/scripts/ranger-plugin-perftester.sh ---------------------------------------------------------------------- diff --git a/ranger-tools/scripts/ranger-plugin-perftester.sh b/ranger-tools/scripts/ranger-plugin-perftester.sh new file mode 100755 index 0000000..eae2fdf --- /dev/null +++ b/ranger-tools/scripts/ranger-plugin-perftester.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cdir=$(cd "$(dirname "$0")"; pwd) +cp="${cdir}/dist/*:${cdir}/lib/*:${cdir}/conf:." + +if [ "${JAVA_HOME}" != "" ] +then + export JAVA_HOME + PATH="${JAVA_HOME}/bin:${PATH}" + export PATH +fi + +JAVA_CMD="java -cp ${cp} org.apache.ranger.policyengine.RangerPluginPerfTester" + +cd ${cdir} + +echo "JAVA command = $JAVA_CMD " "$@" +$JAVA_CMD "$@" http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java ---------------------------------------------------------------------- diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java new file mode 100644 index 0000000..803d737 --- /dev/null +++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java @@ -0,0 +1,259 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.policyengine; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.apache.commons.lang.StringUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FSDataOutputStream; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.ranger.authorization.hadoop.config.RangerConfiguration; +import org.apache.ranger.plugin.policyevaluator.RangerPolicyEvaluator; +import org.apache.ranger.plugin.service.RangerBasePlugin; + +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.File; + +public class RangerPluginPerfTester { + + static RangerBasePlugin plugin = null; + + private static String serviceType; + private static String serviceName; + private static String appId; + private static String rangerHostName; + private static int socketReadTimeout = 30*1000; + private static int pollingInterval = 30*1000; + private static String policyCacheDir; + private static boolean useCachedPolicyEvaluator = false; + + private static Options options = new Options(); + + public static void main(String[] args) { + + if (!parseArguments(args)) { + System.err.println("Exiting.. "); + System.exit(-1); + } + + + + System.out.println("Arguments:"); + System.out.println("\t\tservice-type:\t\t\t" + serviceType); + System.out.println("\t\tservice-name:\t\t\t" + serviceName); + System.out.println("\t\tapp-id:\t\t\t\t" + appId); + System.out.println("\t\tranger-host:\t\t\t" + rangerHostName); + System.out.println("\t\tsocket-read-timeout:\t\t" + socketReadTimeout); + System.out.println("\t\tpolling-interval:\t\t" + pollingInterval); + System.out.println("\t\tpolicy-cache-dir:\t\t" + policyCacheDir); + System.out.println("\t\tuse-cached-policy-evaluator:\t" + useCachedPolicyEvaluator); + System.out.println("\n\n"); + + + Path filePath = buildConfigurationFile(); + + if (filePath != null) { + RangerConfiguration rangerConfig = RangerConfiguration.getInstance(); + rangerConfig.addResource(filePath); + + plugin = new RangerBasePlugin(serviceType, appId); + + Runtime runtime = Runtime.getRuntime(); + runtime.gc(); + + long totalMemory = runtime.totalMemory(); + long freeMemory = runtime.freeMemory(); + + System.out.println("Initial Memory Statistics:"); + System.out.println("\t\tMaximum Memory available for the process:\t" + runtime.maxMemory()); + System.out.println("\t\tInitial In-Use memory:\t\t\t\t" + (totalMemory-freeMemory)); + System.out.println("\t\tInitial Free memory:\t\t\t\t" + freeMemory); + + System.out.println("\n\n"); + + plugin.init(); + + while (true) { + + runtime.gc(); + + freeMemory = runtime.freeMemory(); + totalMemory = runtime.totalMemory(); + + System.out.println("Memory Statistics:"); + System.out.println("\t\tCurrently In-Use memory:\t" + (totalMemory-freeMemory)); + System.out.println("\t\tCurrently Free memory:\t\t" + freeMemory); + + System.out.println("\n\n"); + + try { + Thread.sleep(60 * 1000); + } catch (InterruptedException e) { + + System.err.println("Main thread interrupted..., exiting..."); + break; + } + } + } else { + System.err.println("Failed to build configuration file"); + } + } + + static Path buildConfigurationFile() { + + Path ret = null; + + String propertyPrefix = "ranger.plugin." + serviceType; + String policyEvaluatorType = useCachedPolicyEvaluator ? RangerPolicyEvaluator.EVALUATOR_TYPE_CACHED : RangerPolicyEvaluator.EVALUATOR_TYPE_OPTIMIZED; + + try { + + File file = File.createTempFile("ranger-plugin-test-site", ".xml") ; + file.deleteOnExit(); + + String filePathStr = file.getAbsolutePath() ; + + Path filePath = new Path(filePathStr); + + FileSystem fs = filePath.getFileSystem(new Configuration()); + + FSDataOutputStream outStream = fs.create(filePath, true); + + OutputStreamWriter writer = new OutputStreamWriter(outStream); + + writer.write("<configuration>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".policy.pollIntervalMs</name>\n" + + " <value>" + pollingInterval + "</value>\n" + + " </property>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".policy.cache.dir</name>\n" + + " <value>" + policyCacheDir + "</value>\n" + + " </property>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".policy.rest.url</name>\n" + + " <value>" + rangerHostName + ":6080" + "</value>\n" + + " </property>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".policy.source.impl</name>\n" + + " <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>\n" + + " </property>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".policy.rest.client.read.timeoutMs</name>\n" + + " <value>" + socketReadTimeout + "</value>\n" + + " </property>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".policyengine.option.evaluator.type</name>\n" + + " <value>" + policyEvaluatorType + "</value>\n" + + " </property>\n" + + " <property>\n" + + " <name>" + propertyPrefix + ".service.name</name>\n" + + " <value>" + serviceName + "</value>\n" + + " </property>\n" + + + " <property>\n" + + " <name>xasecure.audit.is.enabled</name>\n" + + " <value>false</value>\n" + + " </property>\n" + + "</configuration>\n"); + + writer.close(); + ret = filePath; + + } catch (IOException exception) { + //Ignore + } + + return ret; + + } + + + static boolean parseArguments(final String[] args) { + + boolean ret = false; + + options.addOption("h", "help", false, "show help."); + options.addOption("s", "service-type", true, "Service-Type"); + options.addOption("n", "service-name", true, "Ranger service-name "); + options.addOption("a", "app-id", true, "Application-Id"); + options.addOption("r", "ranger-host", true, "Ranger host-name"); + options.addOption("t", "socket-read-timeout", true, "Read timeout on socket in milliseconds"); + options.addOption("p", "polling-interval", true, "Polling Interval in milliseconds"); + options.addOption("c", "policy-cache-dir", true, "Policy-Cache directory "); + options.addOption("e", "policy-evaluator-type", true, "Policy-Evaluator-Type (Cached/Other"); + + DefaultParser commandLineParser = new DefaultParser(); + + try { + CommandLine commandLine = commandLineParser.parse(options, args); + + if (commandLine.hasOption("h")) { + showUsage(); + return false; + } + + serviceType = commandLine.getOptionValue("s"); + serviceName = commandLine.getOptionValue("n"); + appId = commandLine.getOptionValue("a"); + rangerHostName = commandLine.getOptionValue("r"); + policyCacheDir = commandLine.getOptionValue("c"); + + try { + String pollingIntervalStr = commandLine.getOptionValue("p"); + pollingInterval = Integer.parseInt(pollingIntervalStr); + } catch (NumberFormatException exception) { + // Ignore + } + + String useCachedPolicyEvaluatorStr = commandLine.getOptionValue("e"); + if (StringUtils.equalsIgnoreCase(useCachedPolicyEvaluatorStr, "cache")) { + useCachedPolicyEvaluator = true; + } + + try { + String socketReadTimeoutStr = commandLine.getOptionValue("t"); + socketReadTimeout = Integer.parseInt(socketReadTimeoutStr); + } catch (NumberFormatException exception) { + // Ignore + } + + ret = true; + + } catch (ParseException exception) { + System.err.println("Failed to parse arguments:" + exception); + } + + return ret; + } + + static void showUsage() { + HelpFormatter formater = new HelpFormatter(); + formater.printHelp("plugin-tester", options); + } + +} + http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java ---------------------------------------------------------------------- diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java index 42d7cde..e752c62 100644 --- a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java +++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java @@ -83,6 +83,18 @@ public class RangerPolicyenginePerfTester { LOG.debug("Number of perfTestClients=" + perfTestClients.size()); } + Runtime runtime = Runtime.getRuntime(); + runtime.gc(); + + long totalMemory = runtime.totalMemory(); + long freeMemory = runtime.freeMemory(); + + LOG.info("Initial Memory Statistics:"); + LOG.info("\t\tMaximum memory available for the process:\t" + runtime.maxMemory()); + LOG.info("\t\tInitial In-Use memory:\t\t\t\t" + (totalMemory-freeMemory)); + LOG.info("\t\tInitial Free memory:\t\t\t\t" + freeMemory); + LOG.info("\n\n"); + for (PerfTestClient client : perfTestClients) { try { client.start(); @@ -94,15 +106,27 @@ public class RangerPolicyenginePerfTester { LOG.info("Waiting for " + perfTestClients.size() + " clients to finish up"); for (PerfTestClient client : perfTestClients) { - try { - if (client.isAlive()) { + while (client.isAlive()) { + try { LOG.info("Waiting for " + client.getName() + " to finish up."); - client.join(); + client.join(1000); + + runtime.gc(); + + totalMemory = runtime.totalMemory(); + freeMemory = runtime.freeMemory(); + + LOG.info("Memory Statistics:"); + LOG.info("\t\tCurrent In-Use memory:\t\t" + (totalMemory-freeMemory)); + LOG.info("\t\tCurrent Free memory:\t\t" + freeMemory); + LOG.info("\n\n"); + + } catch (InterruptedException interruptedException) { + LOG.error("PerfTestClient.join() was interrupted"); } - } catch (InterruptedException interruptedException) { - LOG.error("PerfTestClient.join() was interrupted"); } } + if (LOG.isDebugEnabled()) { LOG.debug("<== RangerPolicyenginePerfTester.main()"); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/security-admin/src/main/webapp/WEB-INF/log4j.xml ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/WEB-INF/log4j.xml b/security-admin/src/main/webapp/WEB-INF/log4j.xml index 54abd06..359ed93 100644 --- a/security-admin/src/main/webapp/WEB-INF/log4j.xml +++ b/security-admin/src/main/webapp/WEB-INF/log4j.xml @@ -85,7 +85,7 @@ <!-- <category name="org.apache.ranger.perf" additivity="false"> - <priority value="debug" /> + <priority value="info" /> <appender-ref ref="perf_appender" /> </category> --> http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3c8b40fc/src/main/assembly/ranger-tools.xml ---------------------------------------------------------------------- diff --git a/src/main/assembly/ranger-tools.xml b/src/main/assembly/ranger-tools.xml index 0df339d..bcc9df9 100644 --- a/src/main/assembly/ranger-tools.xml +++ b/src/main/assembly/ranger-tools.xml @@ -39,6 +39,7 @@ <include>commons-lang:commons-lang</include> <include>com.google.code.gson:gson</include> <include>log4j:log4j</include> + <include>org.slf4j:slf4j-api:jar:${slf4j-api.version}</include> <include>commons-configuration:commons-configuration:jar:${commons.configuration.version}</include> <include>org.apache.hadoop:hadoop-common:jar:${hadoop-common.version}</include> <include>org.apache.hadoop:hadoop-common-plus:jar:${hadoop-common.version}</include> @@ -125,6 +126,12 @@ <fileMode>755</fileMode> </file> <file> + <source>ranger-tools/scripts/ranger-plugin-perftester.sh</source> + <outputDirectory>/</outputDirectory> + <destName>ranger-plugin-perftester.sh</destName> + <fileMode>755</fileMode> + </file> + <file> <source>ranger-tools/scripts/README.txt</source> <outputDirectory>/</outputDirectory> <destName>README.txt</destName>
