midori-rb / midori.rb

Lightweight, Flexible and Fast Ruby Web Framework
MIT License
870 stars 57 forks source link

Redis driver meets deadlock on high pressure #97

Closed dsh0416 closed 7 years ago

dsh0416 commented 7 years ago
#<ThreadError: deadlock; recursive locking>
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/redic-1.5.0/lib/redic/client.rb:36:in `synchronize'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/redic-1.5.0/lib/redic/client.rb:36:in `connect'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/redic-1.5.0/lib/redic.rb:33:in `call'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/redic-1.5.0/lib/redic.rb:40:in `call!'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/stal-0.3.0/lib/stal.rb:13:in `solve'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/ohm-3.1.1/lib/ohm.rb:457:in `sort'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/ohm-3.1.1/lib/ohm.rb:510:in `first'", 
"/Users/delton/WorkSpace/Midori/midori-todo/services/user_service.rb:6:in `auth'", 
"/Users/delton/WorkSpace/Midori/midori-todo/services/user_service.rb:11:in `auth!'", 
"/Users/delton/WorkSpace/Midori/midori-todo/routes/task_route.rb:3:in `block in 
<class:TaskRoute>'", "/Users/delton/.rvm/gems/ruby-2.4.0/gems/em-midori-
0.2.3/lib/midori/sandbox.rb:37:in `run'", "/Users/delton/.rvm/gems/ruby-2.4.0/gems/em-midori-
0.2.3/lib/midori/api_engine.rb:64:in `block in receive'", "/Users/delton/.rvm/gems/ruby-
2.4.0/gems/em-midori-0.2.3/lib/midori/api_engine.rb:47:in `each'", 
"/Users/delton/.rvm/gems/ruby-2.4.0/gems/em-midori-0.2.3/lib/midori/api_engine.rb:47:in 
`receive'", "/Users/delton/.rvm/gems/ruby-2.4.0/gems/em-midori-0.2.3/lib/midori/server.rb:56:in 
`receive_new_request'", "/Users/delton/.rvm/gems/ruby-2.4.0/gems/em-midori-
0.2.3/lib/midori/server.rb:41:in `block (2 levels) in receive_data'"
dsh0416 commented 7 years ago

Once the events came to the queue in the sequence like write write read read, This would call a deadlock happen. Redic using Mutex to deal with connection competition, which would only works on multi-threading structure.

dsh0416 commented 7 years ago

Trying to fix the bug in https://github.com/heckpsi-lab/em-midori/pull/98

dsh0416 commented 7 years ago

Fixed in https://github.com/heckpsi-lab/em-midori/pull/98