DonalEvans commented on a change in pull request #7257:
URL: https://github.com/apache/geode/pull/7257#discussion_r782654454



##########
File path: 
geode-for-redis/src/main/java/org/apache/geode/redis/internal/data/RedisSet.java
##########
@@ -108,21 +104,18 @@ public static int sdiffstore(RegionProvider 
regionProvider, RedisKey destination
   private static MemberSet calculateDiff(RegionProvider regionProvider, 
List<RedisKey> keys,
       boolean updateStats) {
     RedisSet firstSet = regionProvider.getTypedRedisData(REDIS_SET, 
keys.get(0), updateStats);
+    MemberSet diff = new MemberSet();
     if (firstSet.scard() == 0) {
-      return null;
+      return diff;
     }
-    MemberSet diff = new MemberSet(firstSet.members);
 
+    diff = new MemberSet(firstSet.members);
     for (int i = 1; i < keys.size(); i++) {

Review comment:
       This early return causes incorrect behaviour if the first set key does 
not exist. The following test passes with native Redis but fails with 
geode-for-redis:
   ```
     @Test
     public void 
sdiff_withNonSetKeyAsThirdKeyAndNonExistentSetAsFirstKey_returnsWrongTypeError()
 {
       String stringKey = "{tag1}ding";
       jedis.set(stringKey, "dong");
   
       String secondSetKey = "{tag1}secondKey";
       jedis.sadd(secondSetKey, "member");
       assertThatThrownBy(() -> jedis.sdiff("{tag1}emptyKey", secondSetKey, 
stringKey))
           .hasMessageContaining(ERROR_WRONG_TYPE);
     }
   ```
   
   To fix the issue, this block should be:
   ```
       RedisSet firstSet = regionProvider.getTypedRedisData(REDIS_SET, 
keys.get(0), updateStats);
   
       MemberSet diff = new MemberSet(firstSet.members);
       for (int i = 1; i < keys.size(); i++) {
   
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to