Details
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index f5aa44e..551e939 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -631,6 +631,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
useExistingCBAFromTransaction(accountId, entitySqlDaoWrapperFactory, context);
// Notify the bus since the balance of the invoice changed
+ // TODO should we post an InvoiceCreationInternalEvent event instead? Note! This will trigger a payment (see InvoiceHandler)
notifyBusOfInvoiceAdjustment(entitySqlDaoWrapperFactory, invoiceId, accountId, context.getUserToken(), context);
return externalCharge;
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();
}