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+"));
     }
   }