From 1e91d42bb7ba5bd116696b9f1353043f8df44e6f Mon Sep 17 00:00:00 2001 From: Adela Jaworowska-Nowak Date: Mon, 19 Jan 2026 09:32:49 +0100 Subject: [PATCH 1/2] debezium/dbz#1537 fix TransactionPayloadIntegrationTest Signed-off-by: Adela Jaworowska-Nowak --- .../github/shyiko/mysql/binlog/CapturingEventListener.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/github/shyiko/mysql/binlog/CapturingEventListener.java b/src/test/java/com/github/shyiko/mysql/binlog/CapturingEventListener.java index 84517b3d..2f2f6791 100644 --- a/src/test/java/com/github/shyiko/mysql/binlog/CapturingEventListener.java +++ b/src/test/java/com/github/shyiko/mysql/binlog/CapturingEventListener.java @@ -34,14 +34,12 @@ public class CapturingEventListener extends CountDownEventListener { @Override public void onEvent(Event event) { synchronized (events) { + events.add(event); if (event.getHeader().getEventType() == EventType.TRANSACTION_PAYLOAD) { for (Event uncompressedEvent : ((TransactionPayloadEventData) event.getData()).getUncompressedEvents()) { events.add(uncompressedEvent); } } - else { - events.add(event); - } super.onEvent(event); } } From 24d68e0de7e9d02b51c82bda13fdecc63f439b4e Mon Sep 17 00:00:00 2001 From: Adela Jaworowska-Nowak Date: Mon, 19 Jan 2026 13:47:49 +0100 Subject: [PATCH 2/2] debezium/dbz#1539 add custom listener for test to capture unpacked TRANSACTION_PAYLOAD events Signed-off-by: Adela Jaworowska-Nowak --- .../TransactionPayloadIntegrationTest.java | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/test/java/com/github/shyiko/mysql/binlog/TransactionPayloadIntegrationTest.java b/src/test/java/com/github/shyiko/mysql/binlog/TransactionPayloadIntegrationTest.java index a4afd19a..eefdf529 100644 --- a/src/test/java/com/github/shyiko/mysql/binlog/TransactionPayloadIntegrationTest.java +++ b/src/test/java/com/github/shyiko/mysql/binlog/TransactionPayloadIntegrationTest.java @@ -9,6 +9,7 @@ import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; import java.util.List; import static org.testng.Assert.*; @@ -42,10 +43,20 @@ public void testVeryLargeTransactionNear2GB() throws Exception { throw new SkipException("Transaction compression requires MySQL 8.0.20+"); } - CapturingEventListener capturingEventListener = new CapturingEventListener(); - client.registerEventListener(capturingEventListener); - client.unregisterEventListener(eventListener); - client.registerEventListener(eventListener); + // Custom listener that captures TRANSACTION_PAYLOAD events without unpacking them + final List payloadEvents = new ArrayList(); + CountDownEventListener payloadListener = new CountDownEventListener() { + @Override + public void onEvent(Event event) { + if (event.getHeader().getEventType() == EventType.TRANSACTION_PAYLOAD) { + synchronized (payloadEvents) { + payloadEvents.add((TransactionPayloadEventData) event.getData()); + } + } + super.onEvent(event); + } + }; + client.registerEventListener(payloadListener); try { // Create table with large BLOB column to generate big transactions @@ -60,8 +71,8 @@ public void execute(Statement statement) throws SQLException { "data3 LONGTEXT)"); } }); - eventListener.waitForAtLeast(EventType.QUERY, 2, BinaryLogClientIntegrationTest.DEFAULT_TIMEOUT); - eventListener.reset(); + payloadListener.waitForAtLeast(EventType.QUERY, 2, BinaryLogClientIntegrationTest.DEFAULT_TIMEOUT); + payloadListener.reset(); // Generate large repeating data that compresses well // We want uncompressed to be ~2-3GB but compressed to stay under 2GB @@ -114,12 +125,9 @@ public void execute(Statement statement) throws SQLException { // Wait for transaction payload event (give it more time for large transactions) long largeTimeout = BinaryLogClientIntegrationTest.DEFAULT_TIMEOUT * 1000; // 30 seconds - eventListener.waitFor(EventType.TRANSACTION_PAYLOAD, 1, largeTimeout); + payloadListener.waitFor(EventType.TRANSACTION_PAYLOAD, 1, largeTimeout); // Verify the large payload was handled correctly - List payloadEvents = - capturingEventListener.getEvents(TransactionPayloadEventData.class); - assertTrue(payloadEvents.size() > 0, "Should have captured TRANSACTION_PAYLOAD event"); TransactionPayloadEventData payloadEventData = payloadEvents.get(0); @@ -173,7 +181,7 @@ public void execute(Statement statement) throws SQLException { System.out.println("===========================================\n"); } finally { - client.unregisterEventListener(capturingEventListener); + client.unregisterEventListener(payloadListener); } } }