-
Notifications
You must be signed in to change notification settings - Fork 23.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CRASH]The psync command will crash redis #8712
Comments
|
Ack, taking a look. |
|
Well this is an odd case. So for legacy reasons replica's have been allowed to ignore client pause and send commands any way to their primaries. I believe the intention of this is to allow ping/pong messages for health checks. With the introduction of 6.2, we try to provide stronger safety guarantees and we crash the server if mutating commands are executed during client pause. Since replicas are allowed to get around the client pause, they can sent mutating commands during the pause. I'm don't think this crash needs to be explicitly fixed. We might want to re-think how the replication links works in the future to be more robust, but I'm not sure a tactical fix here is worthwhile. @oranagra @yossigo thoughts? |
|
so a replica is sending a SET command to it's master (not something that should happen in real life), and if it happens during a failover, the master crashes on assertion.. |
|
I agree it's not high priority and with @oranagra's solution. |
This solves an issue reported in redis#8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now.
This solves an issue reported in redis#8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now.
…8868) This solves an issue reported in #8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now.
…edis#8868) This solves an issue reported in redis#8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now. (cherry picked from commit 46f4ebb)
…8868) This solves an issue reported in #8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now. (cherry picked from commit 46f4ebb)
…edis#8868) This solves an issue reported in redis#8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now.
…edis#8868) This solves an issue reported in redis#8712 in which a replica would bypass the client write pause check and cause an assertion due to executing a write command during failover. The fact is that we don't expect replicas to execute any command other than maybe REPLCONF and PING, etc. but matching against the ADMIN command flag is insufficient, so instead i just block keyspace access for now.
Hello, When I fuzzed the redis server, I found these command will crash redis. Just like:
In fact,
set key valuecan be replaced with any command.Save these command to a file named input, When executing
nc 127.0.0.1 6379 < ./input, redis crashed.I use AddressSanitizer(ASan) to compile redis. Here is the error output:
My OS platform is Ubuntu 18.04.
Thanks.
FYI: We found this crash by fuzzing(AFL)
The text was updated successfully, but these errors were encountered: