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

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


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

commit 324d5dbcaac0b9a5147c7f2d72c18cffd70b7b03
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)
---
 .../ranger/audit/utils/AbstractRangerAuditWriter.java     |  2 +-
 .../apache/ranger/audit/utils/RangerJSONAuditWriter.java  | 15 +++++++++++----
 2 files changed, 12 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 b9899d3bdf..c3352ec16c 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
@@ -56,7 +56,6 @@ public abstract class AbstractRangerAuditWriter implements 
RangerAuditWriter {
     public FileSystem          fileSystem;
     public Map<String, String> auditConfigs;
     public Path                auditPath;
-    public PrintWriter         logWriter;
     public RollingTimeUtil     rollingTimeUtil;
     public String              auditProviderName;
     public String              fullPath;
@@ -71,6 +70,7 @@ public abstract class AbstractRangerAuditWriter implements 
RangerAuditWriter {
     public int                 fileRolloverSec = 24 * 60 * 60; // In seconds
     public boolean             rollOverByDuration;
 
+    public volatile PrintWriter         logWriter;
     public volatile FSDataOutputStream  ostream;   // output stream wrapped in 
logWriter
 
     protected boolean reUseLastLogFile;
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 32c69aec02..e31770dbe3 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;
@@ -94,17 +95,23 @@ public synchronized boolean logJSON(final 
Collection<String> events) throws Exce
             logger.debug("UGI = {}, will write to HDFS file = {}", 
MiscUtil.getUGILoginUser(), currentFileName);
 
             out = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<PrintWriter>) () -> 
{
-                PrintWriter out1 = getLogFileStream();
+                PrintWriter out1 = null;
 
-                for (String event : events) {
-                    out1.println(event);
+                if (CollectionUtils.isEmpty(events)) {
+                    closeFileIfNeeded();
+                } else {
+                    out1 = getLogFileStream();
+
+                    for (String event : events) {
+                        out1.println(event);
+                    }
                 }
 
                 return out1;
             });
 
             // 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