curiodb
                                
                                 curiodb copied to clipboard
                                
                                    curiodb copied to clipboard
                            
                            
                            
                        fix list blocking operations
about list blocking operations, still have some problems:
- not support multi keys. supporting multi keys in multi keyNode needs much more works.
- the scheduler in the block function may has race conditions with unblock. Is sending an unblock message in the scheduler a better solution?
@stephenmcd do you have any advice for this PR?
Sorry I didn't have time to look at it yet, the other recent changes were very quick to review.
It might save some time if you can provide a set of commands or a script that reproduces the problem.
OK, I will do it at this night.
- blpop only blocks 1s no matter how much timeout is setted. Executing blocking operations should not set timeout. redis 127.0.0.1:6370> lrange list2 0 -1 (empty list or set) redis 127.0.0.1:6370> blpop list2 5 (error) ERR Timeout on blpop list2 5 (1.01s)
- this is because in unblock change command to the former block command, but does not change back,so there is no response back. a. redis 127.0.0.1:6370> blpop list2 30
- "list2"
- "xxx" (6.98s) b. block forever redis 127.0.0.1:6370> lpush list2 xxx
- timeout 0 does not work. redis 127.0.0.1:6370> blpop list2 0 (nil)
- scheduler setted in block function is not cancelled in unblock function.