This is an automated email from the ASF dual-hosted git repository.

ppkarwasz pushed a commit to branch feat/fix-file-channel-windows
in repository https://gitbox.apache.org/repos/asf/logging-flume.git

commit 30bbd67821a4b4c4f074408a8f068caccdb5fefa
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Jul 30 16:32:42 2026 +0200

    Fix TestSyslogTcpSource.testSSLMessages on Windows
    
    The test wrote to the TLS socket and immediately closed it. The client
    never reads the TLS 1.3 session tickets sent by the server, so close()
    aborts the connection with a TCP RST, which on Windows discards the
    syslog record before the server reads it. Keep the socket open, waiting
    with Awaitility, until the server commits the event to the channel.
    
    Assisted-By: Claude Fable 5 <[email protected]>
---
 flume-ng-sources/flume-syslog-source/pom.xml       |  6 ++++++
 .../flume/source/syslog/TestSyslogTcpSource.java   | 22 +++++++++++++++-------
 flume-parent/pom.xml                               |  8 ++++++++
 3 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/flume-ng-sources/flume-syslog-source/pom.xml 
b/flume-ng-sources/flume-syslog-source/pom.xml
index f4bf49c1..d169d164 100644
--- a/flume-ng-sources/flume-syslog-source/pom.xml
+++ b/flume-ng-sources/flume-syslog-source/pom.xml
@@ -74,6 +74,12 @@
       <scope>test</scope>
     </dependency>
 
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+    </dependency>
+
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
diff --git 
a/flume-ng-sources/flume-syslog-source/src/test/java/org/apache/flume/source/syslog/TestSyslogTcpSource.java
 
b/flume-ng-sources/flume-syslog-source/src/test/java/org/apache/flume/source/syslog/TestSyslogTcpSource.java
index cbc6f404..d6cf09a4 100644
--- 
a/flume-ng-sources/flume-syslog-source/src/test/java/org/apache/flume/source/syslog/TestSyslogTcpSource.java
+++ 
b/flume-ng-sources/flume-syslog-source/src/test/java/org/apache/flume/source/syslog/TestSyslogTcpSource.java
@@ -16,7 +16,9 @@
  */
 package org.apache.flume.source.syslog;
 
+import static org.awaitility.Awaitility.await;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
@@ -269,17 +271,23 @@ public class TestSyslogTcpSource {
                 },
                 null);
         SocketFactory socketFactory = sslContext.getSocketFactory();
-        Socket socket = socketFactory.createSocket();
-        socket.connect(address);
-        OutputStream outputStream = socket.getOutputStream();
-        outputStream.write(bodyWithTandH.getBytes());
-        socket.close();
-        // Thread.sleep(100);
+        try (Socket socket = socketFactory.createSocket()) {
+            socket.connect(address);
+            OutputStream outputStream = socket.getOutputStream();
+            outputStream.write(bodyWithTandH.getBytes());
+            outputStream.flush();
+            // Close the socket only after the server has committed the event 
to the channel.
+            // The client never reads the TLS 1.3 session tickets sent by the 
server,
+            // so an earlier close() aborts the connection with a TCP RST,
+            // which on Windows can discard the data before the server reads 
it.
+            await().until(() -> 
source.getSourceCounter().getEventAcceptedCount() >= 1);
+        }
         Transaction transaction = channel.getTransaction();
         transaction.begin();
 
         Event event = channel.take();
-        assertEquals(new String(event.getBody()), data1);
+        assertNotNull("The source accepted an event, but the channel did not 
deliver one.", event);
+        assertEquals(data1, new String(event.getBody()));
         transaction.commit();
         transaction.close();
     }
diff --git a/flume-parent/pom.xml b/flume-parent/pom.xml
index 56a3f80b..00c1969a 100644
--- a/flume-parent/pom.xml
+++ b/flume-parent/pom.xml
@@ -95,6 +95,7 @@
     <test.include.pattern>**/Test*.java</test.include.pattern>
     <redirectTestOutput>true</redirectTestOutput>
 
+    <awaitility.version>4.3.0</awaitility.version>
     <curator.version>5.9.0</curator.version>
     <fest-reflect.version>1.4.1</fest-reflect.version>
     <hadoop.version>3.5.0</hadoop.version>
@@ -118,6 +119,13 @@
         <scope>import</scope>
       </dependency>
 
+      <dependency>
+        <groupId>org.awaitility</groupId>
+        <artifactId>awaitility</artifactId>
+        <version>${awaitility.version}</version>
+        <scope>test</scope>
+      </dependency>
+
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>

Reply via email to