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";