-
Notifications
You must be signed in to change notification settings - Fork 58
Open
Description
There seems to be a race condition somewhere in rm_rf implementation.
I have a rspec tests with after(:each) block calling zk.rm_rf('/LOCAL') which basically wipes all data in ZK before next test for me (I'm not creating any other nodes at root level). This however results in a random flakiness with exceptions which doesn't quite make sense to me:
ZK::Exceptions::NotEmpty:
inputs: {:path=>"/LOCAL/test/foobar/private/groups/foobar", :version=>-1}
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/base.rb:1083:in `check_rc'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/base.rb:1072:in `call_and_check_rc'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/threaded.rb:584:in `call_and_check_rc'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/base.rb:792:in `delete'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:57:in `block in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:54:in `block (2 levels) in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `block in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:54:in `block (2 levels) in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `block in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:54:in `block (2 levels) in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `block in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:54:in `block (2 levels) in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `block in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:54:in `block (2 levels) in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:53:in `block in rm_rf'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `each'
# /Users/lukasz/.rvm/gems/ruby-2.2.1/gems/zk-1.9.5/lib/zk/client/unixisms.rb:51:in `rm_rf'
# ./spec/spec_helper.rb:20:in `block (2 levels) in <top (required)>'Is it a sign of a bug in my code or rather race condition in ZK's rm_rf? Not sure if it matters but I'm using zk-server for testing.
@slyphon any ideas?
Metadata
Metadata
Assignees
Labels
No labels