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

jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 3a8044a  GEODE-10191: Radish RENAME and RESTORE create notification 
events (#7537)
3a8044a is described below

commit 3a8044aeec9d492182c4bf1a4a311fdc382a393d
Author: Jens Deppe <[email protected]>
AuthorDate: Thu Mar 31 20:26:59 2022 -0700

    GEODE-10191: Radish RENAME and RESTORE create notification events (#7537)
    
    - Both of these commands have the ability to create events to satisfy
      BLPOP.
    - Introduce a NotificationEvent enum which is passed to fireEvent.
    - Previously the RedisCommandType was being passed, but this does not
      work for RENAME which creates RENAME_FROM and RENAME_TO events. In the
      future, other commands will need to create multiple events too.
---
 .../list/AbstractBLPopIntegrationTest.java         | 32 ++++++++++++++++++++++
 .../internal/eventing/EventDistributorTest.java    |  3 +-
 .../apache/geode/codeAnalysis/excludedClasses.txt  |  1 +
 .../executor/key/AbstractRenameExecutor.java       |  2 +-
 .../commands/executor/key/RestoreExecutor.java     |  2 ++
 .../redis/internal/data/AbstractRedisData.java     | 10 +++++--
 .../geode/redis/internal/data/NullRedisData.java   |  3 +-
 .../geode/redis/internal/data/NullRedisList.java   |  6 ++--
 .../geode/redis/internal/data/RedisData.java       |  3 +-
 .../geode/redis/internal/data/RedisList.java       |  6 ++--
 .../internal/eventing/BlockingCommandListener.java |  3 +-
 .../redis/internal/eventing/EventDistributor.java  |  5 ++--
 .../redis/internal/eventing/EventListener.java     |  5 ++--
 .../redis/internal/eventing/EventResponse.java     |  3 +-
 .../{EventResponse.java => NotificationEvent.java} | 25 ++++++++---------
 .../internal/netty/ExecutionHandlerContext.java    |  5 ++--
 16 files changed, 75 insertions(+), 39 deletions(-)

diff --git 
a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractBLPopIntegrationTest.java
 
b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractBLPopIntegrationTest.java
index fd9b12a..f4d2fea 100755
--- 
a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractBLPopIntegrationTest.java
+++ 
b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/list/AbstractBLPopIntegrationTest.java
@@ -163,6 +163,38 @@ public abstract class AbstractBLPopIntegrationTest 
implements RedisIntegrationTe
   }
 
   @Test
+  public void testBLPopWhenValueGetsCreated_withRename() throws Exception {
+    String initialName = "{tag}initial";
+    String changedName = "{tag}changed";
+    jedis.lpush(initialName, "value1", "value2");
+
+    Future<List<String>> future = executor.submit(() -> jedis.blpop(10, 
changedName));
+    awaitEventDistributorSize(1);
+
+    jedis.rename(initialName, changedName);
+
+    assertThat(future.get()).containsExactly(changedName, "value2");
+    assertThat(jedis.lpop(changedName)).isEqualTo("value1");
+  }
+
+  @Test
+  public void testBLPopWhenValueGetsCreated_withRestore() throws Exception {
+    String key = "key";
+    jedis.lpush(key, "value1", "value2");
+
+    byte[] dumpBytes = jedis.dump(key);
+    jedis.del(key);
+
+    Future<List<String>> future = executor.submit(() -> jedis.blpop(10, key));
+    awaitEventDistributorSize(1);
+
+    jedis.restore(key, 0, dumpBytes);
+
+    assertThat(future.get()).containsExactly(key, "value2");
+    assertThat(jedis.lpop(key)).isEqualTo("value1");
+  }
+
+  @Test
   public void testConcurrentBLPop() throws Exception {
     int totalElements = 10_000;
     List<Object> accumulated = Collections.synchronizedList(new 
ArrayList<>(totalElements + 2));
diff --git 
a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/eventing/EventDistributorTest.java
 
b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/eventing/EventDistributorTest.java
index d8a4d1c..b7a3cb6 100644
--- 
a/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/eventing/EventDistributorTest.java
+++ 
b/geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/eventing/EventDistributorTest.java
@@ -27,7 +27,6 @@ import java.util.stream.Collectors;
 import org.junit.Test;
 
 import org.apache.geode.redis.ConcurrentLoopingThreads;
-import org.apache.geode.redis.internal.commands.RedisCommandType;
 import org.apache.geode.redis.internal.data.RedisKey;
 
 public class EventDistributorTest {
@@ -45,7 +44,7 @@ public class EventDistributorTest {
     }
 
     @Override
-    public EventResponse process(RedisCommandType commandType, RedisKey key) {
+    public EventResponse process(NotificationEvent notificationEvent, RedisKey 
key) {
       fired += 1;
       return EventResponse.REMOVE_AND_STOP;
     }
diff --git 
a/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
 
b/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
index 29d0c21..4948102 100644
--- 
a/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
+++ 
b/geode-for-redis/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -16,6 +16,7 @@ 
org/apache/geode/redis/internal/data/collections/SizeableByteArrayList
 
org/apache/geode/redis/internal/data/collections/SizeableBytes2ObjectOpenCustomHashMapWithCursor
 
org/apache/geode/redis/internal/data/collections/SizeableObjectOpenCustomHashSetWithCursor
 org/apache/geode/redis/internal/eventing/EventResponse
+org/apache/geode/redis/internal/eventing/NotificationEvent
 org/apache/geode/redis/internal/pubsub/Publisher$PublishFunction
 
org/apache/geode/redis/internal/services/cluster/RedisMemberInfoRetrievalFunction
 org/apache/geode/redis/internal/services/locking/StripedExecutorService$State
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/AbstractRenameExecutor.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/AbstractRenameExecutor.java
index c7aef9c..855320e 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/AbstractRenameExecutor.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/AbstractRenameExecutor.java
@@ -56,7 +56,7 @@ public abstract class AbstractRenameExecutor implements 
CommandExecutor {
 
     return context.lockedExecuteInTransaction(oldKey, keysToLock,
         () -> context.getRedisData(oldKey)
-            .rename(context.getRegion(), oldKey, newKey, ifTargetNotExists));
+            .rename(context, oldKey, newKey, ifTargetNotExists));
   }
 
   protected RedisResponse getNoSuchKeyResponse() {
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/RestoreExecutor.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/RestoreExecutor.java
index 48bc42d..d683481 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/RestoreExecutor.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/key/RestoreExecutor.java
@@ -31,6 +31,7 @@ import org.apache.geode.redis.internal.data.AbstractRedisData;
 import org.apache.geode.redis.internal.data.RedisData;
 import org.apache.geode.redis.internal.data.RedisKey;
 import org.apache.geode.redis.internal.data.RedisKeyExistsException;
+import org.apache.geode.redis.internal.eventing.NotificationEvent;
 import org.apache.geode.redis.internal.netty.Coder;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -103,6 +104,7 @@ public class RestoreExecutor implements CommandExecutor {
       RedisData value = data.restore(dataBytes, options.isReplace());
       ((AbstractRedisData) value).setExpirationTimestampNoDelta(expireAt);
       context.getRegion().put(key, value);
+      context.fireEvent(NotificationEvent.RESTORE, key);
       return null;
     });
   }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
index d0b4cdb..6f2692c 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/AbstractRedisData.java
@@ -72,6 +72,8 @@ import 
org.apache.geode.redis.internal.data.delta.ReplaceByteAtOffset;
 import org.apache.geode.redis.internal.data.delta.SetByteArray;
 import org.apache.geode.redis.internal.data.delta.SetByteArrayAndTimestamp;
 import org.apache.geode.redis.internal.data.delta.SetTimestamp;
+import org.apache.geode.redis.internal.eventing.NotificationEvent;
+import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 import org.apache.geode.redis.internal.services.RegionProvider;
 
 public abstract class AbstractRedisData implements RedisData {
@@ -133,9 +135,9 @@ public abstract class AbstractRedisData implements 
RedisData {
   }
 
   @Override
-  public boolean rename(Region<RedisKey, RedisData> region, RedisKey oldKey, 
RedisKey newKey,
+  public boolean rename(ExecutionHandlerContext context, RedisKey oldKey, 
RedisKey newKey,
       boolean ifTargetNotExists) {
-
+    Region<RedisKey, RedisData> region = context.getRegion();
     if (ifTargetNotExists) {
       try {
         region.create(newKey, this, primaryMoveReadLockAcquired);
@@ -150,6 +152,10 @@ public abstract class AbstractRedisData implements 
RedisData {
       region.destroy(oldKey, primaryMoveReadLockAcquired);
     } catch (EntryNotFoundException ignore) {
     }
+
+    context.fireEvent(NotificationEvent.RENAME_FROM, oldKey);
+    context.fireEvent(NotificationEvent.RENAME_TO, newKey);
+
     return true;
   }
 
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
index 978397b..4b11d7c 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisData.java
@@ -25,6 +25,7 @@ import org.apache.geode.cache.Region;
 import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.KnownVersion;
 import org.apache.geode.internal.serialization.SerializationContext;
+import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 import org.apache.geode.redis.internal.services.RegionProvider;
 
 /**
@@ -86,7 +87,7 @@ public class NullRedisData implements RedisData {
   }
 
   @Override
-  public boolean rename(Region<RedisKey, RedisData> region, RedisKey oldKey, 
RedisKey newKey,
+  public boolean rename(ExecutionHandlerContext context, RedisKey oldKey, 
RedisKey newKey,
       boolean ifNotExists) {
     return false;
   }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
index e58aefe..fc4e990 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/NullRedisList.java
@@ -20,7 +20,7 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.geode.cache.Region;
-import org.apache.geode.redis.internal.commands.RedisCommandType;
+import org.apache.geode.redis.internal.eventing.NotificationEvent;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 class NullRedisList extends RedisList {
@@ -62,7 +62,7 @@ class NullRedisList extends RedisList {
       newList.elementPushHead(element);
     }
     context.getRegion().create(key, newList);
-    context.fireEvent(RedisCommandType.LPUSH, key);
+    context.fireEvent(NotificationEvent.LPUSH, key);
 
     return elementsToAdd.size();
   }
@@ -79,7 +79,7 @@ class NullRedisList extends RedisList {
       newList.elementPushTail(element);
     }
     context.getRegion().create(key, newList);
-    context.fireEvent(RedisCommandType.RPUSH, key);
+    context.fireEvent(NotificationEvent.RPUSH, key);
 
     return elementsToAdd.size();
   }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
index 57d0942..cbfb691 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisData.java
@@ -34,6 +34,7 @@ import 
org.apache.geode.internal.serialization.VersionedDataInputStream;
 import org.apache.geode.internal.size.Sizeable;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 import org.apache.geode.redis.internal.RedisException;
+import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 import org.apache.geode.redis.internal.services.RegionProvider;
 
 public interface RedisData extends Delta, DataSerializableFixedID, Sizeable {
@@ -69,7 +70,7 @@ public interface RedisData extends Delta, 
DataSerializableFixedID, Sizeable {
 
   String type();
 
-  boolean rename(Region<RedisKey, RedisData> region, RedisKey oldKey, RedisKey 
newKey,
+  boolean rename(ExecutionHandlerContext context, RedisKey oldKey, RedisKey 
newKey,
       boolean ifTargetNotExists);
 
   default boolean getForceRecalculateSize() {
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
index c82a2ae..823a91c 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisList.java
@@ -37,7 +37,6 @@ import org.apache.geode.internal.serialization.KnownVersion;
 import org.apache.geode.internal.serialization.SerializationContext;
 import org.apache.geode.redis.internal.RedisException;
 import org.apache.geode.redis.internal.commands.Command;
-import org.apache.geode.redis.internal.commands.RedisCommandType;
 import org.apache.geode.redis.internal.data.collections.SizeableByteArrayList;
 import org.apache.geode.redis.internal.data.delta.AddByteArrays;
 import org.apache.geode.redis.internal.data.delta.AddByteArraysTail;
@@ -45,6 +44,7 @@ import 
org.apache.geode.redis.internal.data.delta.InsertByteArray;
 import org.apache.geode.redis.internal.data.delta.RemoveElementsByIndex;
 import org.apache.geode.redis.internal.data.delta.ReplaceByteArrayAtOffset;
 import org.apache.geode.redis.internal.eventing.BlockingCommandListener;
+import org.apache.geode.redis.internal.eventing.NotificationEvent;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 import org.apache.geode.redis.internal.services.RegionProvider;
 
@@ -163,7 +163,7 @@ public class RedisList extends AbstractRedisData {
       elementsPushHead(elementsToAdd);
     }
     storeChanges(context.getRegion(), key, new AddByteArrays(elementsToAdd, 
newVersion));
-    context.fireEvent(RedisCommandType.LPUSH, key);
+    context.fireEvent(NotificationEvent.LPUSH, key);
 
     return elementList.size();
   }
@@ -269,7 +269,7 @@ public class RedisList extends AbstractRedisData {
       elementsToAdd.forEach(this::elementPushTail);
     }
     storeChanges(context.getRegion(), key, new AddByteArraysTail(newVersion, 
elementsToAdd));
-    context.fireEvent(RedisCommandType.RPUSH, key);
+    context.fireEvent(NotificationEvent.RPUSH, key);
 
     return elementList.size();
   }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/BlockingCommandListener.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/BlockingCommandListener.java
index bce6756..61dba4d 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/BlockingCommandListener.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/BlockingCommandListener.java
@@ -23,7 +23,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.geode.annotations.VisibleForTesting;
 import org.apache.geode.redis.internal.commands.Command;
-import org.apache.geode.redis.internal.commands.RedisCommandType;
 import org.apache.geode.redis.internal.commands.executor.RedisResponse;
 import org.apache.geode.redis.internal.data.RedisKey;
 import org.apache.geode.redis.internal.netty.Coder;
@@ -63,7 +62,7 @@ public class BlockingCommandListener implements EventListener 
{
   }
 
   @Override
-  public EventResponse process(RedisCommandType commandType, RedisKey key) {
+  public EventResponse process(NotificationEvent notificationEvent, RedisKey 
key) {
     if (!keys.contains(key)) {
       return EventResponse.CONTINUE;
     }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventDistributor.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventDistributor.java
index 1a806bc..34d4b20 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventDistributor.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventDistributor.java
@@ -28,7 +28,6 @@ import org.apache.geode.annotations.VisibleForTesting;
 import org.apache.geode.cache.partition.PartitionListenerAdapter;
 import org.apache.geode.internal.lang.utils.JavaWorkarounds;
 import org.apache.geode.logging.internal.executors.LoggingThreadFactory;
-import org.apache.geode.redis.internal.commands.RedisCommandType;
 import org.apache.geode.redis.internal.data.RedisKey;
 
 public class EventDistributor extends PartitionListenerAdapter {
@@ -52,14 +51,14 @@ public class EventDistributor extends 
PartitionListenerAdapter {
     listener.scheduleTimeout(timerExecutor, this);
   }
 
-  public void fireEvent(RedisCommandType command, RedisKey key) {
+  public void fireEvent(NotificationEvent notificationEvent, RedisKey key) {
     Queue<EventListener> listenerList = listeners.get(key);
     if (listenerList == null) {
       return;
     }
 
     for (EventListener listener : listenerList) {
-      if (listener.process(command, key) == EventResponse.REMOVE_AND_STOP) {
+      if (listener.process(notificationEvent, key) == 
EventResponse.REMOVE_AND_STOP) {
         removeListener(listener);
         break;
       }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventListener.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventListener.java
index c0e1f54..941e527 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventListener.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventListener.java
@@ -18,7 +18,6 @@ package org.apache.geode.redis.internal.eventing;
 import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
 
-import org.apache.geode.redis.internal.commands.RedisCommandType;
 import org.apache.geode.redis.internal.data.RedisKey;
 
 /**
@@ -32,11 +31,11 @@ public interface EventListener {
    * Receive and process an event. This method should execute very quickly. 
The return value
    * determines additional process steps for the given event.
    *
-   * @param commandType the command triggering the event
+   * @param notificationEvent the event triggered by the command
    * @param key the key triggering the event
    * @return response determining subsequent processing steps
    */
-  EventResponse process(RedisCommandType commandType, RedisKey key);
+  EventResponse process(NotificationEvent notificationEvent, RedisKey key);
 
   /**
    * Return the list of keys this listener is interested in.
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
index 538e49d..1e555a4 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
@@ -15,11 +15,10 @@
 
 package org.apache.geode.redis.internal.eventing;
 
-import org.apache.geode.redis.internal.commands.RedisCommandType;
 import org.apache.geode.redis.internal.data.RedisKey;
 
 /**
- * Response returned by {@link EventListener#process(RedisCommandType, 
RedisKey)}
+ * Response returned by {@link EventListener#process(NotificationEvent, 
RedisKey)}
  */
 public enum EventResponse {
   /**
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/NotificationEvent.java
similarity index 66%
copy from 
geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
copy to 
geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/NotificationEvent.java
index 538e49d..36c0175 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/EventResponse.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/eventing/NotificationEvent.java
@@ -15,20 +15,17 @@
 
 package org.apache.geode.redis.internal.eventing;
 
-import org.apache.geode.redis.internal.commands.RedisCommandType;
-import org.apache.geode.redis.internal.data.RedisKey;
-
 /**
- * Response returned by {@link EventListener#process(RedisCommandType, 
RedisKey)}
+ * These are the notification events used to trigger keyspace events and 
blocking commands.
+ *
+ * @see <a href="https://redis.io/docs/manual/keyspace-notifications";>Redis 
notifications</a>
  */
-public enum EventResponse {
-  /**
-   * Response indicating that processing should continue.
-   */
-  CONTINUE,
-  /**
-   * Response indicating that processing should stop and the listener should be
-   * removed.
-   */
-  REMOVE_AND_STOP
+public enum NotificationEvent {
+
+  LPUSH,
+  RENAME_FROM,
+  RENAME_TO,
+  RESTORE,
+  RPUSH,
+
 }
diff --git 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
index 5bb01a7..38a998a 100644
--- 
a/geode-for-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
+++ 
b/geode-for-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
@@ -62,6 +62,7 @@ import org.apache.geode.redis.internal.data.RedisSortedSet;
 import org.apache.geode.redis.internal.data.RedisString;
 import org.apache.geode.redis.internal.eventing.EventDistributor;
 import org.apache.geode.redis.internal.eventing.EventListener;
+import org.apache.geode.redis.internal.eventing.NotificationEvent;
 import org.apache.geode.redis.internal.pubsub.PubSub;
 import org.apache.geode.redis.internal.services.RegionProvider;
 import org.apache.geode.redis.internal.services.locking.RedisSecurityService;
@@ -423,8 +424,8 @@ public class ExecutionHandlerContext extends 
ChannelInboundHandlerAdapter {
     eventDistributor.registerListener(listener);
   }
 
-  public void fireEvent(RedisCommandType command, RedisKey key) {
-    eventDistributor.fireEvent(command, key);
+  public void fireEvent(NotificationEvent notificationEvent, RedisKey key) {
+    eventDistributor.fireEvent(notificationEvent, key);
   }
 
   public Region<RedisKey, RedisData> getRegion() {

Reply via email to