You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by mp...@apache.org on 2014/11/11 04:02:27 UTC

flume git commit: FLUME-2497. Support fractional seconds in Syslog timestamps

Repository: flume
Updated Branches:
  refs/heads/trunk 76ddc82fb -> 534fe268d


FLUME-2497. Support fractional seconds in Syslog timestamps

This fixes a bug in the SyslogTcpSource and SyslogUdpSource where
fractional timestamps fail to parse.

(Johny Rufus via Mike Percy)


Project: http://git-wip-us.apache.org/repos/asf/flume/repo
Commit: http://git-wip-us.apache.org/repos/asf/flume/commit/534fe268
Tree: http://git-wip-us.apache.org/repos/asf/flume/tree/534fe268
Diff: http://git-wip-us.apache.org/repos/asf/flume/diff/534fe268

Branch: refs/heads/trunk
Commit: 534fe268d1d0ad197f6e4a867ab0ae0155d1a927
Parents: 76ddc82
Author: Mike Percy <mp...@cloudera.com>
Authored: Mon Nov 10 18:57:20 2014 -0800
Committer: Mike Percy <mp...@cloudera.com>
Committed: Mon Nov 10 18:57:20 2014 -0800

----------------------------------------------------------------------
 .../java/org/apache/flume/source/SyslogUtils.java    |  3 +++
 .../org/apache/flume/source/TestSyslogUtils.java     | 15 +++++++++++++++
 2 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flume/blob/534fe268/flume-ng-core/src/main/java/org/apache/flume/source/SyslogUtils.java
----------------------------------------------------------------------
diff --git a/flume-ng-core/src/main/java/org/apache/flume/source/SyslogUtils.java b/flume-ng-core/src/main/java/org/apache/flume/source/SyslogUtils.java
index 50593a7..42e3f71 100644
--- a/flume-ng-core/src/main/java/org/apache/flume/source/SyslogUtils.java
+++ b/flume-ng-core/src/main/java/org/apache/flume/source/SyslogUtils.java
@@ -241,6 +241,9 @@ public class SyslogUtils {
     // timezone in RFC5424 is [+-]tt:tt, so remove the ':' for java date formatting
     fmt1.searchPattern.add("([+-])(\\d{2})[:](\\d{2})");
     fmt1.replacePattern.add("$1$2$3");
+    // FLUME-2497: SimpleDateFormat does not handle microseconds, Truncate after 3 digits.
+    fmt1.searchPattern.add("(T\\d{2}:\\d{2}:\\d{2}\\.\\d{3})(\\d*)");
+    fmt1.replacePattern.add("$1");
     fmt1.dateFormat.add(new SimpleDateFormat(SYSLOG_TIMESTAMP_FORMAT_RFC5424_1, Locale.ENGLISH));
     fmt1.dateFormat.add(new SimpleDateFormat(SYSLOG_TIMESTAMP_FORMAT_RFC5424_2, Locale.ENGLISH));
     fmt1.dateFormat.add(new SimpleDateFormat(SYSLOG_TIMESTAMP_FORMAT_RFC5424_3, Locale.ENGLISH));

http://git-wip-us.apache.org/repos/asf/flume/blob/534fe268/flume-ng-core/src/test/java/org/apache/flume/source/TestSyslogUtils.java
----------------------------------------------------------------------
diff --git a/flume-ng-core/src/test/java/org/apache/flume/source/TestSyslogUtils.java b/flume-ng-core/src/test/java/org/apache/flume/source/TestSyslogUtils.java
index 86ef40f..6da1733 100644
--- a/flume-ng-core/src/test/java/org/apache/flume/source/TestSyslogUtils.java
+++ b/flume-ng-core/src/test/java/org/apache/flume/source/TestSyslogUtils.java
@@ -153,6 +153,21 @@ public class TestSyslogUtils {
   }
 
   @Test
+  public void TestHeader11() throws ParseException {
+    // SyslogUtils should truncate microsecond precision to only 3 digits.
+    // This is to maintain consistency between the two syslog implementations.
+    String inputStamp  = "2014-10-03T17:20:01.123456-07:00";
+    String outputStamp = "2014-10-03T17:20:01.123-07:00";
+
+    String format1 = "yyyy-MM-dd'T'HH:mm:ss.S";
+    String host1 = "ubuntu-11.cloudera.com";
+    String data1 = "some msg";
+
+    String msg1 = "<10>" + inputStamp + " " + host1 + " " + data1 + "\n";
+    checkHeader(msg1, outputStamp, format1, host1, data1);
+  }
+
+  @Test
   public void TestRfc3164HeaderApacheLogWithNulls() throws ParseException {
     String stamp1 = "Apr  1 13:14:04";
     String format1 = "yyyyMMM d HH:mm:ss";