目录
Ralph Goers

Towards17 (#438)

  • Interim commit

  • Remove flattened POMs

  • Fix TestRegexExtractorInterceptor*

While #431 migrated RegexExtractorInterceptorMillisSerializer correctly from Joda to Java time, it introduced a small bug in the tests, which assume that all dates are in UTC.

The original extractor interpreted them instead in the local timezone.

  • Fix TestRegexExtractorInterceptor*

While #431 migrated RegexExtractorInterceptorMillisSerializer correctly from Joda to Java time, it introduced a small bug in the tests, which assume that all dates are in UTC.

The original extractor interpreted them instead in the local timezone.

  • Fix: allow arbitrary precision in RFC 5424 timestamps

Modifies the regex in SyslogUtils to allow up to 9 digits of precision in timestamps.

This level of precision does not exist on Java 8, but since Java 9 nanosecond precision is available at least on Linux.

  • Fix: replace Mockito mock with DummySession

With the old Mockito TestMultiportSyslogTCPSource worked, because Mockito was unable to mock final methods and the real methods were called.

Now Mockito inline is able to mock final methods and operations essential for the test fail.

  • Fix: allow 199 Spotbugs violations in flume-ng-core

  • Fix: allow more Spotbugs failures

  • Fix: remove unused EnvironmentVariables

  • Fix order-dependent resolution of cross-referencing properties

When properties are defined in terms of each other, e.g. a = ${b} with b = OK, MapResolver#resolveProperties filled the result map while using that same map as the lookup source, so a reference only resolved when the referenced property had already been evaluated. As the iteration order of Properties#stringPropertyNames is unspecified, properties like a were sometimes left unresolved.

Pre-seed the map with the raw values so that every key is visible to the lookup regardless of evaluation order.

TestMapResolver covers both reference orderings, and documents that self-referencing and cyclic definitions are left to Commons Text’s recursion guard, which either returns the literal or throws IllegalStateException.

  • fix: more Spotbugs errors for flume-node

  • Get File Channel, Avro and Thrift to build

  • Build completes

  • Flume RPC moved to its own repo

  • apply change to branch

  • Update workflow to Java 17

  • Move embedded agent to Flume RPC


Co-authored-by: Piotr P. Karwasz pkarwasz-github@apache.org

4天前2026次提交

Project status

[!WARNING] As of May 2026 this project is undergoing significant rework! We do not advise using it until it is restablized and a formal release is announced. It has been marked as dormant by Apache Logging Services consensus on 2024-10-10. Users are advised to migrate to alternatives. For other inquiries, see the support policy.

Welcome to Apache Flume!

Apache Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. The system is centrally managed and allows for intelligent dynamic management. It uses a simple extensible data model that allows for online analytic application.

The Apache Flume 1.x (NG) code line is a refactoring of the first generation Flume to solve certain known issues and limitations of the original design.

Apache Flume is open-sourced under the Apache Software Foundation License v2.0.

Documentation

Documentation is included in the binary distribution under the docs directory. In source form, it can be found in the flume-ng-doc directory.

The Flume 1.x guide and FAQ are available here:

Contact us!

Bug and Issue tracker.

Compiling Flume

Compiling Flume requires the following tools:

  • Oracle Java JDK 1.8
  • Apache Maven 3.x

Note: The Apache Flume build requires more memory than the default configuration. We recommend you set the following Maven options:

export MAVEN_OPTS="-Xms512m -Xmx1024m"

To compile Flume and build a distribution tarball, run mvn install from the top level directory. The artifacts will be placed under flume-ng-dist/target/.