zk 0.6.4 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -5,6 +5,6 @@ source "http://localhost:50000"
5
5
  # Specify your gem's dependencies in zk.gemspec
6
6
  gemspec
7
7
 
8
- gem 'ruby-debug'
8
+ # gem 'ruby-debug'
9
9
 
10
10
  # vim:ft=ruby
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (C) 2011 by Hewlett Packard Development Company, L.P.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/lib/z_k/client.rb CHANGED
@@ -269,7 +269,7 @@ module ZK
269
269
  end
270
270
  end
271
271
 
272
- rv = check_rc(@cnx.create(h))
272
+ rv = check_rc(@cnx.create(h), h)
273
273
 
274
274
  h[:callback] ? rv : rv[:path]
275
275
  end
@@ -323,7 +323,7 @@ module ZK
323
323
 
324
324
  setup_watcher!(:data, h)
325
325
 
326
- rv = check_rc(@cnx.get(h))
326
+ rv = check_rc(@cnx.get(h), h)
327
327
 
328
328
  opts[:callback] ? rv : rv.values_at(:data, :stat)
329
329
  end
@@ -372,7 +372,7 @@ module ZK
372
372
  def set(path, data, opts={})
373
373
  h = { :path => path, :data => data }.merge(opts)
374
374
 
375
- rv = check_rc(@cnx.set(h))
375
+ rv = check_rc(@cnx.set(h), h)
376
376
 
377
377
  opts[:callback] ? nil : rv[:stat]
378
378
  end
@@ -436,7 +436,7 @@ module ZK
436
436
  when Zookeeper::ZOK, Zookeeper::ZNONODE
437
437
  rv[:stat]
438
438
  else
439
- check_rc(rv) # throws the appropriate error
439
+ check_rc(rv, h) # throws the appropriate error
440
440
  end
441
441
  end
442
442
 
@@ -514,7 +514,7 @@ module ZK
514
514
  #++
515
515
  def delete(path, opts={})
516
516
  h = { :path => path, :version => -1 }.merge(opts)
517
- rv = check_rc(@cnx.delete(h))
517
+ rv = check_rc(@cnx.delete(h), h)
518
518
  nil
519
519
  end
520
520
 
@@ -571,7 +571,7 @@ module ZK
571
571
 
572
572
  setup_watcher!(:child, h)
573
573
 
574
- rv = check_rc(@cnx.get_children(h))
574
+ rv = check_rc(@cnx.get_children(h), h)
575
575
  opts[:callback] ? nil : rv[:children]
576
576
  end
577
577
 
@@ -615,7 +615,7 @@ module ZK
615
615
  #++
616
616
  def get_acl(path, opts={})
617
617
  h = { :path => path }.merge(opts)
618
- rv = check_rc(@cnx.get_acl(h))
618
+ rv = check_rc(@cnx.get_acl(h), h)
619
619
  opts[:callback] ? nil : rv.values_at(:children, :stat)
620
620
  end
621
621
 
@@ -645,12 +645,10 @@ module ZK
645
645
  #
646
646
  def set_acl(path, acls, opts={})
647
647
  h = { :path => path, :acl => acls }.merge(opts)
648
- rv = check_rc(@cnx.set_acl(h))
648
+ rv = check_rc(@cnx.set_acl(h), h)
649
649
  opts[:callback] ? nil : rv[:stat]
650
650
  end
651
651
 
652
-
653
-
654
652
  #--
655
653
  #
656
654
  # EXTENSIONS
@@ -705,6 +703,11 @@ module ZK
705
703
  end
706
704
  end
707
705
 
706
+ # see ZK::Find for explanation
707
+ def find(*paths, &block)
708
+ ZK::Find.find(self, *paths, &block)
709
+ end
710
+
708
711
  # will block the caller until +abs_node_path+ has been removed
709
712
  #
710
713
  # NOTE: this is dangerous to use in callbacks! there is only one
@@ -890,10 +893,11 @@ module ZK
890
893
  false
891
894
  end
892
895
 
893
- def check_rc(hash)
896
+ def check_rc(hash, inputs=nil)
894
897
  hash.tap do |h|
895
898
  if code = h[:rc]
896
- raise Exceptions::KeeperException.by_code(code) unless code == Zookeeper::ZOK
899
+ msg = inputs ? "inputs: #{inputs.inspect}" : nil
900
+ raise Exceptions::KeeperException.by_code(code), msg unless code == Zookeeper::ZOK
897
901
  end
898
902
  end
899
903
  end
