mogilefs-client 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/GIT-VERSION-GEN CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  CONSTANT = "MogileFS::VERSION"
3
3
  RVF = "lib/mogilefs/version.rb"
4
- DEF_VER = "v3.5.0"
4
+ DEF_VER = "v3.6.0"
5
5
  vn = DEF_VER
6
6
 
7
7
  # First see if there is a version file (included in release tarballs),
@@ -138,12 +138,17 @@ class MogileFS::Backend
138
138
  end
139
139
 
140
140
  def dispatch_unlocked(request, timeout = @timeout) # :nodoc:
141
+ tries = nil
141
142
  begin
142
143
  io = socket
143
144
  io.timed_write(request, timeout)
144
145
  io
145
- rescue SystemCallError, MogileFS::RequestTruncatedError => err
146
- @dead[@active_host] = [ Time.now, err ]
146
+ rescue SystemCallError, MogileFS::RequestTruncatedError => err
147
+ tries ||= Hash.new { |hash,host| hash[host] = 0 }
148
+ nr = tries[@active_host] += 1
149
+ if nr >= 2
150
+ @dead[@active_host] = [ Time.now, err ]
151
+ end
147
152
  shutdown_unlocked
148
153
  retry
149
154
  end
@@ -205,7 +205,7 @@ class MogileFS::MogileFS < MogileFS::Client
205
205
  if Hash === args[0]
206
206
  args = args[0]
207
207
  opts[:noverify] = args[:noverify]
208
- opts[:zone] = args[:zone]
208
+ zone = args[:zone] and opts[:zone] = zone
209
209
  pathcount = args[:pathcount] and opts[:pathcount] = pathcount.to_i
210
210
  end
211
211
 
@@ -82,7 +82,7 @@ class MogileFS::Mysql
82
82
  # Get the paths for +key+.
83
83
  def _get_paths(params = {})
84
84
  zone = params[:zone]
85
- noverify = (params[:noverify] == 1) # TODO this is unused atm
85
+ # noverify = (params[:noverify] == 1) # TODO this is unused atm
86
86
  dmid = get_dmid(params[:domain])
87
87
  devices = refresh_device or raise MogileFS::Backend::NoDevicesError
88
88
  urls = []
@@ -1 +1 @@
1
- MogileFS::VERSION = '3.5.0'
1
+ MogileFS::VERSION = '3.6.0'
data/test/fresh.rb CHANGED
@@ -39,8 +39,7 @@ EOF
39
39
 
40
40
  @trackers = @hosts = [ "#@test_host:#@tracker_port" ]
41
41
  @tracker.close
42
- x!("mogilefsd", "--daemon", "--config=#{@mogilefsd_conf.path}")
43
- wait_for_port @tracker_port
42
+ start_tracker
44
43
  @admin = MogileFS::Admin.new(:hosts => @hosts)
45
44
  50.times do
46
45
  break if File.size(@mogstored_pid.path) > 0
@@ -48,6 +47,11 @@ EOF
48
47
  end
49
48
  end
50
49
 
50
+ def start_tracker
51
+ x!("mogilefsd", "--daemon", "--config=#{@mogilefsd_conf.path}")
52
+ wait_for_port @tracker_port
53
+ end
54
+
51
55
  def wait_for_port(port)
52
56
  tries = 50
53
57
  begin
data/test/test_fresh.rb CHANGED
@@ -147,4 +147,54 @@ class TestMogFresh < Test::Unit::TestCase
147
147
  end
148
148
  src.close!
149
149
  end
