[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [webstats/master] .gz-compress newly written output files to save disk space.
commit 7bb3197fca8683c0a1f2d13cfacefda7f5f17d92
Author: Karsten Loesing <karsten.loesing@xxxxxxx>
Date: Wed Nov 7 19:02:57 2012 -0500
.gz-compress newly written output files to save disk space.
---
src/org/torproject/webstats/Main.java | 55 ++++++++++++++++++++++++++++-----
1 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/src/org/torproject/webstats/Main.java b/src/org/torproject/webstats/Main.java
index 7241d68..4bb035f 100644
--- a/src/org/torproject/webstats/Main.java
+++ b/src/org/torproject/webstats/Main.java
@@ -328,36 +328,74 @@ public class Main {
}
private static void storeOutputFile(String outputFileName,
List<String> cachedLinesList) {
- updatedOutputFiles.add(outputFileName);
+ String outputGzFileName = outputFileName + ".gz";
File stateTempFile = new File(stateTempDirectory, outputFileName);
+ File stateTempGzFile = new File(stateTempDirectory, outputGzFileName);
File stateFullFile = new File(stateFullDirectory, outputFileName);
+ File stateFullGzFile = new File(stateFullDirectory, outputGzFileName);
File outFile = new File(outDirectory, outputFileName);
+ File outGzFile = new File(outDirectory, outputGzFileName);
File stateDiffFile = new File(stateDiffDirectory, outputFileName);
+ File stateDiffGzFile = new File(stateDiffDirectory, outputGzFileName);
if (stateTempFile.exists()) {
+ updatedOutputFiles.add(outputFileName);
File stateTempOldFile = new File(stateTempDirectory,
outputFileName + ".old");
stateTempFile.renameTo(stateTempOldFile);
mergeOutputFile(stateTempOldFile, cachedLinesList, stateTempFile);
stateTempOldFile.delete();
+ } else if (stateTempGzFile.exists()) {
+ updatedOutputFiles.add(outputGzFileName);
+ File stateTempGzOldFile = new File(stateTempDirectory,
+ outputGzFileName + ".old");
+ stateTempGzFile.renameTo(stateTempGzOldFile);
+ mergeOutputFile(stateTempGzOldFile, cachedLinesList,
+ stateTempGzFile);
+ stateTempGzOldFile.delete();
} else if (stateFullFile.exists()) {
+ updatedOutputFiles.add(outputFileName);
mergeOutputFile(stateFullFile, cachedLinesList, stateTempFile);
+ } else if (stateFullGzFile.exists()) {
+ updatedOutputFiles.add(outputGzFileName);
+ mergeOutputFile(stateFullGzFile, cachedLinesList, stateTempGzFile);
} else if (outFile.exists()) {
+ updatedOutputFiles.add(outputFileName);
mergeOutputFile(outFile, cachedLinesList, stateTempFile);
+ } else if (outGzFile.exists()) {
+ updatedOutputFiles.add(outputGzFileName);
+ mergeOutputFile(outGzFile, cachedLinesList, stateTempGzFile);
} else if (stateDiffFile.exists()) {
+ updatedOutputFiles.add(outputFileName);
mergeOutputFile(stateDiffFile, cachedLinesList, stateTempFile);
+ } else if (stateDiffGzFile.exists()) {
+ updatedOutputFiles.add(outputGzFileName);
+ mergeOutputFile(stateDiffGzFile, cachedLinesList, stateTempGzFile);
} else {
- writeNewOutputFile(cachedLinesList, stateTempFile);
+ updatedOutputFiles.add(outputGzFileName);
+ writeNewOutputFile(cachedLinesList, stateTempGzFile);
}
}
private static void mergeOutputFile(File oldOutputFile,
List<String> cachedLinesList, File newOutputFile) {
try {
- BufferedReader br = new BufferedReader(
- new FileReader(oldOutputFile));
+ BufferedReader br;
+ if (oldOutputFile.getName().endsWith(".gz")) {
+ br = new BufferedReader(new InputStreamReader(
+ new GzipCompressorInputStream(new FileInputStream(
+ oldOutputFile))));
+ } else {
+ br = new BufferedReader(new FileReader(oldOutputFile));
+ }
String line;
newOutputFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(
- new FileWriter(newOutputFile));
+ BufferedWriter bw;
+ if (newOutputFile.getName().endsWith(".gz")) {
+ bw = new BufferedWriter(new OutputStreamWriter(
+ new GzipCompressorOutputStream(new FileOutputStream(
+ newOutputFile))));
+ } else {
+ bw = new BufferedWriter(new FileWriter(newOutputFile));
+ }
int cachedLinesListPosition = 0,
totalCachedLines = cachedLinesList.size();
while ((line = br.readLine()) != null) {
@@ -388,8 +426,9 @@ public class Main {
File outputFile) {
try {
outputFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(
- new FileWriter(outputFile));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+ new GzipCompressorOutputStream(new FileOutputStream(
+ outputFile))));
for (String cachedLine : cachedLinesList) {
bw.write(cachedLine + "\n");
}
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits