You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2021/10/13 17:48:52 UTC

[geode] branch support/1.14 updated: GEODE-9625: Only serialize transaction metadata when grouping enabled. (#6984)

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

jbarrett pushed a commit to branch support/1.14
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/support/1.14 by this push:
     new 3a7b7ba  GEODE-9625: Only serialize transaction metadata when grouping enabled. (#6984)
3a7b7ba is described below

commit 3a7b7bae47b454b8c9f47f80be3a0a90a4877343
Author: Jacob Barrett <ja...@vmware.com>
AuthorDate: Wed Oct 13 10:47:48 2021 -0700

    GEODE-9625: Only serialize transaction metadata when grouping enabled. (#6984)
    
    (cherry picked from commit ab651eba9558752fe1336919e462350f4581a22a)
---
 .../apache/geode/codeAnalysis/excludedClasses.txt  |  3 +-
 .../wan/AbstractGatewaySenderEventProcessor.java   | 18 ++++-
 .../internal/cache/wan/GatewaySenderEventImpl.java | 68 ++++++++++-------
 .../ParallelGatewaySenderEventProcessor.java       |  2 +-
 .../serial/SerialGatewaySenderEventProcessor.java  |  8 +-
 .../AbstractGatewaySenderEventProcessorTest.java   | 32 +++++++-
 .../cache/wan/GatewaySenderEventImplTest.java      | 86 ++++++++++++++++++++++
 .../wan/parallel/ParallelGatewaySenderHelper.java  |  3 +-
 ...SerialGatewaySenderEventProcessorJUnitTest.java |  2 +-
 9 files changed, 187 insertions(+), 35 deletions(-)

diff --git a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
index 99ab950..675e272 100644
--- a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
+++ b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -105,4 +105,5 @@ org/apache/geode/cache/query/internal/xml/ElementType
 org/apache/geode/cache/query/internal/xml/ElementType$1
 org/apache/geode/cache/query/internal/xml/ElementType$2
 org/apache/geode/cache/query/internal/xml/ElementType$3
-org/apache/geode/internal/net/ByteBufferVendor$OpenAttemptTimedOut
\ No newline at end of file
+org/apache/geode/internal/net/ByteBufferVendor$OpenAttemptTimedOut
+org/apache/geode/internal/cache/wan/GatewaySenderEventImpl$TransactionMetadataDisposition
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessor.java
index 8545ab9..4c82b66 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessor.java
@@ -14,6 +14,10 @@
  */
 package org.apache.geode.internal.cache.wan;
 
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.EXCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE_LAST_EVENT;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -886,7 +890,7 @@ public abstract class AbstractGatewaySenderEventProcessor extends LoggingThread
           event.setCallbackArgument(geCallbackArg);
           // OFFHEAP: event for pdx type meta data so it should never be off-heap
           GatewaySenderEventImpl pdxSenderEvent =
-              new GatewaySenderEventImpl(EnumListenerEvent.AFTER_UPDATE, event, null, false);
+              new GatewaySenderEventImpl(EnumListenerEvent.AFTER_UPDATE, event, null);
 
           pdxEventsMap.put(typeEntry.getKey(), pdxSenderEvent);
           pdxSenderEventsList.add(pdxSenderEvent);
@@ -1309,6 +1313,18 @@ public abstract class AbstractGatewaySenderEventProcessor extends LoggingThread
 
   }
 
+  protected GatewaySenderEventImpl.TransactionMetadataDisposition getTransactionMetadataDisposition(
+      final boolean isLastEventInTransaction) {
+    if (getSender().mustGroupTransactionEvents()) {
+      if (isLastEventInTransaction) {
+        return INCLUDE_LAST_EVENT;
+      }
+      return INCLUDE;
+    } else {
+      return EXCLUDE;
+    }
+  }
+
   /**
    * Logs a batch of events.
    *
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
index e4a8b75..47ea4c3 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImpl.java
@@ -15,6 +15,9 @@
 
 package org.apache.geode.internal.cache.wan;
 
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.EXCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE_LAST_EVENT;
+
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
@@ -181,7 +184,8 @@ public class GatewaySenderEventImpl
 
   private short version;
 
-  private boolean isLastEventInTransaction = true;
+  private boolean isLastEventInTransaction = false;
+
   private TransactionId transactionId = null;
 
 
@@ -221,58 +225,54 @@ public class GatewaySenderEventImpl
 
   private volatile int serializedValueSize = DEFAULT_SERIALIZED_VALUE_SIZE;
 
-  // /**
-  // * Is this thread in the process of deserializing this event?
-  // */
-  // public static final ThreadLocal isDeserializingValue = new ThreadLocal() {
-  // @Override
-  // protected Object initialValue() {
-  // return Boolean.FALSE;
-  // }
-  // };
+
 
   /**
-   * Constructor. No-arg constructor for data serialization.
+   * No-arg constructor for data serialization.
    *
    * @see DataSerializer
    */
   public GatewaySenderEventImpl() {}
 
   /**
-   * Constructor. Creates an initialized <code>GatewayEventImpl</code>
-   *
    * @param operation The operation for this event (e.g. AFTER_CREATE)
    * @param event The <code>CacheEvent</code> on which this <code>GatewayEventImpl</code> is based
    * @param substituteValue The value to be enqueued instead of the value in the event.
-   * @param isLastEventInTransaction true if the event is the last in the transaction
+   * @param transactionMetadataDisposition indicating the inclusion of transaction metadata.
    *
    */
   @Retained
   public GatewaySenderEventImpl(EnumListenerEvent operation, CacheEvent event,
-      Object substituteValue, boolean isLastEventInTransaction) throws IOException {
-    this(operation, event, substituteValue, true, isLastEventInTransaction);
+      Object substituteValue, final TransactionMetadataDisposition transactionMetadataDisposition)
+      throws IOException {
+    this(operation, event, substituteValue, true, transactionMetadataDisposition);
+  }
+
+  @Retained
+  public GatewaySenderEventImpl(EnumListenerEvent operation, CacheEvent<?, ?> event,
+      Object substituteValue) throws IOException {
+    this(operation, event, substituteValue, true, EXCLUDE);
   }
 
   @Retained
   public GatewaySenderEventImpl(EnumListenerEvent operation, CacheEvent event,
       Object substituteValue, boolean initialize, int bucketId,
-      boolean isLastEventInTransaction) throws IOException {
-    this(operation, event, substituteValue, initialize, isLastEventInTransaction);
+      final TransactionMetadataDisposition transactionMetadataDisposition) throws IOException {
+    this(operation, event, substituteValue, initialize, transactionMetadataDisposition);
     this.bucketId = bucketId;
   }
 
   /**
-   * Constructor.
-   *
    * @param operation The operation for this event (e.g. AFTER_CREATE)
    * @param ce The <code>CacheEvent</code> on which this <code>GatewayEventImpl</code> is based
    * @param substituteValue The value to be enqueued instead of the value in the event.
    * @param initialize Whether to initialize this instance
-   *
+   * @param transactionMetadataDisposition indicating the inclusion of transaction metadata.
    */
   @Retained
   public GatewaySenderEventImpl(EnumListenerEvent operation, CacheEvent ce, Object substituteValue,
-      boolean initialize, boolean isLastEventInTransaction) throws IOException {
+      boolean initialize,
+      final TransactionMetadataDisposition transactionMetadataDisposition) throws IOException {
     // Set the operation and event
     final EntryEventImpl event = (EntryEventImpl) ce;
     this.operation = operation;
@@ -328,9 +328,11 @@ public class GatewaySenderEventImpl
     }
     this.isConcurrencyConflict = event.isConcurrencyConflict();
 
-    this.transactionId = event.getTransactionId();
-    this.isLastEventInTransaction = isLastEventInTransaction;
-
+    if (transactionMetadataDisposition != EXCLUDE) {
+      transactionId = event.getTransactionId();
+      isLastEventInTransaction =
+          transactionMetadataDisposition == INCLUDE_LAST_EVENT && null != transactionId;
+    }
   }
 
   /**
@@ -1370,4 +1372,20 @@ public class GatewaySenderEventImpl
       this.value = getSerializedValue();
     }
   }
+
+  public enum TransactionMetadataDisposition {
+    /**
+     * Transaction metadata should be excluded from the event.
+     */
+    EXCLUDE,
+    /**
+     * Transaction metadata should be included in the event.
+     */
+    INCLUDE,
+    /**
+     * Transaction metadata should be included in the event and this is the last event in the
+     * transaction.
+     */
+    INCLUDE_LAST_EVENT,
+  }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderEventProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderEventProcessor.java
index 65567f0..5c08283 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderEventProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderEventProcessor.java
@@ -123,7 +123,7 @@ public class ParallelGatewaySenderEventProcessor extends AbstractGatewaySenderEv
     // change 42466). bucketID is merged with eventID.getBucketID
     gatewayQueueEvent =
         new GatewaySenderEventImpl(operation, event, substituteValue, true, eventID.getBucketID(),
-            isLastEventInTransaction);
+            getTransactionMetadataDisposition(isLastEventInTransaction));
 
     enqueueEvent(gatewayQueueEvent);
   }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java
index 69142ce..cec2b86 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessor.java
@@ -428,7 +428,7 @@ public class SerialGatewaySenderEventProcessor extends AbstractGatewaySenderEven
           if (!(isUpdateVersionStamp || isCME_And_NotOriginRemote)) {
             senderEvent =
                 new GatewaySenderEventImpl(operation, event, substituteValue, false,
-                    isLastEventInTransaction);
+                    getTransactionMetadataDisposition(isLastEventInTransaction));
             handleSecondaryEvent(senderEvent);
           }
         }
@@ -442,9 +442,9 @@ public class SerialGatewaySenderEventProcessor extends AbstractGatewaySenderEven
         waitForFailoverCompletion();
       }
       // If it is, create and enqueue an initialized GatewayEventImpl
-      senderEvent =
-          new GatewaySenderEventImpl(operation, event, substituteValue, isLastEventInTransaction); // OFFHEAP
-                                                                                                   // ok
+      // OFFHEAP ok
+      senderEvent = new GatewaySenderEventImpl(operation, event, substituteValue,
+          getTransactionMetadataDisposition(isLastEventInTransaction));
 
       boolean queuedEvent = false;
       try {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessorTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessorTest.java
index e9c83d6..ad99248 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessorTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AbstractGatewaySenderEventProcessorTest.java
@@ -14,7 +14,11 @@
  */
 package org.apache.geode.internal.cache.wan;
 
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.EXCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE_LAST_EVENT;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.doCallRealMethod;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -27,7 +31,7 @@ import org.apache.geode.internal.cache.RegionQueue;
 
 public class AbstractGatewaySenderEventProcessorTest {
 
-  private RegionQueue queue = mock(RegionQueue.class);
+  private final RegionQueue queue = mock(RegionQueue.class);
 
   @Test
   public void eventQueueSizeReturnsQueueSize() {
@@ -49,4 +53,30 @@ public class AbstractGatewaySenderEventProcessorTest {
 
     verify(queue, never()).size();
   }
+
+  @Test
+  public void getTransactionMetadataDispositionIncludedWhenSenderMustGroupTransactionEventsTrue() {
+    final AbstractGatewaySenderEventProcessor processor =
+        mock(AbstractGatewaySenderEventProcessor.class);
+    final AbstractGatewaySender sender = mock(AbstractGatewaySender.class);
+    when(processor.getSender()).thenReturn(sender);
+    when(sender.mustGroupTransactionEvents()).thenReturn(true);
+    when(processor.getTransactionMetadataDisposition(anyBoolean())).thenCallRealMethod();
+
+    assertThat(processor.getTransactionMetadataDisposition(false)).isEqualTo(INCLUDE);
+    assertThat(processor.getTransactionMetadataDisposition(true)).isEqualTo(INCLUDE_LAST_EVENT);
+  }
+
+  @Test
+  public void getTransactionMetadataDispositionExcludedWhenSenderMustGroupTransactionEventsFalse() {
+    final AbstractGatewaySenderEventProcessor processor =
+        mock(AbstractGatewaySenderEventProcessor.class);
+    final AbstractGatewaySender sender = mock(AbstractGatewaySender.class);
+    when(sender.mustGroupTransactionEvents()).thenReturn(false);
+    when(processor.getSender()).thenReturn(sender);
+    when(processor.getTransactionMetadataDisposition(anyBoolean())).thenCallRealMethod();
+
+    assertThat(processor.getTransactionMetadataDisposition(false)).isEqualTo(EXCLUDE);
+    assertThat(processor.getTransactionMetadataDisposition(true)).isEqualTo(EXCLUDE);
+  }
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImplTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImplTest.java
index 3add1a1..fcd7376 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImplTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/GatewaySenderEventImplTest.java
@@ -14,6 +14,9 @@
  */
 package org.apache.geode.internal.cache.wan;
 
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.EXCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.INCLUDE_LAST_EVENT;
 import static org.apache.geode.internal.serialization.KnownVersion.GEODE_1_13_0;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
@@ -38,6 +41,8 @@ import org.apache.geode.cache.Operation;
 import org.apache.geode.cache.TransactionId;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.InternalDataSerializer;
+import org.apache.geode.internal.cache.EntryEventImpl;
+import org.apache.geode.internal.cache.EnumListenerEvent;
 import org.apache.geode.internal.cache.EventID;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.LocalRegion;
@@ -185,4 +190,85 @@ public class GatewaySenderEventImplTest {
     assertThat(event).isNotEqualTo(eventDifferentRegion);
   }
 
+  @Test
+  public void constructsWithTransactionMetadataWhenInclude() throws IOException {
+    final EntryEventImpl cacheEvent = mockEntryEventImpl(mock(TransactionId.class));
+
+    final GatewaySenderEventImpl gatewaySenderEvent =
+        new GatewaySenderEventImpl(EnumListenerEvent.AFTER_CREATE, cacheEvent, null, INCLUDE);
+
+    assertThat(gatewaySenderEvent.getTransactionId()).isNotNull();
+    assertThat(gatewaySenderEvent.isLastEventInTransaction()).isFalse();
+  }
+
+  @Test
+  public void constructsWithTransactionMetadataWhenIncludedLastEvent() throws IOException {
+    final EntryEventImpl cacheEvent = mockEntryEventImpl(mock(TransactionId.class));
+
+    final GatewaySenderEventImpl gatewaySenderEvent =
+        new GatewaySenderEventImpl(EnumListenerEvent.AFTER_CREATE, cacheEvent, null,
+            INCLUDE_LAST_EVENT);
+
+    assertThat(gatewaySenderEvent.getTransactionId()).isNotNull();
+    assertThat(gatewaySenderEvent.isLastEventInTransaction()).isTrue();
+  }
+
+  @Test
+  public void constructsWithoutTransactionMetadataWhenExcluded() throws IOException {
+    final EntryEventImpl cacheEvent = mockEntryEventImpl(mock(TransactionId.class));
+
+    final GatewaySenderEventImpl gatewaySenderEvent =
+        new GatewaySenderEventImpl(EnumListenerEvent.AFTER_CREATE, cacheEvent, null, EXCLUDE);
+
+    assertThat(gatewaySenderEvent.getTransactionId()).isNull();
+    assertThat(gatewaySenderEvent.isLastEventInTransaction()).isFalse();
+  }
+
+  @Test
+  public void constructsWithoutTransactionMetadataWhenIncludedButNotTransactionEvent()
+      throws IOException {
+    final EntryEventImpl cacheEvent = mockEntryEventImpl(null);
+
+    final GatewaySenderEventImpl gatewaySenderEvent =
+        new GatewaySenderEventImpl(EnumListenerEvent.AFTER_CREATE, cacheEvent, null, INCLUDE);
+
+    assertThat(gatewaySenderEvent.getTransactionId()).isNull();
+    assertThat(gatewaySenderEvent.isLastEventInTransaction()).isFalse();
+  }
+
+  @Test
+  public void constructsWithoutTransactionMetadataWhenIncludedLastEventButNotTransactionEvent()
+      throws IOException {
+    final EntryEventImpl cacheEvent = mockEntryEventImpl(null);
+
+    final GatewaySenderEventImpl gatewaySenderEvent =
+        new GatewaySenderEventImpl(EnumListenerEvent.AFTER_CREATE, cacheEvent, null,
+            INCLUDE_LAST_EVENT);
+
+    assertThat(gatewaySenderEvent.getTransactionId()).isNull();
+    assertThat(gatewaySenderEvent.isLastEventInTransaction()).isFalse();
+  }
+
+  @Test
+  public void constructsWithoutTransactionMetadataWhenExcludedButNotTransactionEvent()
+      throws IOException {
+    final EntryEventImpl cacheEvent = mockEntryEventImpl(null);
+
+    final GatewaySenderEventImpl gatewaySenderEvent =
+        new GatewaySenderEventImpl(EnumListenerEvent.AFTER_CREATE, cacheEvent, null, EXCLUDE);
+
+    assertThat(gatewaySenderEvent.getTransactionId()).isNull();
+    assertThat(gatewaySenderEvent.isLastEventInTransaction()).isFalse();
+  }
+
+  private EntryEventImpl mockEntryEventImpl(final TransactionId transactionId) {
+    final EntryEventImpl cacheEvent = mock(EntryEventImpl.class);
+    when(cacheEvent.getEventId()).thenReturn(mock(EventID.class));
+    when(cacheEvent.getOperation()).thenReturn(Operation.CREATE);
+    when(cacheEvent.getTransactionId()).thenReturn(transactionId);
+    final LocalRegion region = mock(LocalRegion.class);
+    when(cacheEvent.getRegion()).thenReturn(region);
+    return cacheEvent;
+  }
+
 }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderHelper.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderHelper.java
index 37629fc..d06a29f 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderHelper.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderHelper.java
@@ -15,6 +15,7 @@
 package org.apache.geode.internal.cache.wan.parallel;
 
 import static org.apache.geode.cache.Region.SEPARATOR;
+import static org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.TransactionMetadataDisposition.EXCLUDE;
 import static org.apache.geode.internal.statistics.StatisticsClockFactory.disabledClock;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
@@ -94,7 +95,7 @@ public class ParallelGatewaySenderHelper {
     eei.setEventId(new EventID(new byte[16], threadId, sequenceId, bucketId));
     GatewaySenderEventImpl gsei =
         new GatewaySenderEventImpl(getEnumListenerEvent(operation), eei, null, true, bucketId,
-            false);
+            EXCLUDE);
     gsei.setShadowKey(shadowKey);
     return gsei;
   }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessorJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessorJUnitTest.java
index 142342a..5d46530 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessorJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/serial/SerialGatewaySenderEventProcessorJUnitTest.java
@@ -359,7 +359,7 @@ public class SerialGatewaySenderEventProcessorJUnitTest {
     EntryEventImpl eei = EntryEventImpl.create(lr, operation, key, value, null, false, null);
     eei.setEventId(new EventID(new byte[16], threadId, sequenceId));
     GatewaySenderEventImpl gsei =
-        new GatewaySenderEventImpl(getEnumListenerEvent(operation), eei, null, true, false);
+        new GatewaySenderEventImpl(getEnumListenerEvent(operation), eei, null);
     return gsei;
   }