150
+
151
+ def test_new_file_copy_stream_known_length
152
+ add_host_device_domain
153
+ opts = { :content_length => 666 }
154
+ input = StringIO.new("short")
155
+ client = MogileFS::MogileFS.new :hosts => @hosts, :domain => @domain
156
+ assert_raises(MogileFS::SizeMismatchError) do
157
+ client.new_file("copy_stream", opts) do |io|
158
+ IO.copy_stream(input, io)
159
+ end
160
+ end
161
+
162
+ assert_raises(MogileFS::SizeMismatchError) do
163
+ client.new_file("copy_stream", opts) do |io|
164
+ IO.copy_stream(input, io, 666)
165
+ end
166
+ end
167
+ end if IO.respond_to?(:copy_stream)
168
+
169
+ def test_single_tracker_restart
170
+ add_host_device_domain
171
+ client = MogileFS::MogileFS.new :hosts => @hosts, :domain => @domain
172
+
173
+ data = "data"
174
+ client.store_content("key", "default", data)
175
+ listing = client.list_keys
176
+ assert_instance_of Array, listing
177
+
178
+ # restart the tracker
179
+ s = TCPSocket.new(@test_host, @tracker_port)
180
+ s.write "!shutdown\r\n"
181
+ s.flush # just in case, MRI (at least) syncs by default
182
+ assert_nil s.gets
183
+
184
+ start_tracker
185
+
186
+ # transparent retry
187
+ listing2 = client.list_keys
188
+ assert_instance_of Array, listing2
189
+ assert_equal listing, listing2
190
+ assert_equal([['key'], 'key'], listing)
191
+
192
+ # kill the tracker
193
+ s = TCPSocket.new(@test_host, @tracker_port)
194
+ s.write "!shutdown\r\n"
195
+ s.flush # just in case, MRI (at least) syncs by default
196
+ assert_nil s.gets
197
+ @mogilefsd_pid = nil
198
+ assert_raises(MogileFS::UnreachableBackendError) { client.list_keys }
199
+ end
150
200
  end
metadata CHANGED
@@ -1,66 +1,59 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mogilefs-client
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.6.0
5
5
  prerelease:
6
- segments:
7
- - 3
8
- - 5
9
- - 0
10
- version: 3.5.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Eric Wong
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-12-04 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-02-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rdoc
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 19
29
- segments:
30
- - 3
31
- - 10
32
- version: "3.10"
20
+ - !ruby/object:Gem::Version
21
+ version: '3.10'
33
22
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: hoe
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.10'
30
+ - !ruby/object:Gem::Dependency
31
+ name: hoe
32
+ requirement: !ruby/object:Gem::Requirement
39
33
  none: false
40
- requirements:
34
+ requirements:
41
35
  - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 7
44
- segments:
45
- - 3
46
- - 0
47
- version: "3.0"
36
+ - !ruby/object:Gem::Version
37
+ version: '3.5'
48
38
  type: :development
49
- version_requirements: *id002
50
- description: |-
51
- A MogileFS client library for Ruby. MogileFS is an open source
52
- distributed filesystem, see: http://mogilefs.org for more details. This
53
- library allows any Ruby application to read, write and delete files in a
54
- MogileFS instance.
55
- email:
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.5'
46
+ description: ! '["A MogileFS client library for Ruby. MogileFS is an open source\ndistributed
47
+ filesystem, see: http://mogilefs.org for more details. This\nlibrary allows any
48
+ Ruby application to read, write and delete files in a\nMogileFS instance."]'
49
+ email:
56
50
  - normalperson@yhbt.net
57
- executables:
51
+ executables:
58
52
  - mog
59
53
  extensions: []
60
-
61
- extra_rdoc_files:
54
+ extra_rdoc_files:
62
55
  - Manifest.txt
63
- files:
56
+ files:
64
57
  - .document
65
58
  - .gitignore
66
59
  - .wrongdoc.yml
@@ -132,39 +125,31 @@ files:
132
125
  - .gemtest
133
126
  homepage: http://bogomips.org/mogilefs-client/
134
127
  licenses: []
135
-
136
128
  post_install_message:
137
- rdoc_options:
129
+ rdoc_options:
138
130
  - --main
139
131
  - README
140
- require_paths:
132
+ require_paths:
141
133
  - lib
142
- required_ruby_version: !ruby/object:Gem::Requirement
134
+ required_ruby_version: !ruby/object:Gem::Requirement
143
135
  none: false
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- hash: 3
148
- segments:
149
- - 0
150
- version: "0"
151
- required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
141
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
160
146
  requirements: []
161
-
162
147
  rubyforge_project: seattlerb
163
- rubygems_version: 1.8.24
148
+ rubygems_version: 1.8.23
164
149
  signing_key:
165
150
  specification_version: 3
166
151
  summary: MogileFS client library for Ruby
167
- test_files:
152
+ test_files:
168
153
  - test/test_http_reader.rb
169
154
  - test/test_mogilefs_integration_list_keys.rb
170
155
  - test/test_db_backend.rb
@@ -182,3 +167,4 @@ test_files:
182
167
  - test/test_bigfile.rb
183
168
  - test/test_mogilefs_integration_large_pipe.rb
184
169
  - test/test_mogstored_rack.rb
170
+ - test/socket_test.rb