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!");