data/lib/z_k/find.rb ADDED
@@ -0,0 +1,28 @@
1
+ module ZK
2
+ module Find
3
+ # like ruby's Find module, will call the given block with each _absolute_ znode path
4
+ # under +paths+. you can call ZK::Find.prune if you want to not recurse
5
+ # deeper under the current directory path.
6
+ def find(zk, *paths) #:yield: znode_path
7
+ paths.collect!{|d| d.dup}
8
+
9
+ while p = paths.shift
10
+ catch(:prune) do
11
+ yield p.dup.taint
12
+ next unless zk.exists?(p)
13
+
14
+ zk.children(p).each do |ch|
15
+ paths.unshift ZK.join(p, ch).untaint
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ def prune
22
+ throw :prune
23
+ end
24
+
25
+ module_function :find, :prune
26
+ end
27
+ end
28
+
data/lib/z_k/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ZK
2
- VERSION = "0.6.4"
2
+ VERSION = "0.6.5"
3
3
  end
data/lib/z_k.rb CHANGED
@@ -21,6 +21,7 @@ require 'z_k/election'
21
21
  require 'z_k/mongoid'
22
22
  require 'z_k/client'
23
23
  require 'z_k/pool'
24
+ require 'z_k/find'
24
25
 
25
26
  module ZK
26
27
  ZK_ROOT = File.expand_path('../..', __FILE__)
@@ -69,5 +70,21 @@ module ZK
69
70
  def self.new_pool(host, opts={})
70
71
  ZK::Pool::Bounded.new(host, opts)
71
72
  end
73
+
74
+ # Eventually this will implement proper File.join-like behavior, but only
75
+ # using the '/' char for a separator. for right now, this simply delegates to
76
+ # File.join
77
+ #--
78
+ # like File.join but ignores $INPUT_RECORD_SEPARATOR (i.e. $/, which is
79
+ # platform dependent) and only uses the '/' character
80
+ def self.join(*paths)
81
+ File.join(*paths)
82
+ end
83
+
84
+ protected
85
+ def self.chomp_sep(str)
86
+ p = (p[0] == ?/ ) ? p[1..-1] : p
87
+ p = (p[-1] == ?/) ? p[0..-2] : p
88
+ end
72
89
  end
73
90
 
data/spec/spec_helper.rb CHANGED
@@ -20,7 +20,7 @@ Dir[File.expand_path("../support/**/*.rb", __FILE__)].each {|f| require f}
20
20
  $stderr.sync = true
21
21
 
22
22
  # COMMENT THESE LINES FOR REMOTE DEBUGGING
23
- require 'ruby-debug'
23
+ # require 'ruby-debug'
24
24
  require 'flexmock'
25
25
 
26
26
  RSpec.configure do |config|
@@ -33,7 +33,7 @@ describe ZK::Threadpool do
33
33
  end
34
34
 
35
35
  it %[should barf if the argument is not callable] do
36
- bad_obj = mock(:not_callable)
36
+ bad_obj = flexmock(:not_callable)
37
37
  bad_obj.should_not respond_to(:call)
38
38
 
39
39
  lambda { @threadpool.defer(bad_obj) }.should raise_error(ArgumentError)
data/zk.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.summary = %q{A high-level wrapper around the zookeeper driver}
13
13
  s.description = s.summary
14
14
 
15
- s.add_runtime_dependency 'slyphon-zookeeper', '~> 0.1.4'
15
+ s.add_runtime_dependency 'slyphon-zookeeper', '~> 0.1.7'
16
16
  s.add_development_dependency 'rspec', '~> 2.4.0'
17
17
  s.add_development_dependency 'wirble'
18
18
  s.add_development_dependency 'flexmock', '~> 0.8.10'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zk
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 4
10
- version: 0.6.4
9
+ - 5
10
+ version: 0.6.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jonathan D. Simms
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-05-19 00:00:00 +00:00
19
+ date: 2011-05-24 00:00:00 +00:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -27,12 +27,12 @@ dependencies:
27
27
  requirements:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
- hash: 19
30
+ hash: 21
31
31
  segments:
32
32
  - 0
33
33
  - 1
34
- - 4
35
- version: 0.1.4
34
+ - 7
35
+ version: 0.1.7
36
36
  type: :runtime
37
37
  version_requirements: *id001
38
38
  - !ruby/object:Gem::Dependency
@@ -94,6 +94,7 @@ extra_rdoc_files: []
94
94
  files:
95
95
  - .gitignore
96
96
  - Gemfile
97
+ - LICENSE
97
98
  - Rakefile
98
99
  - lib/z_k.rb
99
100
  - lib/z_k/client.rb
@@ -102,6 +103,7 @@ files:
102
103
  - lib/z_k/event_handler_subscription.rb
103
104
  - lib/z_k/exceptions.rb
104
105
  - lib/z_k/extensions.rb
106
+ - lib/z_k/find.rb
105
107
  - lib/z_k/locker.rb
106
108
  - lib/z_k/logging.rb
107
109
  - lib/z_k/message_queue.rb