From 647692fbe78ea9e67f35ed97d79a12d05201a837 Mon Sep 17 00:00:00 2001
From: Peter Timson
Date: Tue, 14 Feb 2017 11:37:49 +0000
Subject: [PATCH] Bug Fix Null Pointer on Stop (#3)
- S3 Delivery Stream threw a null pointer if was stopped before written
---
pom.xml | 2 +-
.../firehose/stream/S3DeliveryStream.java | 17 +++++++++--------
.../firehose/stream/S3DeliveryStreamTest.java | 5 +++++
3 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/pom.xml b/pom.xml
index 680227b..2bdf59a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.timson
firehose-mock
- 0.0.2
+ 0.0.3
Firehose Mock
https://github.com/ptimson/firehose-mock
diff --git a/src/main/java/io/timson/firehose/stream/S3DeliveryStream.java b/src/main/java/io/timson/firehose/stream/S3DeliveryStream.java
index a5c4c84..ad18d67 100644
--- a/src/main/java/io/timson/firehose/stream/S3DeliveryStream.java
+++ b/src/main/java/io/timson/firehose/stream/S3DeliveryStream.java
@@ -34,11 +34,15 @@ public class S3DeliveryStream implements DeliveryStream {
private final Long bufferIntervalMs;
private final Long bufferFlushSizeBytes;
private final CompressionFormat compressionFormat;
-
+ private final TimerTask flushTimerTask = new TimerTask() {
+ @Override
+ public void run() {
+ flush();
+ }
+ };
private StringBuilder buffer = new StringBuilder();
private long bufferSize = 0;
private Timer flushTimer;
- private TimerTask flushTimerTask;
private S3DeliveryStream(String name,
S3Client s3Client,
@@ -64,17 +68,14 @@ private String extractBucketName(String s3BucketArn) {
}
private void startFlushTimer() {
- flushTimerTask = new TimerTask() {
- @Override
- public void run() {
- flush();
- }
- };
flushTimer = new Timer();
flushTimer.schedule(flushTimerTask, bufferIntervalMs);
}
private void stopFlushTimer() {
+ if (flushTimer == null) {
+ return;
+ }
flushTimer.cancel();
}
diff --git a/src/test/java/io/timson/firehose/stream/S3DeliveryStreamTest.java b/src/test/java/io/timson/firehose/stream/S3DeliveryStreamTest.java
index c13c367..4b96ed0 100644
--- a/src/test/java/io/timson/firehose/stream/S3DeliveryStreamTest.java
+++ b/src/test/java/io/timson/firehose/stream/S3DeliveryStreamTest.java
@@ -144,4 +144,9 @@ public void shouldCreateSnappyS3Object_WhenEncryptionTypeIsSnappy() throws Excep
verify(s3Client, only()).createSnappyObject(eq(S3_BUCKET), anyString(), eq(MESSAGE_1));
}
+ @Test
+ public void shouldThrowNullPointer_WhenStoppedBeforeMessageWritten() throws Exception {
+ stream.stop();
+ }
+
}
\ No newline at end of file