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

madhan pushed a commit to branch ranger-2.7
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-2.7 by this push:
     new aaaef8fd55 RANGER-5153: fix for intermittent unit test failure in 
RangerJSONAuditWriterTest (#536)
aaaef8fd55 is described below

commit aaaef8fd554c48cbde9528c64891cfb5f9978bf3
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Fri Feb 21 20:11:41 2025 -0800

    RANGER-5153: fix for intermittent unit test failure in 
RangerJSONAuditWriterTest (#536)
    
    (cherry picked from commit 324d5dbcaac0b9a5147c7f2d72c18cffd70b7b03)
---
 .../ranger/audit/utils/AbstractRangerAuditWriter.java   |  2 +-
 .../ranger/audit/utils/RangerJSONAuditWriter.java       | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/utils/AbstractRangerAuditWriter.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/utils/AbstractRangerAuditWriter.java
index dda74018eb..b11bbd73a4 100644
--- 
a/agents-audit/src/main/java/org/apache/ranger/audit/utils/AbstractRangerAuditWriter.java
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/utils/AbstractRangerAuditWriter.java
@@ -50,7 +50,7 @@ public abstract class AbstractRangerAuditWriter implements 
RangerAuditWriter {
     public FileSystem                fileSystem                                
       = null;
     public Map<String, String>    auditConfigs                                
= null;
     public Path                                      auditPath                 
                       = null;
-    public PrintWriter            logWriter                        = null;
+    public volatile PrintWriter   logWriter                        = null;
     public RollingTimeUtil        rollingTimeUtil                  = null;
     public String                            auditProviderName                 
       = null;
     public String                            fullPath                         
= null;
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/utils/RangerJSONAuditWriter.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/utils/RangerJSONAuditWriter.java
index 747b8f663e..b4b2f18e81 100644
--- 
a/agents-audit/src/main/java/org/apache/ranger/audit/utils/RangerJSONAuditWriter.java
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/utils/RangerJSONAuditWriter.java
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.ranger.audit.provider.MiscUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,15 +91,23 @@ synchronized public boolean logJSON(final 
Collection<String> events) throws Exce
             out = MiscUtil.executePrivilegedAction(new 
PrivilegedExceptionAction<PrintWriter>() {
                 @Override
                 public PrintWriter run()  throws Exception {
-                    PrintWriter out = getLogFileStream();
-                    for (String event : events) {
-                        out.println(event);
+                    PrintWriter out = null;
+
+                    if (CollectionUtils.isEmpty(events)) {
+                        closeFileIfNeeded();
+                    } else {
+                        out = getLogFileStream();
+
+                        for (String event : events) {
+                            out.println(event);
+                        }
                     }
+
                     return out;
                 };
             });
             // flush and check the stream for errors
-            if (out.checkError()) {
+            if (out != null && out.checkError()) {
                 // In theory, this count may NOT be accurate as part of the 
messages may have been successfully written.
                 // However, in practice, since client does buffering, either 
all or none would succeed.
                 logger.error("Stream encountered errors while writing audits 
to HDFS!");

Reply via email to