summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-12-16 17:20:38 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-12-16 17:20:38 +0000
commit29cedd0cef08348c9e8d52a9d48168e74a139840 (patch)
treef4439936cdf2b9791c736d8e38b2bfe72bfe06c8
parent75694520d39b3712b5b366d749435f694d9b2c7a (diff)
downloadqpid-python-29cedd0cef08348c9e8d52a9d48168e74a139840.tar.gz
QPID-2155 : Added NPE checks for path errors, updated to check the backup location for existing backup files to initialise the .n count
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@891331 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java65
1 files changed, 44 insertions, 21 deletions
diff --git a/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java b/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java
index 853247be58..be52b82789 100644
--- a/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java
+++ b/java/broker/src/main/java/org/apache/log4j/QpidCompositeRollingAppender.java
@@ -823,7 +823,7 @@ public class QpidCompositeRollingAppender extends FileAppender
LogLog.debug("CD=0,curSizeRollBackups:"+curSizeRollBackups);
LogLog.debug("CD=0,maxSizeRollBackups:"+maxSizeRollBackups);
- // delete the first and keep counting up.
+ // delete the first and keep counting up.
int oldestFileIndex = curSizeRollBackups - maxSizeRollBackups + 1;
LogLog.debug("CD=0,deleteFile:"+oldestFileIndex);
deleteFile(newFile + '.' + oldestFileIndex);
@@ -888,6 +888,11 @@ public class QpidCompositeRollingAppender extends FileAppender
LogLog.debug("CD="+countDirection+",done");
}
+
+ private int countFileIndex(String fileName)
+ {
+ return countFileIndex(fileName, true);
+ }
/**
* Use filename as a base name and find what count number we are up to by
* looking at the files in this format:
@@ -899,9 +904,10 @@ public class QpidCompositeRollingAppender extends FileAppender
*
*
* @param fileName the basefilename to use
+ * @param checkBackupLocation should backupFilesToPath location be checked for existing backups
* @return int the next free index
*/
- private int countFileIndex(String fileName)
+ private int countFileIndex(String fileName, boolean checkBackupLocation)
{
String testFileName;
@@ -911,6 +917,14 @@ public class QpidCompositeRollingAppender extends FileAppender
testFileName = fileName + "." + index;
+ // Bail out early if there is a problem with the file
+ if (new File(testFileName) == null
+ || new File(testFileName + COMPRESS_EXTENSION) == null)
+
+ {
+ return index;
+ }
+
// Check that we do not have the 1..n missing scenario
if (!(new File(testFileName).exists()
|| new File(testFileName + COMPRESS_EXTENSION).exists()))
@@ -920,33 +934,36 @@ public class QpidCompositeRollingAppender extends FileAppender
String prunedFileName = new File(fileName).getName();
// Look through all files to find next index
- for (File file : new File(fileName).getParentFile().listFiles())
+ if (new File(fileName).getParentFile() != null)
{
- String name = file.getName();
-
- if (name.startsWith(prunedFileName) && !name.equals(prunedFileName))
+ for (File file : new File(fileName).getParentFile().listFiles())
{
- String parsedCount = name.substring(prunedFileName.length() + 1 );
+ String name = file.getName();
- if (parsedCount.endsWith(COMPRESS_EXTENSION))
+ if (name.startsWith(prunedFileName) && !name.equals(prunedFileName))
{
- parsedCount = parsedCount.substring(0, parsedCount.indexOf(COMPRESS_EXTENSION));
- }
+ String parsedCount = name.substring(prunedFileName.length() + 1);
- try
- {
- max = Integer.parseInt(parsedCount);
+ if (parsedCount.endsWith(COMPRESS_EXTENSION))
+ {
+ parsedCount = parsedCount.substring(0, parsedCount.indexOf(COMPRESS_EXTENSION));
+ }
- // if we got a good value then update our index value.
- if (max > index)
+ try
{
- // +1 as we want to return the next free value.
- index = max + 1;
+ max = Integer.parseInt(parsedCount);
+
+ // if we got a good value then update our index value.
+ if (max > index)
+ {
+ // +1 as we want to return the next free value.
+ index = max + 1;
+ }
+ }
+ catch (NumberFormatException nfe)
+ {
+ //ignore it assume file doesn't exist.
}
- }
- catch (NumberFormatException nfe)
- {
- //ignore it assume file doesn't exist.
}
}
}
@@ -963,6 +980,12 @@ public class QpidCompositeRollingAppender extends FileAppender
testFileName = fileName + "." + index;
}
+ if (checkBackupLocation && index == 1 && backupFilesToPath != null)
+ {
+ LogLog.debug("Trying backup location:"+backupFilesToPath + System.getProperty("file.separator") + fileName);
+ return countFileIndex(backupFilesToPath + System.getProperty("file.separator") + new File(fileName).getName(), false);
+ }
+
return index;
}