SENTRY-2403: Incorrect naming in RollingFileWithoutDeleteAppender (Peter Somogyi, reviewed by Sergio Pena)
diff --git a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/log/appender/RollingFileWithoutDeleteAppender.java b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/log/appender/RollingFileWithoutDeleteAppender.java
index fd133f3..39ea9f7 100644
--- a/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/log/appender/RollingFileWithoutDeleteAppender.java
+++ b/sentry-service/sentry-service-server/src/main/java/org/apache/sentry/provider/db/log/appender/RollingFileWithoutDeleteAppender.java
@@ -48,7 +48,7 @@
/**
* Instantiate a RollingFileAppender and open the file designated by
- * <code>filename</code>. The opened filename will become the ouput
+ * <code>filename</code>. The opened filename will become the output
* destination for this appender.
* <p>
* If the <code>append</code> parameter is true, the file will be appended to.
@@ -86,7 +86,7 @@
* <code>File</code> is renamed <code>File.yyyyMMddHHmmss</code> and closed. A
* new <code>File</code> is created to receive further log output.
*/
- // synchronization not necessary since doAppend is alreasy synched
+ // synchronization not necessary since doAppend is already synched
public void rollOver() {
if (qw != null) {
long size = ((CountingQuietWriter) qw).getCount();
@@ -170,6 +170,20 @@
// Mangled file name. Append the current timestamp
private static String getLogFileName(String oldFileName) {
- return oldFileName + "." + Long.toString(System.currentTimeMillis());
+ return getFileNameWithoutTimestamp(oldFileName) + "."
+ + Long.toString(System.currentTimeMillis());
+ }
+
+ /**
+ * Remove trailing timestamp from filename
+ * @param fileName original filename with or without trailing timestamp
+ * @return Filename without trailing timestamp
+ */
+ private static String getFileNameWithoutTimestamp(String fileName) {
+ if (fileName.matches("^.*\\.\\d+$")) {
+ return fileName.substring(0, fileName.lastIndexOf('.'));
+ } else {
+ return fileName;
+ }
}
}
diff --git a/sentry-service/sentry-service-server/src/test/java/org/apache/sentry/provider/db/log/appender/TestRollingFileWithoutDeleteAppender.java b/sentry-service/sentry-service-server/src/test/java/org/apache/sentry/provider/db/log/appender/TestRollingFileWithoutDeleteAppender.java
index ca9062b..5db15a3 100644
--- a/sentry-service/sentry-service-server/src/test/java/org/apache/sentry/provider/db/log/appender/TestRollingFileWithoutDeleteAppender.java
+++ b/sentry-service/sentry-service-server/src/test/java/org/apache/sentry/provider/db/log/appender/TestRollingFileWithoutDeleteAppender.java
@@ -19,6 +19,7 @@
package org.apache.sentry.provider.db.log.appender;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertTrue;
@@ -55,7 +56,7 @@
for (int i = 0; i < 99; i++) {
if (i < 10) {
sentryLogger.debug("Hello---" + i);
- } else if (i < 100) {
+ } else {
sentryLogger.debug("Hello--" + i);
}
}
@@ -63,7 +64,7 @@
if (dataDir != null) {
File[] files = dataDir.listFiles();
if (files != null) {
- assertEquals(files.length, 10);
+ assertEquals(10, files.length);
} else {
fail("Excepted 10 log files.");
}
@@ -74,8 +75,7 @@
}
/***
- * Generate log enough to cause a single rollover. Verify the file name format
- * @throws Throwable
+ * Generate log enough to cause rollovers. Verify the file name format
*/
@Test
public void testFileNamePattern() throws Throwable {
@@ -87,13 +87,12 @@
appender.setMaximumFileSize(10);
sentryLogger.addAppender(appender);
sentryLogger.debug("123456789012345");
+ sentryLogger.debug("123456789012345");
File[] files = dataDir.listFiles();
- if (files != null) {
- assertEquals(files.length, 2);
- assertTrue(files[0].getName().contains("auditLog.log."));
- assertTrue(files[1].getName().contains("auditLog.log."));
- } else {
- fail("Excepted 2 log files.");
+ assertNotNull(files);
+ assertEquals(3, files.length);
+ for (int i = 0; i < 3; i++) {
+ assertTrue(files[i].getName().matches("auditLog\\.log\\.\\d+"));
}
}