RANGER-654: Component process goes in a tight loop if audit destination is down
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/eb197d27 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/eb197d27 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/eb197d27 Branch: refs/heads/HDP-2.3.2-groupid Commit: eb197d2760909c189c7950a9a672365969d4a52b Parents: 97078c7 Author: Don Bosco Durai <[email protected]> Authored: Fri Sep 18 21:26:54 2015 -0400 Committer: sneethiraj <[email protected]> Committed: Tue Sep 22 14:53:57 2015 -0400 ---------------------------------------------------------------------- .../org/apache/ranger/audit/queue/AuditBatchQueue.java | 2 +- .../org/apache/ranger/audit/queue/AuditFileSpool.java | 12 ++++++++++-- .../java/org/apache/ranger/audit/queue/AuditQueue.java | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/eb197d27/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditBatchQueue.java ---------------------------------------------------------------------- diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditBatchQueue.java b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditBatchQueue.java index e625d16..f3a38dc 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditBatchQueue.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditBatchQueue.java @@ -241,7 +241,7 @@ public class AuditBatchQueue extends AuditQueue implements Runnable { boolean fileSpoolDrain = false; try { if (fileSpoolerEnabled && fileSpooler.isPending()) { - int percentUsed = (getMaxQueueSize() - queue.size()) * 100 + int percentUsed = queue.size() * 100 / getMaxQueueSize(); long lastAttemptDelta = fileSpooler .getLastAttemptTimeDelta(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/eb197d27/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java ---------------------------------------------------------------------- diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java index b83329a..bab496c 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java @@ -306,8 +306,8 @@ public class AuditFileSpool implements Runnable { + consumerProvider.getName()); // Let's start the thread to read - destinationThread = new Thread(this, queueProvider.getName() - + "_destWriter"); + destinationThread = new Thread(this, queueProvider.getName() + "_" + + consumerProvider.getName() + "_destWriter"); destinationThread.setDaemon(true); destinationThread.start(); } @@ -776,6 +776,14 @@ public class AuditFileSpool implements Runnable { // boolean isResumed = false; while (true) { try { + if (isDestDown) { + logger.info("Destination is down. sleeping for " + + retryDestinationMS + + " milli seconds. indexQueue=" + indexQueue.size() + + ", queueName=" + queueProvider.getName() + + ", consumer=" + consumerProvider.getName()); + Thread.sleep(retryDestinationMS); + } // Let's pause between each iteration if (currentConsumerIndexRecord == null) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/eb197d27/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditQueue.java ---------------------------------------------------------------------- diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditQueue.java b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditQueue.java index 88c9831..c5eb3da 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditQueue.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditQueue.java @@ -32,7 +32,7 @@ public abstract class AuditQueue extends BaseAuditHandler { private static final Log LOG = LogFactory.getLog(AuditQueue.class); public static final int AUDIT_MAX_QUEUE_SIZE_DEFAULT = 1024 * 1024; - public static final int AUDIT_BATCH_INTERVAL_DEFAULT_MS = 1000; + public static final int AUDIT_BATCH_INTERVAL_DEFAULT_MS = 3000; public static final int AUDIT_BATCH_SIZE_DEFAULT = 1000; // This is the max time the consumer thread will wait before exiting the
