killbill-memoizeit

meter: add option to disable the file backed buffer The object

12/12/2012 5:02:13 PM

Details

diff --git a/meter/src/main/java/com/ning/billing/meter/timeline/TimelineEventHandler.java b/meter/src/main/java/com/ning/billing/meter/timeline/TimelineEventHandler.java
index c74576b..b41c8dd 100644
--- a/meter/src/main/java/com/ning/billing/meter/timeline/TimelineEventHandler.java
+++ b/meter/src/main/java/com/ning/billing/meter/timeline/TimelineEventHandler.java
@@ -228,7 +228,7 @@ public class TimelineEventHandler {
             }
 
             final SourceSamplesForTimestamp sourceSamples = new SourceSamplesForTimestamp(sourceId, eventType, eventTimestamp, scalarSamples);
-            if (!replaying.get()) {
+            if (!replaying.get() && config.storeSamplesLocallyTemporary()) {
                 // Start by saving locally the samples
                 backingBuffer.append(sourceSamples);
             }
@@ -398,7 +398,7 @@ public class TimelineEventHandler {
     public void forceCommit() {
         forceCommitCallCount.incrementAndGet();
         saveAccumulators();
-        backingBuffer.discard();
+        discardBackingBuffer();
         log.info("Timelines committed");
     }
 
@@ -415,7 +415,13 @@ public class TimelineEventHandler {
             log.info("During shutdown, saved timeline accumulators");
         }
         performShutdown();
-        backingBuffer.discard();
+        discardBackingBuffer();
+    }
+
+    private void discardBackingBuffer() {
+        if (config.storeSamplesLocallyTemporary()) {
+            backingBuffer.discard();
+        }
     }
 
     private void performShutdown() {
diff --git a/util/src/main/java/com/ning/billing/util/config/MeterConfig.java b/util/src/main/java/com/ning/billing/util/config/MeterConfig.java
index 3b08fee..5b73248 100644
--- a/util/src/main/java/com/ning/billing/util/config/MeterConfig.java
+++ b/util/src/main/java/com/ning/billing/util/config/MeterConfig.java
@@ -115,4 +115,9 @@ public interface MeterConfig extends KillbillConfig {
     @Description("Spool directory for in-memory data")
     @Default("/var/tmp/killbill")
     String getSpoolDir();
+
+    @Config("killbill.usage.timelines.spoolEnabled")
+    @Description("Should data be spooled on disk before it is written in the database in case we crash?")
+    @Default("true")
+    boolean storeSamplesLocallyTemporary();
 }