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

Reply via email to