Skip to content

Commit

Permalink
Revert codes for PR 759
Browse files Browse the repository at this point in the history
  • Loading branch information
hwware committed Nov 5, 2024
1 parent 3c32ee1 commit 04aaa19
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 15 deletions.
6 changes: 0 additions & 6 deletions src/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -4165,12 +4165,6 @@ int processCommand(client *c) {
return C_OK;
}

/* Not allow several UNSUBSCRIBE commands executed under non-pubsub mode */
if (!c->flag.pubsub && (c->cmd->proc == unsubscribeCommand || c->cmd->proc == sunsubscribeCommand ||
c->cmd->proc == punsubscribeCommand)) {
rejectCommandFormat(c, "-NOSUB '%s' command executed not in subscribed mode", c->cmd->fullname);
return C_OK;
}
/* Only allow commands with flag "t", such as INFO, REPLICAOF and so on,
* when replica-serve-stale-data is no and we are a replica with a broken
* link with primary. */
Expand Down
3 changes: 1 addition & 2 deletions tests/unit/info.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -424,8 +424,7 @@ start_server {tags {"info" "external:skip"}} {
set info [r info clients]
assert_equal [getInfoProperty $info pubsub_clients] {1}
# non-pubsub clients should not be involved
catch {unsubscribe $rd2 {non-exist-chan}} e
assert_match {*NOSUB*} $e
assert_equal {0} [unsubscribe $rd2 {non-exist-chan}]
set info [r info clients]
assert_equal [getInfoProperty $info pubsub_clients] {1}
# close all clients
Expand Down
25 changes: 20 additions & 5 deletions tests/unit/pubsub.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,9 @@ start_server {tags {"pubsub network"}} {
$rd1 close
}

test "UNSUBSCRIBE and PUNSUBSCRIBE from non-subscribed channels" {
test "UNSUBSCRIBE from non-subscribed channels" {
set rd1 [valkey_deferring_client]
foreach command {unsubscribe punsubscribe} {
catch {$command $rd1 {foo bar quux}} e
assert_match {*NOSUB*} $e
}
assert_equal {0 0 0} [unsubscribe $rd1 {foo bar quux}]
# clean up clients
$rd1 close
}
Expand Down Expand Up @@ -204,6 +201,14 @@ start_server {tags {"pubsub network"}} {
$rd close
} {0} {resp3}

test "PUNSUBSCRIBE from non-subscribed channels" {
set rd1 [valkey_deferring_client]
assert_equal {0 0 0} [punsubscribe $rd1 {foo.* bar.* quux.*}]

# clean up clients
$rd1 close
}

test "NUMSUB returns numbers, not strings (#1561)" {
r pubsub numsub abc def
} {abc 0 def 0}
Expand Down Expand Up @@ -241,6 +246,16 @@ start_server {tags {"pubsub network"}} {
$rd1 close
}

test "PUNSUBSCRIBE and UNSUBSCRIBE should always reply" {
# Make sure we are not subscribed to any channel at all.
r punsubscribe
r unsubscribe
# Now check if the commands still reply correctly.
set reply1 [r punsubscribe]
set reply2 [r unsubscribe]
concat $reply1 $reply2
} {punsubscribe {} 0 unsubscribe {} 0}

### Keyspace events notification tests

test "Keyspace notifications: we receive keyspace notifications" {
Expand Down
5 changes: 3 additions & 2 deletions tests/unit/pubsubshard.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,9 @@ start_server {tags {"pubsubshard external:skip"}} {

test "SUNSUBSCRIBE from non-subscribed channels" {
set rd1 [valkey_deferring_client]
catch {sunsubscribe $rd1 {foo}} e
assert_match {*NOSUB*} $e
assert_equal {0} [sunsubscribe $rd1 {foo}]
assert_equal {0} [sunsubscribe $rd1 {bar}]
assert_equal {0} [sunsubscribe $rd1 {quux}]

# clean up clients
$rd1 close
Expand Down

0 comments on commit 04aaa19

Please sign in to comment.