mogilefs-client 3.1.1 → 3.2.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog ADDED
@@ -0,0 +1,3752 @@
1
+ ChangeLog from http://bogomips.org/mogilefs-client.git (v1.2.1..v3.2.0-rc1)
2
+
3
+ commit 920408e2c94fbe84331aab5ab4b0c402024817aa
4
+ Author: Eric Wong <normalperson@yhbt.net>
5
+ Date: Fri Jun 15 01:01:06 2012 +0000
6
+
7
+ Ruby mogilefs-client 3.2.0-rc1
8
+
9
+ * "list_keys" and "exist?" client commands raise errors properly
10
+ on failure.
11
+
12
+ * backend connections no longer terminate on ERR responses, only
13
+ on socket/connection errors.
14
+
15
+ * support the "updateclass" client command. This is for updating
16
+ the class of a given key and not to be confused with the
17
+ "update_class" admin command.
18
+
19
+ * "new_file" checksum usage is now documented since MogileFS 2.60
20
+ includes official support for checksums
21
+
22
+ commit 42f9969979917cae79fd98844aec6b03cf2ab880
23
+ Author: Eric Wong <normalperson@yhbt.net>
24
+ Date: Tue Jun 12 23:08:29 2012 +0000
25
+
26
+ backend: reuse connections on error responses
27
+
28
+ The server sending us a properly-formed "ERR" response is a big
29
+ difference than an actual socket or connection error.
30
+
31
+ commit dc0fa66e56a271f4de431ecfc909686d27d73f78
32
+ Author: Eric Wong <normalperson@yhbt.net>
33
+ Date: Wed Jun 6 02:10:52 2012 +0000
34
+
35
+ exist?(dkey) raises on real errors
36
+
37
+ Specifying an invalid domain will raise
38
+ MogileFS::Backend::UnregDomain error instead of merely
39
+ returning `false'. Only checks for keys in the correct
40
+ domain (but non-existent keys) return false.
41
+
42
+ commit 112df6360d87356e03a21e8cc4ae24b49eede95f
43
+ Author: Eric Wong <normalperson@yhbt.net>
44
+ Date: Tue Jun 5 23:46:09 2012 +0000
45
+
46
+ list_keys raises on errors properly
47
+
48
+ list_keys needs to raise UnregDomainError on invalid domains.
49
+ This regression was introduced in
50
+ commit 0b933fc83b8b519c8e587caa6606dd372dda18af
51
+
52
+ commit 8644022fb9046556d37a51735cad433f382949c1
53
+ Author: Eric Wong <normalperson@yhbt.net>
54
+ Date: Thu Apr 19 01:21:10 2012 +0000
55
+
56
+ Rakefile: remove vim-specific modeline
57
+
58
+ Avoid taking sides or showing preference for particular text
59
+ editors. Text editors are _very_ personal preferences, and
60
+ explicitly supporting/acknowledging one would set precedence for
61
+ explicitly supporting/acknowledging others. This would lead
62
+ down the slippery slope of having modelines for every single
63
+ text editor in every single file we have.
64
+
65
+ For this same reason, we do not (and never will) expose
66
+ editor-specific suffixes in .gitignore.
67
+
68
+ Full disclosure: I'm a vim user myself
69
+
70
+ commit 5b9c47e479d5d0361b30c33d7e7aa8ba90755f01
71
+ Author: Eric Wong <normalperson@yhbt.net>
72
+ Date: Fri May 4 15:20:31 2012 -0700
73
+
74
+ new_file: documentation for :content_md5 usage
75
+
76
+ Now that checksum support is officially a part of MogileFS, we
77
+ can document (and thus encourage) it without risking
78
+ compatibility issues.
79
+
80
+ commit d18a8b31a573feaec3da7ce292440eee628f464f
81
+ Author: Eric Wong <normalperson@yhbt.net>
82
+ Date: Thu Mar 22 21:44:17 2012 +0000
83
+
84
+ client: add support for "updateclass" command
85
+
86
+ This changes the class associated with +key+.
87
+ This is _not_ the same as the "update_class" admin command
88
+ which actually modifies the class itself.
89
+
90
+ commit d5718e3ebeae61409bd5e260b8355ea68685ae84
91
+ Author: Eric Wong <normalperson@yhbt.net>
92
+ Date: Tue Feb 28 22:43:17 2012 +0000
93
+
94
+ Rakefile: release generated NEWS/ChangeLog files
95
+
96
+ These files should be included in release gem/tarballs, users
97
+ should not require web acccess to access documentation.
98
+
99
+ commit 56f13ad91c882d391b374917544990175c1ed7b0
100
+ Author: Eric Wong <normalperson@yhbt.net>
101
+ Date: Tue Feb 28 22:38:02 2012 +0000
102
+
103
+ README: add download link
104
+
105
+ Not everybody uses RubyGems.
106
+
107
+ commit cea1724c77e4af0f2db2e694114aff9f51ff91f7
108
+ Author: Eric Wong <normalperson@yhbt.net>
109
+ Date: Tue Feb 28 22:10:15 2012 +0000
110
+
111
+ Ruby mogilefs-client 3.1.1
112
+
113
+ This releases fixes problems short reads when slurping files
114
+ into memory. Thanks to Matthew Draper for this fix.
115
+ There are also minor documentation updates.
116
+
117
+ commit 7d7d30329e806d38350cd8eba161d3157e5bbca4
118
+ Author: Eric Wong <normalperson@yhbt.net>
119
+ Date: Tue Feb 28 14:04:21 2012 -0800
120
+
121
+ doc: update to not refer to MogileFS 2.55 specifically
122
+
123
+ It's more future-proof, this way.
124
+
125
+ commit 6faffa9ba774bad500ca48cc52449dae0639227b
126
+ Author: Eric Wong <normalperson@yhbt.net>
127
+ Date: Tue Feb 28 14:02:54 2012 -0800
128
+
129
+ LICENSE: update copyright year + range
130
+
131
+ Not that it really matters given the MIT license...
132
+
133
+ commit d758083954ee480bde5b079cfd3f7b4fcf0f9bf7
134
+ Author: Eric Wong <normalperson@yhbt.net>
135
+ Date: Tue Feb 28 14:01:01 2012 -0800
136
+
137
+ doc: fixup mailto: links
138
+
139
+ It's better if email addresses are visible and not hidden behind
140
+ links for folks that don't integrate email clients into web
141
+ browsers.
142
+
143
+ commit 8a3f48341248b919b5c4816bf4f7079eb35d6882
144
+ Author: Matthew Draper <matthew@trebex.net>
145
+ Date: Tue Feb 28 23:39:09 2012 +1030
146
+
147
+ Don't stop reading too early.
148
+
149
+ Leave size unchanged, so it's available for easy comparison with
150
+ buf.bytesize.
151
+
152
+ [ew: added test case]
153
+ Acked-by: Eric Wong <normalperson@yhbt.net>
154
+
155
+ commit 55365e01dc0b2b5db01441004f4c6921d1fd04d6
156
+ Author: Eric Wong <normalperson@yhbt.net>
157
+ Date: Fri Feb 17 12:17:50 2012 -0800
158
+
159
+ fix documentation of :noverify for get_paths
160
+
161
+ :noverify always defaults to _true_ (meaning verification is
162
+ _off_ by default). This double negative is unfortunately
163
+ a confusing part of the existing API and MogileFS protocol.
164
+
165
+ commit 83305f7e52f95d9aea63de2afa0cf8f2616c2ced
166
+ Author: Eric Wong <normalperson@yhbt.net>
167
+ Date: Thu Dec 15 05:17:23 2011 +0000
168
+
169
+ README: speling ficks
170
+
171
+ commit 6c05d25e740a5150e0c51b4a8d741b1be45ff78c
172
+ Author: Eric Wong <normalperson@yhbt.net>
173
+ Date: Thu Dec 15 04:08:25 2011 +0000
174
+
175
+ Ruby mogilefs-client 3.1.0
176
+
177
+ * improved API support for uploading large files
178
+ While we've always supported uploading large files, the
179
+ (still-supported) existing APIs were somewhat awkward or
180
+ required the file to exist on the file system. See
181
+ MogileFS::NewFile for details and examples.
182
+
183
+ * more informative exception messages for timed-out requests
184
+
185
+ * :fail_timeout parameter, the timeout for retrying a failed
186
+ tracker connection. This defaults to 5 seconds (same as
187
+ previous versions where this was hard-coded.
188
+
189
+ * :new_file_max_time parameter
190
+ Controls the maximum of time spent creating and uploading
191
+ a new file in MogileFS. This defaults to 1 hour (which
192
+ matching the expiry time of a row in the MogileFS internal
193
+ tempfile table).
194
+
195
+ * store_file works on unlinked File/Tempfile objects
196
+
197
+ * each_fid method in MogileFS::Admin fixed
198
+
199
+ * stale_fid_checker example script added
200
+
201
+ * mogstored_rack example split into a standalone RubyGem:
202
+ http://bogomips.org/mogstored_rack/
203
+
204
+ * backend error constants are generated on const_missing,
205
+ instead of when raised, making it easier to rescue exceptions
206
+ we didn't explicitly enable
207
+
208
+ * some internal cleanups and documentation improvements
209
+
210
+ commit d199947566d5783ce2b56338d45d262712ff7151
211
+ Author: Eric Wong <normalperson@yhbt.net>
212
+ Date: Thu Dec 15 04:03:33 2011 +0000
213
+
214
+ docs for various timeouts in MogileFS::MogileFS.new
215
+
216
+ We have lots of timeouts :x
217
+
218
+ commit 70a529d070920abf0989d3d89d775ea1aa774042
219
+ Author: Eric Wong <normalperson@yhbt.net>
220
+ Date: Mon Dec 12 09:22:35 2011 +0000
221
+
222
+ backend: rely on auto-generated exceptions in const_missing
223
+
224
+ Most of these exceptions are just too rare to be useful,
225
+ and code that cares for exceptions will rescue them
226
+ anyways.
227
+
228
+ commit c1cf4444b2ca9126e8450ae3224cd406f0e43624
229
+ Author: Eric Wong <normalperson@yhbt.net>
230
+ Date: Wed Dec 14 17:37:23 2011 -0800
231
+
232
+ add configurable :fail_timeout for backends
233
+
234
+ This controls the retry timeout of a failed backend
235
+
236
+ commit 0b933fc83b8b519c8e587caa6606dd372dda18af
237
+ Author: Eric Wong <normalperson@yhbt.net>
238
+ Date: Mon Dec 12 07:56:00 2011 +0000
239
+
240
+ avoid relying on exceptions for list_keys
241
+
242
+ This will make debug output quieter.
243
+
244
+ commit 594295a29cbc33fc04b7c0b87ecf664f036819a9
245
+ Author: Eric Wong <normalperson@yhbt.net>
246
+ Date: Mon Dec 12 07:48:36 2011 +0000
247
+
248
+ simplify exist? implementation for avoiding exceptions
249
+
250
+ This adds an internal :ruby_no_raise flag to the backend
251
+ to avoid exceptions.
252
+
253
+ commit 8a54653184536b99bf74bcaedb8cf84ea0f4f693
254
+ Author: Eric Wong <normalperson@yhbt.net>
255
+ Date: Sun Dec 11 22:25:12 2011 +0000
256
+
257
+ net-http-persistent not required for Content-Range uploads
258
+
259
+ Performance with Content-Range uploads sucks either way, so it's
260
+ not noticeably worse off on a LAN /without/ persistent
261
+ connections.
262
+
263
+ commit b1e3b9f570c04100f73f63ceaff6ab07f938476a
264
+ Author: Eric Wong <normalperson@yhbt.net>
265
+ Date: Sun Dec 11 22:03:09 2011 +0000
266
+
267
+ examples/stale_fid_checker: --help + fail on older versions
268
+
269
+ each_fids was too buggy and likely to yield false positives
270
+
271
+ commit 81f4cf3eda8f42040149da4ad267adf6adcf3e83
272
+ Author: Eric Wong <normalperson@yhbt.net>
273
+ Date: Sun Dec 11 09:13:41 2011 +0000
274
+
275
+ History: point users towards NEWS doc
276
+
277
+ NEWS is more common in the wider Free Software community
278
+
279
+ commit 246bc4139262d4575b3a7b45e7a08bc93ff1a975
280
+ Author: Eric Wong <normalperson@yhbt.net>
281
+ Date: Sun Dec 11 09:05:08 2011 +0000
282
+
283
+ chunker: small cleanups to whitespace handling
284
+
285
+ The client-provided Content-MD5 may have leading/trailing
286
+ whitespace, so we shall strip that before comparing.
287
+
288
+ We also know any base64-encoded MD5 we generate will have only
289
+ trailing whitespace so we can get away with the (slightly)
290
+ faster and more-GC-friendly String#rstrip!
291
+
292
+ commit 3f342091cec9fcd5f99ba934444f17cd0c77de71
293
+ Author: Eric Wong <normalperson@yhbt.net>
294
+ Date: Sun Dec 11 08:47:39 2011 +0000
295
+
296
+ add :new_file_max_time parameter
297
+
298
+ This defaults to 1 hour (which matches the expiry time of a row
299
+ in the MogileFS internal tempfile table).
300
+
301
+ commit 9d5f3208dab86837106b56f105af8bbb121f438a
302
+ Author: Eric Wong <normalperson@yhbt.net>
303
+ Date: Sun Dec 11 08:33:00 2011 +0000
304
+
305
+ misc. documentation improvements
306
+
307
+ 100% RDoc coverage (not that it's an indicator of _good_
308
+ documentation, but we're getting there)
309
+
310
+ commit 56e7c8eecf59b037a778ad1121b2ffd93258482f
311
+ Author: Eric Wong <normalperson@yhbt.net>
312
+ Date: Sun Dec 11 08:32:03 2011 +0000
313
+
314
+ examples: add stale_fid_checker script
315
+
316
+ This logic may go upstream into the tracker Fsck worker itself,
317
+ but until then, we can try this from the client side.
318
+
319
+ commit b69111a6573826d7c4fc3edd4fcc514d0eb425e9
320
+ Author: Eric Wong <normalperson@yhbt.net>
321
+ Date: Fri Dec 9 18:22:01 2011 -0800
322
+
323
+ finalize and document improved new_file API
324
+
325
+ commit 7f153071e40b1242ad0aa46c81ec0e927b9fc890
326
+ Author: Eric Wong <normalperson@yhbt.net>
327
+ Date: Fri Dec 9 16:23:48 2011 -0800
328
+
329
+ rename "Put" namespace to "NewFile"
330
+
331
+ This should make documentation easier
332
+
333
+ commit 5326214033b4f26ec426a0313c164f5de0225207
334
+ Author: Eric Wong <normalperson@yhbt.net>
335
+ Date: Fri Dec 9 23:50:05 2011 +0000
336
+
337
+ tests: speedup tests that require hitting mogstored
338
+
339
+ By pre-creating devN dirs, mogstored can create usage files
340
+ sooner and we won't have to wait 10s between "df" runs.
341
+
342
+ commit 83aa5dede6f0f9b04a631d0875d3e4d4f7927a8c
343
+ Author: Eric Wong <normalperson@yhbt.net>
344
+ Date: Fri Dec 9 11:35:25 2011 +0000
345
+
346
+ new_file_common: call "noop" before "create_close"
347
+
348
+ An upload could've taken a long time, ping and try to ensure
349
+ socket is valid to minimize (but not completely eliminate) the
350
+ chance create_close hits a stale socket (while reading the
351
+ response after writing to it) and becomes non-retryable. We
352
+ treat create_close specially as its less idempotent than any
353
+ other command (even other non-idempotent ones). There may be no
354
+ hope of retrying the upload at all if data was streamed and
355
+ calling create_close twice will hurt us...
356
+
357
+ commit 01c200204400c4373c5b5edeb11d1c70a8119795
358
+ Author: Eric Wong <normalperson@yhbt.net>
359
+ Date: Thu Dec 8 18:09:38 2011 -0800
360
+
361
+ pool: shutdown backend when purging
362
+
363
+ If we started a connection, make sure it's stopped and the file
364
+ descriptor closed. Relying on GC to close file descriptors is
365
+ unreliable with some GC implementations.
366
+
367
+ commit 00d7a3cca62b19c34df66b337582a7c15c4b4848
368
+ Author: Eric Wong <normalperson@yhbt.net>
369
+ Date: Thu Dec 8 17:59:26 2011 -0800
370
+
371
+ pool: O(1) object validity checking
372
+
373
+ Now that pools can be arbitrarily large, using an O(n) check
374
+ for object validity can be expensive.
375
+
376
+ commit 3e80aa8b62dd1b9e1d78e4c1c487f1ea5ee162cd
377
+ Author: Eric Wong <normalperson@yhbt.net>
378
+ Date: Thu Dec 8 17:34:25 2011 -0800
379
+
380
+ pool: add @purge_threshold, @purge_keep accessors
381
+
382
+ Instead of hard coding the thresholds, allow
383
+ users to change accessors
384
+
385
+ commit f62e34251c1101b0fcdddea35dfa3f73c416a3ba
386
+ Author: Eric Wong <normalperson@yhbt.net>
387
+ Date: Thu Dec 8 16:57:08 2011 -0800
388
+
389
+ reorganize largefile support code
390
+
391
+ Putting this into the MogileFS::Put::* namespace will
392
+ make it easier to document.
393
+
394
+ commit 50f9287610725257bf64781a2008398ff6ceeacb
395
+ Author: Eric Wong <normalperson@yhbt.net>
396
+ Date: Thu Dec 8 15:53:09 2011 -0800
397
+
398
+ new_file(..., :largefile => :stream) avoids chunking
399
+
400
+ This allows us to stream files with a known Content-Length
401
+ into MogileFS. This can be useful for streaming an HTTP
402
+ download into MogileFS without:
403
+
404
+ * saving it to the filesystem
405
+ * relying on chunked encoding support on the server
406
+
407
+ commit a867de1e6bdf50bb7cb4316a7ecf3a9a38c9029b
408
+ Author: Eric Wong <normalperson@yhbt.net>
409
+ Date: Thu Dec 8 21:06:51 2011 +0000
410
+
411
+ Rakefile: quiet down warnings for newer rake
412
+
413
+ commit 7a355fad7ef4932a160d2144b7e6a2c9f64c4c9c
414
+ Author: Eric Wong <normalperson@yhbt.net>
415
+ Date: Thu Dec 8 21:01:02 2011 +0000
416
+
417
+ move Manifest.txt from git to .gitignore
418
+
419
+ It is auto-generated and goes into .gitignore
420
+
421
+ commit 4bba2b2ab0d6a00403afe8bc7575f74d45393bf9
422
+ Author: Eric Wong <normalperson@yhbt.net>
423
+ Date: Thu Dec 8 21:00:20 2011 +0000
424
+
425
+ mog: config parser cleanup
426
+
427
+ commit e87d69883d050dfb24525a89bcd340250dad6991
428
+ Author: Eric Wong <normalperson@yhbt.net>
429
+ Date: Thu Dec 8 20:49:57 2011 +0000
430
+
431
+ backend: auto-generate error constants on const_missing
432
+
433
+ This way, folks can rescue for exceptions we haven't defined,
434
+ yet.
435
+
436
+ commit 5c824e04d5de04b4d6c8fb58dfc60e4d3f6cd7c7
437
+ Author: Eric Wong <normalperson@yhbt.net>
438
+ Date: Thu Dec 8 11:11:37 2011 +0000
439
+
440
+ admin: fix off-by-one in each_fid method
441
+
442
+ list_fids was being used incorrectly :x
443
+
444
+ commit ec4e5984a62cb95ef75f3004aa8932a9cc6ceb6c
445
+ Author: Eric Wong <normalperson@yhbt.net>
446
+ Date: Thu Dec 8 09:19:17 2011 +0000
447
+
448
+ move Manifest.txt generation to Rake...
449
+
450
+ Bleh, I have revision control to tell me what's there, no need
451
+ to maintain this file (or even manually generate it) myself
452
+
453
+ commit 346b21f715e484bf9280d2d6b7ac2003b29a59ed
454
+ Author: Eric Wong <normalperson@yhbt.net>
455
+ Date: Thu Dec 8 06:15:06 2011 +0000
456
+
457
+ store_file works on unlinked Tempfile objects
458
+
459
+ Unlinking Tempfiles is good practice, so we should
460
+ allow/encourage people to use unlinked Tempfiles
461
+ with store_file.
462
+
463
+ commit 83df70292440787ff32be893f7dd0fd2713bfdef
464
+ Author: Eric Wong <normalperson@yhbt.net>
465
+ Date: Thu Dec 8 03:39:35 2011 +0000
466
+
467
+ new_file: add :largefile => :tempfile support
468
+
469
+ This is the most-compatible way to support largefiles
470
+ with the new_file interface. This will unfortunately
471
+ generate disk I/O, though...
472
+
473
+ Also moving the "mog" util to use this with the "tee"
474
+ subcommand since it already included its own private
475
+ implementation of this before.
476
+
477
+ commit 581148337d8345a09b32bf7c82f051eb438b6383
478
+ Author: Eric Wong <normalperson@yhbt.net>
479
+ Date: Thu Dec 8 03:38:55 2011 +0000
480
+
481
+ http_file: big_io support for unlinked open files
482
+
483
+ This makes it easier to use an unlinked Tempfile
484
+
485
+ commit ad559b036966ba5797ac53a70e17342640d07952
486
+ Author: Eric Wong <normalperson@yhbt.net>
487
+ Date: Wed Dec 7 11:09:37 2011 +0000
488
+
489
+ add new_file :largefile => :content_range support
490
+
491
+ This is similar to the "largefile => 1" support in the
492
+ Perl MogileFS::Client package. It requires net/http/persistent
493
+ to avoid repeatedly setting up and tearing down a socket.
494
+
495
+ commit 492bf768036b1c6287d013e37535618ebdeb8833
496
+ Author: Eric Wong <normalperson@yhbt.net>
497
+ Date: Wed Dec 7 05:20:55 2011 +0000
498
+
499
+ new_file gains a :largefile => :chunked option
500
+
501
+ This returns a new HTTPStream object that behaves
502
+ like a writable IO object with the following methods:
503
+
504
+ * write
505
+ * print
506
+ * printf
507
+ * putc
508
+ * puts
509
+ * syswrite
510
+ * <<
511
+
512
+ ..and also responds to IO.select (for writability)
513
+
514
+ commit 86318ca3e9ede3bac245a7bdcb31b9c3ad15ef67
515
+ Author: Eric Wong <normalperson@yhbt.net>
516
+ Date: Wed Dec 7 05:18:39 2011 +0000
517
+
518
+ test/fresh: unused variable warning fix
519
+
520
+ Might as well assert on it...
521
+
522
+ commit 0bbbd8cfa2df665bc22a47831adf91668e391e3e
523
+ Author: Eric Wong <normalperson@yhbt.net>
524
+ Date: Wed Dec 7 02:03:05 2011 +0000
525
+
526
+ http_file: use lower keepalive times under Linux
527
+
528
+ TCP keepalives are inexpensive, so we can use them to monitor
529
+ whether or not our connection is still alive while uploading.
530
+
531
+ Remote servers make take an unpredictable amount of time to
532
+ actually write out the data we've uploaded (and empty socket
533
+ buffers to receive more), so it is extremely difficult to
534
+ calculate an effective timeout for select() or poll().
535
+
536
+ commit da58f47f541cff65e814a614ecff722ba2a35bf8
537
+ Author: Eric Wong <normalperson@yhbt.net>
538
+ Date: Wed Dec 7 01:29:43 2011 +0000
539
+
540
+ test for client-side Content-MD5 callback on upload
541
+
542
+ Some applications will rely on this feature
543
+
544
+ commit d7bec4c903bd08337b7dbf4611e618762050ed58
545
+ Author: Eric Wong <normalperson@yhbt.net>
546
+ Date: Wed Dec 7 01:24:24 2011 +0000
547
+
548
+ Revert "http_file: disable MD5 checksums by default"
549
+
550
+ This reverts commit 11ee57e7aaa8766d13e29d3872bd78d50a3e5263.
551
+
552
+ Bleh, checksums support is already off by default...
553
+
554
+ commit 11ee57e7aaa8766d13e29d3872bd78d50a3e5263
555
+ Author: Eric Wong <normalperson@yhbt.net>
556
+ Date: Tue Dec 6 17:06:08 2011 -0800
557
+
558
+ http_file: disable MD5 checksums by default
559
+
560
+ We won't force this onto the wire for trackers until upstream
561
+ MogileFS decides to support it.
562
+
563
+ commit d74fad403f23c1ee36b9fbf276d12b12ef5d92d1
564
+ Author: Eric Wong <normalperson@yhbt.net>
565
+ Date: Tue Dec 6 13:25:22 2011 -0800
566
+
567
+ rely on SO_KEEPALIVE for upload timeouts
568
+
569
+ Users will be able to tweak these themselves in OS-dependent
570
+ ways. It's probably better to rely on protocol-level timeouts
571
+ when the HTTP server should be on a trusted network.
572
+
573
+ commit 296977523d04e184b954f5a00e9463dea0d8e8d6
574
+ Author: Eric Wong <normalperson@yhbt.net>
575
+ Date: Tue Dec 6 20:54:07 2011 +0000
576
+
577
+ store_file/store_content: wire these up to new new_file opts
578
+
579
+ These allow us to specify Content-MD5 and checksums for use
580
+ with the new and improved new_file interface without breaking
581
+ existing apps.
582
+
583
+ commit 2c4dc76c6a4840865c83177ceeb217b859e20df8
584
+ Author: Eric Wong <normalperson@yhbt.net>
585
+ Date: Tue Dec 6 20:54:06 2011 +0000
586
+
587
+ new_file: backwards compatibility for old args
588
+
589
+ commit db55f4b60ccb312881d84eea8c15daf115a7f1bd
590
+ Author: Eric Wong <normalperson@yhbt.net>
591
+ Date: Tue Dec 6 20:54:05 2011 +0000
592
+
593
+ mog: "stat" shows checksum if it is available
594
+
595
+ Checksums are good, yes they are.
596
+
597
+ commit f5d512fe1b163e132d1698138cff83cb4a59658c
598
+ Author: Eric Wong <normalperson@yhbt.net>
599
+ Date: Tue Dec 6 20:54:04 2011 +0000
600
+
601
+ http_file: remove unused attrs
602
+
603
+ No need to clutter ourselves up with things we don't need.
604
+
605
+ commit ad6113719d37824bcad6b8e78edafd838c9f8a78
606
+ Author: Eric Wong <normalperson@yhbt.net>
607
+ Date: Tue Dec 6 20:54:03 2011 +0000
608
+
609
+ "new_file" gets many options for Content-MD5 handling
610
+
611
+ This still needs docs and integration with store_content and
612
+ store_file, but seems to be mostly working.
613
+
614
+ commit 652398d0def7291ea7a4e54c3e418d88038ed436
615
+ Author: Eric Wong <normalperson@yhbt.net>
616
+ Date: Tue Dec 6 13:01:02 2011 -0800
617
+
618
+ manifest updates for mogstored_rack tests
619
+
620
+ We need to test with this client, dependencies are hard :<
621
+
622
+ commit 829d459f7335cb6eb6a2f6d24e0d6f984cef2d52
623
+ Author: Eric Wong <normalperson@yhbt.net>
624
+ Date: Tue Dec 6 20:53:42 2011 +0000
625
+
626
+ improve diagnostics on unreadable sockets with timeout
627
+
628
+ commit 9ef18521688bb008e173bfcca57f4abcd012205f
629
+ Author: Eric Wong <normalperson@yhbt.net>
630
+ Date: Tue Dec 6 20:54:09 2011 +0000
631
+
632
+ socket_common: small simplification in read() calculation
633
+
634
+ Minor cleanup, one less un-optimized method dispatch.
635
+
636
+ commit bafa6f41dbfda371e248656e50441bc7f6503826
637
+ Author: Eric Wong <normalperson@yhbt.net>
638
+ Date: Tue Dec 6 20:54:08 2011 +0000
639
+
640
+ RequestTruncated exception includes timeout value used
641
+
642
+ It seems our timeout values are sometimes too low :<
643
+
644
+ commit d5f49b90ec7461b07e88eb2e13f9b510190be256
645
+ Author: Eric Wong <normalperson@yhbt.net>
646
+ Date: Thu Dec 1 03:03:52 2011 +0000
647
+
648
+ remove mogstored_rack example
649
+
650
+ It's now a separate project:
651
+ http://bogomips.org/mogstored_rack/
652
+
653
+ commit c9f94ea9102fe7e88a6c2e4ae1065c31908f9eda
654
+ Author: Eric Wong <normalperson@yhbt.net>
655
+ Date: Mon Nov 28 21:23:01 2011 +0000
656
+
657
+ .document: add NEWS to rdoc
658
+
659
+ We generate it, might as well..
660
+
661
+ commit bbd2522467c29a9e7d97870be2a0171fd8ee58dd
662
+ Author: Eric Wong <normalperson@yhbt.net>
663
+ Date: Mon Nov 28 20:39:01 2011 +0000
664
+
665
+ Ruby mogilefs-client 3.0.0
666
+
667
+ Changes since 3.0.0-rc1:
668
+
669
+ * 1.8 copy_stream emulator respects creation umask
670
+ This matches the latest IO.copy_stream behavior.
671
+ [ruby-core:41308], r33851 in ruby/trunk
672
+
673
+ * higher timeouts for uploads to compensate for slow
674
+ (but not dead) servers.
675
+
676
+ Changes since v2.2.0:
677
+
678
+ === client changes
679
+
680
+ * "store_file" now accepts any IO object capable of streaming
681
+ data (e.g. pipes and sockets). This uses chunked
682
+ Transfer-Encoding for PUTs, so backend storage nodes
683
+ will need to support this (latest mogstored does).
684
+
685
+ * "store_file" no longer uses an infinite timeout when
686
+ awaiting a response after a PUT, the new timeout for the
687
+ response is now calculated based on the time and size of
688
+ the PUT request.
689
+
690
+ * new commands: "file_debug" and "file_info" (new commands
691
+ in mogilefsd, be sure you have the latest version)
692
+
693
+ * "get_paths" takes optional ":pathcount" parameter
694
+ to control the number of returned paths.
695
+
696
+ * "get_file_data" supports offset and count for partial
697
+ transfer (requires support from storage node for
698
+ Range: requests, most HTTP servers are capable of this)
699
+
700
+ * IO.copy_stream is enabled by default under Ruby 1.9.3.
701
+ Expect performance improvements.
702
+
703
+ * "list_keys" with a passed block (for additional info) is
704
+ faster due to internal pipelining implementation and the
705
+ addition of "file_info" support.
706
+
707
+ * fixed handling of "+" in key/domain names (old bug)
708
+
709
+ * rare, truncated partial responses due to network/server
710
+ failure now raise MogileFS::InvalidResponseError
711
+
712
+ === admin changes
713
+
714
+ Admin support is still a work-in-progress,
715
+ I usually just find myself using "mogadm" anyways.
716
+
717
+ * new admin commands: "replicate_now"
718
+
719
+ * "get_stats" no longer works on new mogilefsd versions
720
+
721
+ * get_domains handles "repl_policy" field correctly for classes
722
+ in MogileFS 2.x
723
+
724
+ * admin commands should convert all numeric fields to either
725
+ Integer or Float objects and not String representations
726
+ of numerics. Affected methods include:
727
+ get_hosts, get_devices, list_fids, each_fids, get_domains
728
+
729
+ === miscellany
730
+
731
+ * we no longer add methods to standard Ruby classes
732
+ (at least we never /changed/ existing methods :P)
733
+
734
+ * {kgio}[http://bogomips.org/kgio] automatically used
735
+ if available, but not required to avoid exceptions
736
+ with non-blocking I/O
737
+
738
+ * dropped Ruby 1.8.6 support, 1.8.7 or later is required.
739
+
740
+ * Tested with MRI 1.8.7, 1.9.3 and Rubinius 1.2.4
741
+
742
+ * MogileFS::Mysql - deprecated, to be removed in 2012
743
+
744
+ * improved test suite
745
+
746
+ * some optional experimental features/changes,
747
+ see "git log" for details
748
+
749
+ * Added internal pipelining implementation, this is
750
+ not easy-to-use since the server can respond-out-of-order,
751
+ but still useful for things like a list_keys+file_info
752
+ loop.
753
+
754
+ commit f854b9b8a10649d1898b840a8659a69dfee693ab
755
+ Author: Eric Wong <normalperson@yhbt.net>
756
+ Date: Mon Nov 28 20:49:01 2011 +0000
757
+
758
+ test_mogilefs_integration: remove umask/permissions check on created file
759
+
760
+ It's not consistent between Ruby versions... oh well..
761
+
762
+ commit 46e6a9058535b41a27aaac7ee98e84a335f0fade
763
+ Author: Eric Wong <normalperson@yhbt.net>
764
+ Date: Mon Nov 28 20:48:24 2011 +0000
765
+
766
+ test_mogilefs: speling ficks
767
+
768
+ commit bc9dc23cc4552fe46f0473cf208169c41e6892aa
769
+ Author: Eric Wong <normalperson@yhbt.net>
770
+ Date: Sat Nov 26 19:31:49 2011 +0000
771
+
772
+ copy_stream emulator respects creation umask
773
+
774
+ This matches the latest IO.copy_stream behavior.
775
+ [ruby-core:41308], r33851 in ruby/trunk
776
+
777
+ commit d806fa67899e697a2d399eff0553e9c3b60e484e
778
+ Author: Eric Wong <normalperson@yhbt.net>
779
+ Date: Fri Nov 25 05:46:08 2011 +0000
780
+
781
+ backend: small cleanup to use case statement
782
+
783
+ Easier for me to read, this way, and OK lines are usually more
784
+ common than ERR lines :P
785
+
786
+ commit 0fce97034959a605e66ebd645bf4a1957bfed870
787
+ Author: Eric Wong <normalperson@yhbt.net>
788
+ Date: Thu Nov 24 05:49:12 2011 +0000
789
+
790
+ mogstored_rack: add ability to change :io_size and :open_flags
791
+
792
+ This allows folks to try IO::SYNC, and maybe even IO::DIRECT.
793
+ Additionally, :io_size may be used to optimize IO::SYNC or
794
+ make IO::DIRECT _work_.
795
+
796
+ Removal of the "Tempfile" dependency means we no longer work
797
+ reliably on NFS, but nobody sane puts MogileFS devices on
798
+ NFS, anyways. (Actually, nobody sane uses NFS if atomicity
799
+ is important :P)
800
+
801
+ commit 6a1164a0ededd7f80ac3b493c78c0fa1b9b8b91b
802
+ Author: Eric Wong <normalperson@yhbt.net>
803
+ Date: Mon Nov 21 20:39:59 2011 +0000
804
+
805
+ http_file: timeout scaling for "write" method
806
+
807
+ Increase write timeouts as we become more vested in uploading to
808
+ a socket. The remote server may take longer and longer to
809
+ respond due to accumulated I/O delays if it is writing out
810
+ to disk.
811
+
812
+ We also don't need/want a "write" method in MogileFS::Socket,
813
+ it's only for use with IO.copy_stream in HTTPFile.
814
+
815
+ commit 64b3335c8b41ca77395f7eb7bbd7d9b0a62bc8c7
816
+ Author: Eric Wong <normalperson@yhbt.net>
817
+ Date: Mon Nov 21 01:02:15 2011 +0000
818
+
819
+ mogilefs-client 3.0.0-rc1
820
+
821
+ === client changes
822
+
823
+ * "store_file" now accepts any IO object capable of streaming
824
+ data (e.g. pipes and sockets). This uses chunked
825
+ Transfer-Encoding for PUTs, so backend storage nodes
826
+ will need to support this (latest mogstored does).
827
+
828
+ * "store_file" no longer uses an infinite timeout when
829
+ awaiting a response after a PUT, the new timeout for the
830
+ response is now calculated based on the time and size of
831
+ the PUT request.
832
+
833
+ * new commands: "file_debug" and "file_info" (new commands
834
+ in mogilefsd, be sure you have the latest version)
835
+
836
+ * "get_paths" takes optional ":pathcount" parameter
837
+ to control the number of returned paths.
838
+
839
+ * "get_file_data" supports offset and count for partial
840
+ transfer (requires support from storage node for
841
+ Range: requests, most HTTP servers are capable of this)
842
+
843
+ * IO.copy_stream is enabled by default under Ruby 1.9.3.
844
+ Expect performance improvements.
845
+
846
+ * "list_keys" with a passed block (for additional info) is
847
+ faster due to internal pipelining implementation and the
848
+ addition of "file_info" support.
849
+
850
+ * fixed handling of "+" in key/domain names (old bug)
851
+
852
+ * rare, truncated partial responses due to network/server
853
+ failure now raise MogileFS::InvalidResponseError
854
+
855
+ === admin changes
856
+
857
+ Admin support is still a work-in-progress,
858
+ I usually just find myself using "mogadm" anyways.
859
+
860
+ * new admin commands: "replicate_now"
861
+
862
+ * "get_stats" no longer works on new mogilefsd versions
863
+
864
+ * get_domains handles "repl_policy" field correctly for classes
865
+ in MogileFS 2.x
866
+
867
+ * admin commands should convert all numeric fields to either
868
+ Integer or Float objects and not String representations
869
+ of numerics. Affected methods include:
870
+ get_hosts, get_devices, list_fids, each_fids, get_domains
871
+
872
+ === miscellany
873
+
874
+ * we no longer add methods to standard Ruby classes
875
+ (at least we never /changed/ existing methods :P)
876
+
877
+ * {kgio}[http://bogomips.org/kgio] automatically used
878
+ if available, but not required to avoid exceptions
879
+ with non-blocking I/O
880
+
881
+ * dropped Ruby 1.8.6 support, 1.8.7 or later is required.
882
+
883
+ * Tested with MRI 1.8.7, 1.9.3 and Rubinius 1.2.4
884
+
885
+ * MogileFS::Mysql - deprecated, to be removed in 2012
886
+
887
+ * improved test suite
888
+
889
+ * some optional experimental features/changes,
890
+ see "git log" for details
891
+
892
+ * Added internal pipelining implementation, this is
893
+ not easy-to-use since the server can respond-out-of-order,
894
+ but still useful for things like a list_keys+file_info
895
+ loop.
896
+
897
+ commit 126019445776ed08dd33d60e146a9d2e5786cf7c
898
+ Author: Eric Wong <normalperson@yhbt.net>
899
+ Date: Mon Nov 21 00:06:23 2011 +0000
900
+
901
+ http_file: wait for the destination server to respond
902
+
903
+ Uploading large files can cause the destination to take
904
+ equally long to respond, either because of extra I/O
905
+ needed to verify or because we've hit fsync(2) or similar.
906
+
907
+ commit a292a04a7e8c7cf65b6f9a7462c97b10010e4877
908
+ Author: Eric Wong <normalperson@yhbt.net>
909
+ Date: Mon Nov 21 00:05:56 2011 +0000
910
+
911
+ test/fresh: raise if mogadm fails to return writability
912
+
913
+ We don't want dependent tests to continue
914
+
915
+ commit fbf389f5e1bb0742726e8b3923074a72c410db10
916
+ Author: Eric Wong <normalperson@yhbt.net>
917
+ Date: Mon Nov 21 00:05:33 2011 +0000
918
+
919
+ mogstored_rack: fix Ruby 1.8 compatibility
920
+
921
+ Tempfile.open works differently, there.
922
+
923
+ commit d3c08764deb3345c5bdc34b35d2dd2a2d8a4771e
924
+ Author: Eric Wong <normalperson@yhbt.net>
925
+ Date: Mon Nov 21 00:05:02 2011 +0000
926
+
927
+ test_mogilefs: fix bad test due to partial read
928
+
929
+ Ugh, shouldn't use sysread there
930
+
931
+ commit a73444af13ce8ac9cd94347c627f8191b3a80634
932
+ Author: Eric Wong <normalperson@yhbt.net>
933
+ Date: Sun Nov 20 11:16:30 2011 +0000
934
+
935
+ examples/mogstored_rack: fix temporary file path
936
+
937
+ We always want to use the destination directory as the
938
+ temporary directory to avoid cross-device link/rename
939
+ attempts.
940
+
941
+ commit 21fc20b7d798c3eab6155b24dcb58c95b53ef856
942
+ Author: Eric Wong <normalperson@yhbt.net>
943
+ Date: Sun Nov 20 06:29:26 2011 +0000
944
+
945
+ add mogstored_rack example
946
+
947
+ This should allow any Rack server to become an HTTP server for
948
+ mogstored.
949
+
950
+ When using one of Unicorn/Rainbows!/Zbatery, the Content-MD5
951
+ HTTP Trailer will be supported. Otherwise, Content-MD5 can
952
+ always be supported as a regular HTTP header (at the cost of
953
+ requiring the client to read whatever they upload twice).
954
+
955
+ commit 6018860fe20c82daa131cb9e30dba228c862c540
956
+ Author: Eric Wong <normalperson@yhbt.net>
957
+ Date: Sun Nov 20 03:09:33 2011 +0000
958
+
959
+ split out test for fresh mogilefsd instance testing
960
+
961
+ commit 9922005b9da00d4709202d87b434ca93c6b53a01
962
+ Author: Eric Wong <normalperson@yhbt.net>
963
+ Date: Sun Nov 20 02:22:19 2011 +0000
964
+
965
+ test_fresh: factor out mogstored setup
966
+
967
+ We'll support alternate mogstored setups...
968
+
969
+ commit 7f721b1608882afa15c28be0ec6071fb1e4e5872
970
+ Author: Eric Wong <normalperson@yhbt.net>
971
+ Date: Sun Nov 20 02:21:44 2011 +0000
972
+
973
+ test/exec: close-on-exec all Tempfiles
974
+
975
+ commit f8156e239ea4da4cbcd020f24bf06c4fb9e7cde7
976
+ Author: Eric Wong <normalperson@yhbt.net>
977
+ Date: Sat Nov 19 08:45:07 2011 +0000
978
+
979
+ support MogileFS::MogileFS#get_file_data to dest path
980
+
981
+ Destination path will be created with 0600 permissions to
982
+ be consistent with IO.copy_stream [ruby-core:41151]
983
+
984
+ commit 381044eeda55a5ca7edcccd87d27c30a287723e1
985
+ Author: Eric Wong <normalperson@yhbt.net>
986
+ Date: Sat Nov 19 00:18:31 2011 +0000
987
+
988
+ test_admin: fix test due to broken mocks
989
+
990
+ integration tests > unit tests :P
991
+
992
+ commit d2c175aaafa9a06c377de5df609759073d93e894
993
+ Author: Eric Wong <normalperson@yhbt.net>
994
+ Date: Sat Nov 19 00:13:28 2011 +0000
995
+
996
+ mog: config parser handles "noclobber = true"
997
+
998
+ noclobber is false by default
999
+
1000
+ commit 01f65edf9594fdd811c5671a429b98ffff6f6523
1001
+ Author: Eric Wong <normalperson@yhbt.net>
1002
+ Date: Sat Nov 19 00:10:15 2011 +0000
1003
+
1004
+ mog: add --no-clobber/-n option for 'cp' and 'tee'
1005
+
1006
+ Overwriting data is bad, sometimes
1007
+
1008
+ commit cbce24009023b7cbd751c8c027281673d0cdaa27
1009
+ Author: Eric Wong <normalperson@yhbt.net>
1010
+ Date: Sat Nov 19 00:00:07 2011 +0000
1011
+
1012
+ add MogileFS::MogileFS#exist? method
1013
+
1014
+ Similar to File.exist? for checking the existence of
1015
+ a particular file.
1016
+
1017
+ commit 2ff4eacf708a3f2e42140a34568bf3792c063618
1018
+ Author: Eric Wong <normalperson@yhbt.net>
1019
+ Date: Fri Nov 18 23:14:08 2011 +0000
1020
+
1021
+ admin (each_fid/list_fids): remove dependency on get_stats
1022
+
1023
+ The +to+ arg of list_fids is now actually +count+ internally
1024
+ because gaps may appear in an auto-incrementing FID range
1025
+ (due to deleted files). We also have a default +count+ of
1026
+ 100 (matches the internal MogileFS default).
1027
+
1028
+ commit e6edebe4288c98827e723d75fe9fea4c1a0b013f
1029
+ Author: Eric Wong <normalperson@yhbt.net>
1030
+ Date: Fri Nov 18 22:49:55 2011 +0000
1031
+
1032
+ backend: make url_decode easier to read (for me, at least)
1033
+
1034
+ I never learned to read Hash[] well. Also, String#freeze on
1035
+ keys to prevent Ruby from calling String#dup for us.
1036
+
1037
+ commit b4b3ec9ac07dad1aab6da1d3ba9c26c4b7959dc2
1038
+ Author: Eric Wong <normalperson@yhbt.net>
1039
+ Date: Fri Nov 18 22:45:58 2011 +0000
1040
+
1041
+ admin: add numeric conversions for consistency
1042
+
1043
+ Ruby isn't Perl, Ruby won't automatically coerce between
1044
+ Strings and numeric types (Integer and Floats)
1045
+
1046
+ commit 8d2e9c8a10cb6a53874e47a30b63e194f12d80fb
1047
+ Author: Eric Wong <normalperson@yhbt.net>
1048
+ Date: Fri Nov 18 22:04:47 2011 +0000
1049
+
1050
+ admin (list_fids,each_fid): convert integer fields to integers
1051
+
1052
+ fid, devcount, length are all integers, so ensure they're
1053
+ actual Integer (Fixnum/Bignum) objects.
1054
+
1055
+ commit 7498d798dd6b274383e9e0d6d40ed2b725129227
1056
+ Author: Eric Wong <normalperson@yhbt.net>
1057
+ Date: Fri Nov 18 21:44:56 2011 +0000
1058
+
1059
+ admin: get_stats is deprecated and gone from latest MogileFS
1060
+
1061
+ Newer versions of mogilefsd do not support this command,
1062
+ use mogstats(1) from MogileFS::Utils (on CPAN) instead.
1063
+
1064
+ commit 1d891c7d0c300444c8327222fdee95cd3174c667
1065
+ Author: Eric Wong <normalperson@yhbt.net>
1066
+ Date: Fri Nov 18 10:50:25 2011 +0000
1067
+
1068
+ admin: add clear_cache command
1069
+
1070
+ Currently a no-op in MogileFS 2.55, but it was useful at one
1071
+ point in the past and may be in the future.
1072
+
1073
+ commit 4074889c30690a3effef4fe49fa5a75f7d6c8e51
1074
+ Author: Eric Wong <normalperson@yhbt.net>
1075
+ Date: Fri Nov 18 10:23:50 2011 +0000
1076
+
1077
+ admin: add support for replicate_now command
1078
+
1079
+ commit 0c86accfccef5637823574d575831c9b3c5a752f
1080
+ Author: Eric Wong <normalperson@yhbt.net>
1081
+ Date: Fri Nov 18 03:03:35 2011 +0000
1082
+
1083
+ mogilefs: documentation update
1084
+
1085
+ * re-document exception classes
1086
+ * latest upstream MogileFS is 2.55
1087
+
1088
+ commit 0f22b7030f5ba9fc033f19b850356d9e826eb792
1089
+ Author: Eric Wong <normalperson@yhbt.net>
1090
+ Date: Fri Nov 18 03:00:20 2011 +0000
1091
+
1092
+ make MogileFS.io= an accessor
1093
+
1094
+ In case somebody wants to use this to override the
1095
+ default class for copy_stream in Ruby. It's also
1096
+ easier to read, this way.
1097
+
1098
+ commit b7d6538453082e92d4ab98cbbf9c9db7aa7c70a7
1099
+ Author: Eric Wong <normalperson@yhbt.net>
1100
+ Date: Fri Nov 18 02:41:08 2011 +0000
1101
+
1102
+ TODO: add manpage item for "mog"
1103
+
1104
+ Maybe it'll actually get used.
1105
+
1106
+ commit d2c3306bf731e37b4ff05c7790df6434ee326afe
1107
+ Author: Eric Wong <normalperson@yhbt.net>
1108
+ Date: Thu Nov 17 09:57:48 2011 +0000
1109
+
1110
+ mog: improve "stat" subcommand
1111
+
1112
+ * return error if there was a missing key
1113
+ * use file_info to help us determine info
1114
+ * show all URLs for a given key
1115
+
1116
+ commit 53279166865f7cd41976b7235713ce58c83e7dd1
1117
+ Author: Eric Wong <normalperson@yhbt.net>
1118
+ Date: Thu Nov 17 09:49:51 2011 +0000
1119
+
1120
+ mog: fix shadow warnings
1121
+
1122
+ Found with "ruby -w" on 1.9.3
1123
+
1124
+ commit 31e37c1588c7413fb1d6e53f741a21542a20c8b2
1125
+ Author: Eric Wong <normalperson@yhbt.net>
1126
+ Date: Thu Nov 17 09:45:02 2011 +0000
1127
+
1128
+ mog: add --version switch
1129
+
1130
+ It's sometimes handy to know which version we're running
1131
+
1132
+ commit 562e8b1a1e80e92f0b38891f5516efa221a1a6ce
1133
+ Author: Eric Wong <normalperson@yhbt.net>
1134
+ Date: Thu Nov 17 09:42:51 2011 +0000
1135
+
1136
+ mog: fix unchunked tee
1137
+
1138
+ Also, just use aliases while we're at it
1139
+
1140
+ commit 255da707c4460a576b7ed7cd5da818a2f5efa1ef
1141
+ Author: Eric Wong <normalperson@yhbt.net>
1142
+ Date: Thu Nov 17 09:41:02 2011 +0000
1143
+
1144
+ mog: "tee" subcommand does not require a --class
1145
+
1146
+ We can just use default
1147
+
1148
+ commit 5a8ed22d5ee2e101fdfd982589cf6dfe1fa1fa5e
1149
+ Author: Eric Wong <normalperson@yhbt.net>
1150
+ Date: Mon Nov 14 15:46:37 2011 -0800
1151
+
1152
+ mysql: deprecate this interface
1153
+
1154
+ In hindsight, it's not appropriate and should be a separate
1155
+ project...
1156
+
1157
+ commit 1d53980c8a23e15e5a9a91fcd265cc5a647d6544
1158
+ Author: Eric Wong <normalperson@yhbt.net>
1159
+ Date: Mon Nov 14 15:00:03 2011 -0800
1160
+
1161
+ doc: update TODO
1162
+
1163
+ We have goals, yes we do
1164
+
1165
+ commit d3014a97fb97e290bcbefeeee3d015a04eb37e07
1166
+ Author: Eric Wong <normalperson@yhbt.net>
1167
+ Date: Mon Nov 14 14:55:41 2011 -0800
1168
+
1169
+ doc: add file_info example
1170
+
1171
+ It can be useful, yes.
1172
+
1173
+ commit c5a7ef1be173875dafa4804af53e499688bd9452
1174
+ Author: Eric Wong <normalperson@yhbt.net>
1175
+ Date: Mon Nov 14 14:52:09 2011 -0800
1176
+
1177
+ file_info_cleanup: nodoc this internal method
1178
+
1179
+ commit 31c413e69514a9b99cf96f3382fb03dee6552d6f
1180
+ Author: Eric Wong <normalperson@yhbt.net>
1181
+ Date: Mon Nov 14 11:01:22 2011 +0000
1182
+
1183
+ http_file: use String#inspect on broken server response
1184
+
1185
+ If we have a broken server, it could've spewed anything, so
1186
+ use #inspect to clean it up in case somebody put malicious
1187
+ escape sequences in the server response.
1188
+
1189
+ commit 52a19f3c4ed9da852eac809276d7f64fe4defbef
1190
+ Author: Eric Wong <normalperson@yhbt.net>
1191
+ Date: Mon Nov 14 10:57:43 2011 +0000
1192
+
1193
+ Revert "http_file: do not reopen opened file (on retry)"
1194
+
1195
+ As it turns out, the previous change was wrong since we have to
1196
+ reopen it anyways as "upload" is called in a loop. Attempting
1197
+ to rewind @active is still a good error-check, though.
1198
+
1199
+ This reverts commit 754b8077b55e37627c32d1339227001d509d8517.
1200
+
1201
+ commit 754b8077b55e37627c32d1339227001d509d8517
1202
+ Author: Eric Wong <normalperson@yhbt.net>
1203
+ Date: Mon Nov 14 09:55:01 2011 +0000
1204
+
1205
+ http_file: do not reopen opened file (on retry)
1206
+
1207
+ Since we can either rewind it or we can't, we shouldn't
1208
+ reopen already-opened files.
1209
+
1210
+ commit b8b0c8003ca16cc123c99e91fa65e8702a02a86f
1211
+ Author: Eric Wong <normalperson@yhbt.net>
1212
+ Date: Mon Nov 14 09:54:22 2011 +0000
1213
+
1214
+ socket_test: ensure timed_write returns proper bytes
1215
+
1216
+ We rely on this since we alias "write" to this and
1217
+ IO.copy_stream relies on the proper return value.
1218
+
1219
+ commit fb6a9f43728f46efee4e3f4aa6c689d260ae7387
1220
+ Author: Eric Wong <normalperson@yhbt.net>
1221
+ Date: Mon Nov 14 09:53:26 2011 +0000
1222
+
1223
+ test_mogilefs: do not assume header + body is in one recv()
1224
+
1225
+ One can never guarantee this with TCP.
1226
+
1227
+ commit 41d9b886e9ae1bea35753d6f5de958154809330a
1228
+ Author: Eric Wong <normalperson@yhbt.net>
1229
+ Date: Mon Nov 14 09:38:42 2011 +0000
1230
+
1231
+ mog: teach tee to optionally --chunk uploads
1232
+
1233
+ On some backend servers (latest Perlbal), chunked uploads work,
1234
+ so we can stream uploads to them without buffering to a
1235
+ Tempfile. Of course, this destroys our ability to retry...
1236
+
1237
+ commit 46f51f4eaaef4e8f7b36fe5f881551099d5113b8
1238
+ Author: Eric Wong <normalperson@yhbt.net>
1239
+ Date: Mon Nov 14 09:24:05 2011 +0000
1240
+
1241
+ mog: fix "test -e" on missing files
1242
+
1243
+ commit 431de2b3f7b3b80a8f6da01549f475cff945f2bb
1244
+ Author: Eric Wong <normalperson@yhbt.net>
1245
+ Date: Mon Nov 14 09:21:27 2011 +0000
1246
+
1247
+ list_keys_verbose: pipeline retries on all socket errors
1248
+
1249
+ We'll try to retry for all transient issues that aren't
1250
+ our fault
1251
+
1252
+ commit 7faeab6c16cf127024d2cd8ce0de151e5375d199
1253
+ Author: Eric Wong <normalperson@yhbt.net>
1254
+ Date: Mon Nov 14 09:16:23 2011 +0000
1255
+
1256
+ http_file: ensure regular paths are rewound, too
1257
+
1258
+ We could also reopen them, but it's harder to test FIFOs
1259
+ for rewindability (and fail) that way.
1260
+
1261
+ commit a37a40ae2eed07439e23e3f4366816576ab801c9
1262
+ Author: Eric Wong <normalperson@yhbt.net>
1263
+ Date: Sun Nov 13 07:47:16 2011 +0000
1264
+
1265
+ socket: alias write to timed_write
1266
+
1267
+ All of our writes must respect timeouts.
1268
+ Return value must be the number bytes written.
1269
+
1270
+ commit 63b390fb6e6ea43f20c42865efa2b370f4fb0c55
1271
+ Author: Eric Wong <normalperson@yhbt.net>
1272
+ Date: Sun Nov 13 06:53:21 2011 +0000
1273
+
1274
+ mog: small cleanups
1275
+
1276
+ * use warn instead of STDERR.puts
1277
+ * prefer $std* to STD*, they're less ambiguous
1278
+ * $stderr doesn't need binmode, we don't hit it directly
1279
+
1280
+ commit fab3a54359e7ddd67b96be010ce7fcdee31b23a6
1281
+ Author: Eric Wong <normalperson@yhbt.net>
1282
+ Date: Sun Nov 13 06:45:50 2011 +0000
1283
+
1284
+ mog: ensure stdout/stderr are always sync=true
1285
+
1286
+ Luserspace buffering is often confusing to users reading
1287
+ input, and performance-wise it's more often a waste
1288
+ of memory bandwidth than it saves for syscall reductions,
1289
+ especially since we usually do large transfers.
1290
+
1291
+ commit 7bedbf3ed5920a922da89874a2bd134fb1a82c83
1292
+ Author: Eric Wong <normalperson@yhbt.net>
1293
+ Date: Sat Nov 12 12:28:49 2011 +0000
1294
+
1295
+ list_keys_verbose: retry on pipeline error
1296
+
1297
+ Sometimes a server will shut down on us in the
1298
+ middle of a pipeline. That is bad.
1299
+
1300
+ commit 435d43d6b85481e7b678c3092dec7fcb246e30e8
1301
+ Author: Eric Wong <normalperson@yhbt.net>
1302
+ Date: Sat Nov 12 11:57:17 2011 +0000
1303
+
1304
+ backend: document pipeline_dispatch behavior
1305
+
1306
+ It's tricky, but possible to get right (at least for list_keys)
1307
+
1308
+ commit d48dcc1d1e4679cf7dbd428fa4d2e7932f9839d3
1309
+ Author: Eric Wong <normalperson@yhbt.net>
1310
+ Date: Sat Nov 12 09:22:56 2011 +0000
1311
+
1312
+ list_keys_verbose: preserve ordering with multiple queryworkers
1313
+
1314
+ When multiple queryworkers are used in the tracker, it's
1315
+ possible to receive responses out-of-order. We need to
1316
+ hold onto responses while the pipeline is being processed
1317
+ and only make callbacks when they can be made in the
1318
+ order the keys were given to us in.
1319
+
1320
+ commit ec7e00ad0a277c3b760d0f88482108bd0624224e
1321
+ Author: Eric Wong <normalperson@yhbt.net>
1322
+ Date: Sat Nov 12 08:01:12 2011 +0000
1323
+
1324
+ fix misnamed exceptions
1325
+
1326
+ PipelineError was misnamed should be recoverable in user code.
1327
+ MogileFS::Error should be raised for bugs (in our code or
1328
+ user's code).
1329
+
1330
+ commit fd01fa4d894130e2e7dec48b3ea45846124cd15d
1331
+ Author: Eric Wong <normalperson@yhbt.net>
1332
+ Date: Fri Nov 11 17:52:46 2011 -0800
1333
+
1334
+ list_keys: more accurate devcount file_info-less servers
1335
+
1336
+ get_paths defaults to pathcount=2, we want all of them,
1337
+ so INT_MAX should be enough...
1338
+
1339
+ commit 8b377466612afc2fead11e462a26bcf12be86df4
1340
+ Merge: 89e0eb4 beed7ec
1341
+ Author: Eric Wong <normalperson@yhbt.net>
1342
+ Date: Fri Nov 11 17:48:42 2011 -0800
1343
+
1344
+ Merge remote-tracking branch 'origin/pipeline'
1345
+
1346
+ * origin/pipeline:
1347
+ list_keys/each_key: better handling of verbose listings
1348
+ pipeline: make errors easier to debug by including the request
1349
+ initial pipeline API
1350
+
1351
+ commit 89e0eb49aa39b22b3de041dcc1db4ce6fe6c2a07
1352
+ Author: Eric Wong <normalperson@yhbt.net>
1353
+ Date: Fri Nov 11 17:39:25 2011 -0800
1354
+
1355
+ auto-generate mogilefs/version from git
1356
+
1357
+ GIT-VERSION-GEN was ported from Bourne shell to Ruby.
1358
+
1359
+ commit b2c478eb88f442adb44b1fbe21ee25c1d368ae89
1360
+ Author: Eric Wong <normalperson@yhbt.net>
1361
+ Date: Fri Nov 11 15:55:04 2011 -0800
1362
+
1363
+ socket/pure_ruby: reduce Errno::EAGAIN exceptions
1364
+
1365
+ Exceptions are expensive, and Errno::EAGAIN is especially so
1366
+ in MRI 1.9.2+, so avoid generating too many of them. This
1367
+ is the whole reason kgio exists, after all.
1368
+
1369
+ commit 890b3904c770955cdb0a70864060f99786a4f402
1370
+ Author: Eric Wong <normalperson@yhbt.net>
1371
+ Date: Fri Nov 11 15:51:14 2011 -0800
1372
+
1373
+ test_fresh: factor out setup_mogilefs routine
1374
+
1375
+ We need to support plugins in the nearish future
1376
+
1377
+ commit beed7ecfbcb062283cd8842e03f7ccd57f477f49
1378
+ Author: Eric Wong <normalperson@yhbt.net>
1379
+ Date: Fri Nov 11 23:26:23 2011 +0000
1380
+
1381
+ list_keys/each_key: better handling of verbose listings
1382
+
1383
+ This allows us to implement "mog ls -l" much more efficiently
1384
+
1385
+ commit d9b4aa1ad01a0506a544eaabe02a9852d01d5d4f
1386
+ Author: Eric Wong <normalperson@yhbt.net>
1387
+ Date: Fri Nov 11 10:51:44 2011 +0000
1388
+
1389
+ pipeline: make errors easier to debug by including the request
1390
+
1391
+ Otherwise it's outright painful to figure out what failed in a
1392
+ pipeline...
1393
+
1394
+ commit df3064c1cd63a9f626938f1dcde44f1909971a59
1395
+ Author: Eric Wong <normalperson@yhbt.net>
1396
+ Date: Fri Nov 11 02:18:39 2011 -0800
1397
+
1398
+ initial pipeline API
1399
+
1400
+ This is useful for the "verbose" listing of keys since
1401
+ we make a lot of file_info calls here. This API feels
1402
+ very awkward, but I think it's unavoidable...
1403
+
1404
+ commit de7803e4c9732b5805679d4cada6370e26fd5d67
1405
+ Author: Eric Wong <normalperson@yhbt.net>
1406
+ Date: Fri Nov 11 15:24:21 2011 -0800
1407
+
1408
+ test/test_backend: fix broken escaping test
1409
+
1410
+ This is a followup to commit
1411
+ 55de4a3375793fa31993a1e9b4be777007bd31b8
1412
+ (url_unescape: fix ordering of "+" => " " of swap)
1413
+
1414
+ commit 3d067dcb24644bf78260569a9de6e6cdd60fd469
1415
+ Author: Eric Wong <normalperson@yhbt.net>
1416
+ Date: Fri Nov 11 11:05:51 2011 +0000
1417
+
1418
+ Rakefile: packaging updates
1419
+
1420
+ commit 55de4a3375793fa31993a1e9b4be777007bd31b8
1421
+ Author: Eric Wong <normalperson@yhbt.net>
1422
+ Date: Fri Nov 11 10:47:16 2011 +0000
1423
+
1424
+ url_unescape: fix ordering of "+" => " " of swap
1425
+
1426
+ Otherwise we'll be converting "%2B" into " " instead of
1427
+ "+" when it appears in a file name.
1428
+
1429
+ commit 45f519f571cf88e1710e8175cff5742bed070ff9
1430
+ Author: Eric Wong <normalperson@yhbt.net>
1431
+ Date: Thu Nov 10 16:48:28 2011 -0800
1432
+
1433
+ backend: factor out dispatch unlocked
1434
+
1435
+ We may use this for pipelining
1436
+
1437
+ commit 8a54ed8e52e428cb3790d71bed2b99ac52e0b991
1438
+ Author: Eric Wong <normalperson@yhbt.net>
1439
+ Date: Thu Nov 10 16:04:00 2011 -0800
1440
+
1441
+ doc: misc updates
1442
+
1443
+ commit 8b1057fe8105f5672f89b87fffdee3a129e7764f
1444
+ Author: Eric Wong <normalperson@yhbt.net>
1445
+ Date: Thu Nov 10 16:00:45 2011 -0800
1446
+
1447
+ admin: use Object#__send__ since Object#send can be overwritten
1448
+
1449
+ commit 3f222d41cbfe01671dce51e6329c2d949f30111a
1450
+ Author: Eric Wong <normalperson@yhbt.net>
1451
+ Date: Thu Nov 10 15:59:36 2011 -0800
1452
+
1453
+ backend: avoid eval for defining error classes
1454
+
1455
+ commit fea4e19859025e458078f30d16be13bfe57dd8d2
1456
+ Author: Eric Wong <normalperson@yhbt.net>
1457
+ Date: Thu Nov 10 15:56:46 2011 -0800
1458
+
1459
+ Revert "Compact get_paths output so we don't have nils"
1460
+
1461
+ This reverts commit f0ed5cb6ec6851a367175a93398e813e2d62667f.
1462
+
1463
+ Unnecessary paranoia, our Backend is more robust nowadays
1464
+ by requiring CRLF before parsing
1465
+
1466
+ commit f570240f9fe1b44fcb72eb78d74cada0844ca39d
1467
+ Author: Eric Wong <normalperson@yhbt.net>
1468
+ Date: Thu Nov 10 15:54:54 2011 -0800
1469
+
1470
+ mogilefs/mogilefs: make @domain an accessor
1471
+
1472
+ It makes sense for use with MogileFS::Pool (in case somebody
1473
+ is pooling connections).
1474
+
1475
+ commit 4728ddc616e50727a2cf325ffb4cacb3f3163921
1476
+ Author: Eric Wong <normalperson@yhbt.net>
1477
+ Date: Thu Nov 10 15:23:46 2011 -0800
1478
+
1479
+ get_paths defaults to noverify: true
1480
+
1481
+ This restores 2.x behavior and is faster and safer since
1482
+ we're smart enough to deal with failover. Also dropping
1483
+ default @zone support since it doesn't seem that useful.
1484
+
1485
+ commit 7e24f6dc9f5aa90f123dc0e9ee10d22d57a6dee1
1486
+ Author: Eric Wong <normalperson@yhbt.net>
1487
+ Date: Thu Nov 10 12:37:14 2011 -0800
1488
+
1489
+ test_http_reader: fix stupid/broken assertion
1490
+
1491
+ I shouldn't be allowed to code.
1492
+
1493
+ commit fb77320dfa382190e1f724a7c9f00dd629dfa954
1494
+ Author: Eric Wong <normalperson@yhbt.net>
1495
+ Date: Thu Nov 10 10:58:22 2011 +0000
1496
+
1497
+ test/test_http_reader: fix unused var warning
1498
+
1499
+ commit c6ae612f3022e4f010dc8ecce7b19e11e6b12f93
1500
+ Author: Eric Wong <normalperson@yhbt.net>
1501
+ Date: Thu Nov 10 10:16:23 2011 +0000
1502
+
1503
+ documentation/packaging updates
1504
+
1505
+ Trying to find a happy medium within Hoe while keeping
1506
+ my preference for gmake and forcing wrongdoc on readers:
1507
+ JavaScript and GUIs all suck :P
1508
+
1509
+ commit 7b4f4a079e1fa86aab41b7d8238ca07593159eb9
1510
+ Author: Eric Wong <normalperson@yhbt.net>
1511
+ Date: Thu Nov 10 09:22:49 2011 +0000
1512
+
1513
+ backend: more descriptive error for backends being unreachable
1514
+
1515
+ Each backend could have a different story to tell
1516
+
1517
+ commit febf8fc2aab898218333e245bab4bda972de5692
1518
+ Author: Eric Wong <normalperson@yhbt.net>
1519
+ Date: Thu Nov 10 05:28:08 2011 +0000
1520
+
1521
+ ensure get_file_data users notice truncated responses
1522
+
1523
+ We don't want to silently truncate data on our users,
1524
+ that would be bad.
1525
+
1526
+ commit 9c0a7c670494fb55fb8ef98838fa0f53aab38d0d
1527
+ Author: Eric Wong <normalperson@yhbt.net>
1528
+ Date: Thu Nov 10 01:24:10 2011 +0000
1529
+
1530
+ socket/pure_ruby: swap IO#wait for IO#select
1531
+
1532
+ The return value of IO#wait is strange and confusing,
1533
+ relying on FIONREAD is a waste of time anyways.
1534
+
1535
+ commit 38a38766deef994577cfb89e7a1b5a30e8bcd7eb
1536
+ Author: Eric Wong <normalperson@yhbt.net>
1537
+ Date: Thu Nov 10 01:16:59 2011 +0000
1538
+
1539
+ test: set Thread.abort_on_exception= true
1540
+
1541
+ Should make tests easier to fix and debug.
1542
+
1543
+ commit 39202060afca2be96c1d01dd83b738de0bd2cc7f
1544
+ Author: Eric Wong <normalperson@yhbt.net>
1545
+ Date: Thu Nov 10 01:16:20 2011 +0000
1546
+
1547
+ backend: fix idempotent retry logic
1548
+
1549
+ We don't want to blindly retry on invalid keys and such,
1550
+ only on invalid (truncated) responses, timeouts, and
1551
+ syscall errors.
1552
+
1553
+ commit 265f3d32126cf2a31587a6021494f528bbdf8171
1554
+ Author: Eric Wong <normalperson@yhbt.net>
1555
+ Date: Wed Nov 9 10:06:39 2011 +0000
1556
+
1557
+ fix warnings, oops
1558
+
1559
+ Found with 1.9.3
1560
+
1561
+ commit 4b8bff9f4c90e6eb442c82b6f125279600311bf4
1562
+ Author: Eric Wong <normalperson@yhbt.net>
1563
+ Date: Wed Nov 9 09:06:19 2011 +0000
1564
+
1565
+ backend: automatically retry on idempotent commands
1566
+
1567
+ Read-only commands to the MogileFS tracker may be safely
1568
+ retried if a request is sent but no response is received.
1569
+
1570
+ commit e0711f60d8cdd49e543764ce2252d77163cf6fd5
1571
+ Author: Eric Wong <normalperson@yhbt.net>
1572
+ Date: Wed Nov 9 02:06:50 2011 +0000
1573
+
1574
+ avoid NilMethodError if get_file_data is passed an invalid key
1575
+
1576
+ It should raise on an unknown key, of course.
1577
+
1578
+ commit bbad43ec56c978c2d62c8f429354b04d20683c99
1579
+ Author: Eric Wong <normalperson@yhbt.net>
1580
+ Date: Tue Nov 8 23:33:28 2011 +0000
1581
+
1582
+ Rakefile: remove ZenTest test dependency
1583
+
1584
+ I don't use any of its tools
1585
+
1586
+ commit 42449ebe6d56ef76249c52267fe5e786edccbba5
1587
+ Author: Eric Wong <normalperson@yhbt.net>
1588
+ Date: Tue Nov 8 22:46:22 2011 +0000
1589
+
1590
+ get_file_data supports offset and count
1591
+
1592
+ Just like IO.copy_stream
1593
+
1594
+ commit d9d627d79f5beb38b048ce17c88b779eda1a75b8
1595
+ Author: Eric Wong <normalperson@yhbt.net>
1596
+ Date: Tue Nov 8 22:46:08 2011 +0000
1597
+
1598
+ update Manifest (ugh)
1599
+
1600
+ commit 60a31e86ee57d5d1f3b25bde6d2ea1e718f0353b
1601
+ Author: Eric Wong <normalperson@yhbt.net>
1602
+ Date: Tue Nov 8 22:11:21 2011 +0000
1603
+
1604
+ get_paths: expand and improve tests
1605
+
1606
+ get_paths may take a Hash for its optional arguments and
1607
+ now supports the optional :pathcount argument.
1608
+ There may now be a default @zone for MogileFS::MogileFS
1609
+ objects as well (specified via :zone).
1610
+
1611
+ commit 8bc17c29ef5024802fc7207023cdaa7f1b5eda5f
1612
+ Author: Eric Wong <normalperson@yhbt.net>
1613
+ Date: Tue Nov 8 21:21:05 2011 +0000
1614
+
1615
+ get_uri: object allocation reduction
1616
+
1617
+ Using Array#map! instead of Array#map can save us at
1618
+ least one object allocation.
1619
+
1620
+ commit 5bd27a2ff2d5b32a4d6aa3115fda63127164d1e3
1621
+ Author: Eric Wong <normalperson@yhbt.net>
1622
+ Date: Tue Nov 8 10:23:21 2011 +0000
1623
+
1624
+ test/aggregate: not all Ruby implementations support "-n" well
1625
+
1626
+ At least my year-old Rubinius installation does not
1627
+
1628
+ commit 4403d6936f72d8676f04799c419ca7f556b47bd1
1629
+ Author: Eric Wong <normalperson@yhbt.net>
1630
+ Date: Tue Nov 8 10:21:04 2011 +0000
1631
+
1632
+ test/exec: remove "uuid" gem dependency on 1.8
1633
+
1634
+ Just borrow the code from 1.9.3
1635
+
1636
+ commit 5f7f02420d2df6a29115dc9dcf31587290d0658f
1637
+ Author: Eric Wong <normalperson@yhbt.net>
1638
+ Date: Tue Nov 8 10:09:27 2011 +0000
1639
+
1640
+ copy_stream (1.8) fix close issue
1641
+
1642
+ Not sure exactly what was causing it...
1643
+
1644
+ commit 79d83988cb08ff646fcf7950c74e366ae6ebc290
1645
+ Author: Eric Wong <normalperson@yhbt.net>
1646
+ Date: Tue Nov 8 10:08:38 2011 +0000
1647
+
1648
+ bigfile: explicitly close HTTPReader socket
1649
+
1650
+ No need to unnecessarily trigger GC nor hit EMFILE/ENFILE
1651
+ on VMs that rarely GC IO objects...
1652
+
1653
+ commit 0d908e6ba1af6e0cc229dc4d66a2a0e97c07164c
1654
+ Author: Eric Wong <normalperson@yhbt.net>
1655
+ Date: Tue Nov 8 09:44:15 2011 +0000
1656
+
1657
+ http_reader: remove support for overriding http_method
1658
+
1659
+ GET is all we need and we can save some code this way.
1660
+ If we ever need to use HEAD much again, we can use
1661
+ net/http/persistent since our internal HTTP classes
1662
+ are only optimized for large responses.
1663
+
1664
+ commit 9be9c8b2ca91938025d9066ebde5c832da04f0ef
1665
+ Author: Eric Wong <normalperson@yhbt.net>
1666
+ Date: Tue Nov 8 09:40:16 2011 +0000
1667
+
1668
+ split deprecated paths_size to its own file
1669
+
1670
+ This is only needed for users on old MogileFS servers
1671
+
1672
+ commit b07078b19046b485d758ebe46eeadbecf3b61db1
1673
+ Author: Eric Wong <normalperson@yhbt.net>
1674
+ Date: Tue Nov 8 09:24:39 2011 +0000
1675
+
1676
+ http_* shorter error message for failures
1677
+
1678
+ Since we'll have multiple tries, try to limit errors.
1679
+
1680
+ commit d62ee4e837b8cbad55354ee3a9e92ee68decb90e
1681
+ Author: Eric Wong <normalperson@yhbt.net>
1682
+ Date: Tue Nov 8 09:16:58 2011 +0000
1683
+
1684
+ backend: revert 1.8 splat breakage
1685
+
1686
+ Oh well, not a big savings there anyways unlike the inner loop.
1687
+
1688
+ commit c16b4bcc3fe68de8ee3c615c5e2bfda80f900b9a
1689
+ Author: Eric Wong <normalperson@yhbt.net>
1690
+ Date: Tue Nov 8 09:11:19 2011 +0000
1691
+
1692
+ get_file_data: avoid exposing users to copy_stream invocation
1693
+
1694
+ We'll now accept an optional argument which can be passed to
1695
+ IO.copy_stream directly. This should make life easier on users
1696
+ so they won't be exposed to our internals to make efficient
1697
+ copies of large files.
1698
+
1699
+ commit 100124a50620271e9c7317c28efacdee3cc568e3
1700
+ Author: Eric Wong <normalperson@yhbt.net>
1701
+ Date: Tue Nov 8 08:50:11 2011 +0000
1702
+
1703
+ backend: small garbage reduction for url_decode
1704
+
1705
+ Obviously I could go farther, but not at the expense of
1706
+ readability. There are C libraries I could use, but MogileFS
1707
+ may move to a JSON-based protocol in the future anyways...
1708
+
1709
+ commit 9bdb7b8ca1016010277a8c5fcc96a97ee82b3558
1710
+ Author: Eric Wong <normalperson@yhbt.net>
1711
+ Date: Tue Nov 8 08:35:18 2011 +0000
1712
+
1713
+ size/list_keys improvements
1714
+
1715
+ We can use the file_info command to get things faster, now.
1716
+
1717
+ commit 145655bde64def9e6149137bbb577778f501d890
1718
+ Author: Eric Wong <normalperson@yhbt.net>
1719
+ Date: Tue Nov 8 07:55:25 2011 +0000
1720
+
1721
+ test/integration: skip dummy test with minitest
1722
+
1723
+ setup is expensive with integration test since we wait for the
1724
+ monitor
1725
+
1726
+ commit a3dcec56ef17d2c509b185d5ec97af773b508e27
1727
+ Author: Eric Wong <normalperson@yhbt.net>
1728
+ Date: Tue Nov 8 07:00:16 2011 +0000
1729
+
1730
+ tests: migrate tests for modifying classes to test_fresh
1731
+
1732
+ classids can get recycled, it seems.
1733
+
1734
+ commit efc339b43a272b92468629f7f833e1941052db2c
1735
+ Author: Eric Wong <normalperson@yhbt.net>
1736
+ Date: Tue Nov 8 05:15:10 2011 +0000
1737
+
1738
+ mog: "ls -l" shows full key name
1739
+
1740
+ commit 27afdca06806f0c77be3625055539ab3331f5b3e
1741
+ Author: Eric Wong <normalperson@yhbt.net>
1742
+ Date: Tue Nov 8 03:26:13 2011 +0000
1743
+
1744
+ Fix Ruby 1.8 compatibility
1745
+
1746
+ Our custom copy_stream needs to flush data like it does
1747
+ under 1.9. 1.8 also can't do a blocking open(2) on a FIFO
1748
+ in a native thread so we'll fork() instead.
1749
+
1750
+ commit 1a5b3487e5a38a4897a6461b3907cd6bde501e0c
1751
+ Author: Eric Wong <normalperson@yhbt.net>
1752
+ Date: Tue Nov 8 02:45:40 2011 +0000
1753
+
1754
+ add support for the file_debug command
1755
+
1756
+ This was added in MogileFS 2.45
1757
+
1758
+ commit fd5098ba0825d5ee603265a40e8c62b97191b7b6
1759
+ Author: Eric Wong <normalperson@yhbt.net>
1760
+ Date: Tue Nov 8 01:53:06 2011 +0000
1761
+
1762
+ add file_info command support and test
1763
+
1764
+ This is a command added in MogileFS 2.45
1765
+
1766
+ commit 088d88332564a5d09cf8a57695a53453ab59f686
1767
+ Author: Eric Wong <normalperson@yhbt.net>
1768
+ Date: Tue Nov 8 01:07:24 2011 +0000
1769
+
1770
+ tests: include test for opening FIFO paths
1771
+
1772
+ It's conceivable we'd need it.
1773
+
1774
+ commit e814b15f1386e2ea53bc018aaa92aecb147400ae
1775
+ Author: Eric Wong <normalperson@yhbt.net>
1776
+ Date: Tue Nov 8 00:52:30 2011 +0000
1777
+
1778
+ Disable retries when storing non-rewindable data
1779
+
1780
+ If a user tries to pipe something to us and we can't
1781
+ rewind on failure, propagate that error all the way
1782
+ up to avoid risking a corrupted upload.
1783
+
1784
+ commit 9bcff8f08dc084b880ef978c890a2706a1bbb304
1785
+ Author: Eric Wong <normalperson@yhbt.net>
1786
+ Date: Mon Nov 7 23:17:41 2011 +0000
1787
+
1788
+ http_reader: fix usage with pure sockets
1789
+
1790
+ We won't redefine the "new" singleton method since that
1791
+ conflicts with existing usage.
1792
+
1793
+ commit a603d3231683096085841ae6f0ba96eeb27171a3
1794
+ Author: Eric Wong <normalperson@yhbt.net>
1795
+ Date: Mon Nov 7 22:51:02 2011 +0000
1796
+
1797
+ avoid circular requires
1798
+
1799
+ Ruby 1.9.3 considers them harmful
1800
+
1801
+ commit fc76cbe64b3f5a3e641d32bff68af919df7b3d9e
1802
+ Author: Eric Wong <normalperson@yhbt.net>
1803
+ Date: Mon Nov 7 22:21:19 2011 +0000
1804
+
1805
+ cleanup unused variable warnings
1806
+
1807
+ commit 6aed1bd0229cf31a3aeb9c08d86ae851c8d538c6
1808
+ Author: Eric Wong <normalperson@yhbt.net>
1809
+ Date: Mon Nov 7 09:43:37 2011 +0000
1810
+
1811
+ fix return value for chunked Util::StoreContent users
1812
+
1813
+ Using unknown sizes with StoreContent is now supported
1814
+ (but you're probably better off using a pipe or just
1815
+ and object that acts like an IO)
1816
+
1817
+ commit a919e84b911511ed641b3edcf7b77687abc07f44
1818
+ Author: Eric Wong <normalperson@yhbt.net>
1819
+ Date: Mon Nov 7 09:36:59 2011 +0000
1820
+
1821
+ http_file: remove unnecessary check
1822
+
1823
+ There's only one place where we close the socket
1824
+
1825
+ commit ee85cf3816c795bf193e644f97da5274edbdf9c7
1826
+ Author: Eric Wong <normalperson@yhbt.net>
1827
+ Date: Mon Nov 7 09:33:12 2011 +0000
1828
+
1829
+ store_file works on IO#read-like methods, too
1830
+
1831
+ The readpartial is not in the Rack spec for rack.input
1832
+ objects, but something like IO#read is.
1833
+
1834
+ commit 61f9e531398aeaf617d038bea4494c143ee8b5af
1835
+ Author: Eric Wong <normalperson@yhbt.net>
1836
+ Date: Mon Nov 7 09:27:16 2011 +0000
1837
+
1838
+ flesh out pipe streaming + chunk for uploads
1839
+
1840
+ Of course the backend server needs to support chunking,
1841
+ but the latest Perlbal does.
1842
+
1843
+ commit 4f927415dc2a8e8dcaeda510d351192e3cc88747
1844
+ Author: Eric Wong <normalperson@yhbt.net>
1845
+ Date: Mon Nov 7 08:44:55 2011 +0000
1846
+
1847
+ tests: more tests for admin stuff
1848
+
1849
+ We'll need to setup a fresh MogileFS instance for some tests.
1850
+
1851
+ commit 5a4650a07f394268884a8dad58fac42f9a9288c5
1852
+ Author: Eric Wong <normalperson@yhbt.net>
1853
+ Date: Mon Nov 7 07:37:56 2011 +0000
1854
+
1855
+ tests: more + improved integration tests
1856
+
1857
+ We'll also be testing some admin commands in there.
1858
+
1859
+ commit c4e2b81f2493f0a0013ba03c11b74a61f3ca56f6
1860
+ Author: Eric Wong <normalperson@yhbt.net>
1861
+ Date: Mon Nov 7 05:32:51 2011 +0000
1862
+
1863
+ admin: allow changing replpolicy instead of just mindevcount
1864
+
1865
+ This retains backwards compatibility and users of MogileFS 2.x
1866
+ to change replpolicy along with mindevcount.
1867
+
1868
+ commit e3cbb44e8ef085421e2e001ba1382259242ce793
1869
+ Author: Eric Wong <normalperson@yhbt.net>
1870
+ Date: Sun Nov 6 08:10:36 2011 +0000
1871
+
1872
+ admin: update rdoc for deleting a domain
1873
+
1874
+ commit 60243808b59cb0bad8721a59970a46ddd74e68e0
1875
+ Author: Eric Wong <normalperson@yhbt.net>
1876
+ Date: Sun Nov 6 07:47:32 2011 +0000
1877
+
1878
+ delete returns true on success
1879
+
1880
+ Not some random hash from the parser.
1881
+
1882
+ commit bbe2702bb95a8fd11c1b8fb87f758a946876f58e
1883
+ Author: Eric Wong <normalperson@yhbt.net>
1884
+ Date: Sun Nov 6 07:46:38 2011 +0000
1885
+
1886
+ admin: get_domains includes replpolicy
1887
+
1888
+ We'll need to evaluate dropping support for older MogileFS.
1889
+ They probably didn't have replpolicy back in the day.
1890
+
1891
+ commit 347c41d307f85b1264fbf1c06fff9e5c8cb2e091
1892
+ Author: Eric Wong <normalperson@yhbt.net>
1893
+ Date: Sun Nov 6 04:39:08 2011 +0000
1894
+
1895
+ tests: integration tests for mogtool --bigfile
1896
+
1897
+ We need to test deprecated behavior to not break
1898
+ expectations for large, archived files in the future.
1899
+
1900
+ commit c66266416da2e05889ed93997f2c8a7cba216c56
1901
+ Author: Eric Wong <normalperson@yhbt.net>
1902
+ Date: Sun Nov 6 04:38:21 2011 +0000
1903
+
1904
+ bigfile: fix retry on rebalanced keys
1905
+
1906
+ commit 5f5e9071e51134b2028c1b2f99655be66debc2a4
1907
+ Author: Eric Wong <normalperson@yhbt.net>
1908
+ Date: Sun Nov 6 04:38:05 2011 +0000
1909
+
1910
+ Manifest: update
1911
+
1912
+ commit fec183631eee46ce3f00605142c6dfb122797e27
1913
+ Author: Eric Wong <normalperson@yhbt.net>
1914
+ Date: Sat Nov 5 12:33:53 2011 +0000
1915
+
1916
+ return file size properly when storing file
1917
+
1918
+ commit f54e49512910f2958141a51cb685009ed39b2906
1919
+ Author: Eric Wong <normalperson@yhbt.net>
1920
+ Date: Sat Nov 5 03:06:00 2011 +0000
1921
+
1922
+ support chunked uploads via PUT
1923
+
1924
+ This can be useful for streaming to a backend
1925
+ (this feature needs tests)
1926
+
1927
+ commit 283050fc283868f79796f05901bd9149713ae282
1928
+ Author: Eric Wong <normalperson@yhbt.net>
1929
+ Date: Sat Nov 5 02:34:35 2011 +0000
1930
+
1931
+ redo IO.copy_stream usage
1932
+
1933
+ Avoid deepening stack depth and make it easier to migrate
1934
+ fully to 1.9 in the future (dropping 1.8 support).
1935
+
1936
+ commit f057a82730d252c509f8c590430dbf4507d17601
1937
+ Author: Eric Wong <normalperson@yhbt.net>
1938
+ Date: Sat Nov 5 02:11:03 2011 +0000
1939
+
1940
+ backend: require CRLF on every line we parse
1941
+
1942
+ Otherwise IO#gets and MogileFS::Socket#timed_gets could
1943
+ return a truncated response before EOF and we would never
1944
+ know the response was truncated.
1945
+
1946
+ commit 972bad366ae58ec726329a45cbf908e16e1889df
1947
+ Author: Eric Wong <normalperson@yhbt.net>
1948
+ Date: Sat Nov 5 02:02:18 2011 +0000
1949
+
1950
+ make EmptyPathError more descriptive
1951
+
1952
+ commit d6b2624ed1f4502d499dad93ee44a716b5c56f08
1953
+ Author: Eric Wong <normalperson@yhbt.net>
1954
+ Date: Sat Nov 5 01:59:27 2011 +0000
1955
+
1956
+ rename httpfile => http_file
1957
+
1958
+ Should be easier to read this way
1959
+
1960
+ commit 37c6ee5d64d2cbdc739b4f4afcf55b3762234392
1961
+ Author: Eric Wong <normalperson@yhbt.net>
1962
+ Date: Sat Nov 5 01:54:14 2011 +0000
1963
+
1964
+ refactor httpfile and remove layering violation
1965
+
1966
+ Splitting calls to backend.create_open + create_close between
1967
+ files is also extremely confusing and error-prone.
1968
+
1969
+ Hopefully nobody actually depends on some attributes
1970
+ we've removed.
1971
+
1972
+ commit 8fefb8c07fdb69eb80c5aefbb0cdd74388cf908f
1973
+ Author: Eric Wong <normalperson@yhbt.net>
1974
+ Date: Fri Nov 4 23:50:17 2011 +0000
1975
+
1976
+ new HTTPReader implementation replaces the http_read_sock method
1977
+
1978
+ This is cleaner and replaces redundant code where we would retry
1979
+ paths. MogileFS::MogileFS#size now raises on error instead of
1980
+ returning nil.
1981
+
1982
+ commit afe10667b8deeb60e3f70d2ddc7a20ae7e0bc072
1983
+ Author: Eric Wong <normalperson@yhbt.net>
1984
+ Date: Fri Nov 4 02:15:15 2011 +0000
1985
+
1986
+ remove the network module
1987
+
1988
+ It's only used internally by the deprecated bigfile
1989
+ implementation, and we don't even need it for that.
1990
+
1991
+ commit 8a6680f0209bce12d56ae2ee2613448783f3d55a
1992
+ Author: Eric Wong <normalperson@yhbt.net>
1993
+ Date: Thu Nov 3 00:18:38 2011 +0000
1994
+
1995
+ doc: tag files containing internal implementation details
1996
+
1997
+ We don't want our users to rely on them
1998
+
1999
+ commit 1c78c6d067b27ccd763bd2732f57771261e047f3
2000
+ Author: Eric Wong <normalperson@yhbt.net>
2001
+ Date: Thu Nov 3 00:06:08 2011 +0000
2002
+
2003
+ bigfile: documentation update
2004
+
2005
+ commit 7f8687c9496317a5ffd0da9f4489d59ff8376899
2006
+ Author: Eric Wong <normalperson@yhbt.net>
2007
+ Date: Wed Nov 2 23:21:54 2011 +0000
2008
+
2009
+ util: remove Socket.mogilefs_init method
2010
+
2011
+ It's no longer used anywhere
2012
+
2013
+ commit 93242dbc664409e8bd78f021ba7b527f340fa1d7
2014
+ Author: Eric Wong <normalperson@yhbt.net>
2015
+ Date: Wed Nov 2 23:20:58 2011 +0000
2016
+
2017
+ remove sysrwloop for copy_stream
2018
+
2019
+ We're trying to use as much as we can from Ruby 1.9
2020
+
2021
+ commit c5bb0bffe17e7fa924fcca2f5dc85271ac466cea
2022
+ Author: Eric Wong <normalperson@yhbt.net>
2023
+ Date: Wed Nov 2 23:20:38 2011 +0000
2024
+
2025
+ test/kgio: disable of MOGILEFS_CLIENT_PURE is set
2026
+
2027
+ commit 77b927de0c7c0f0e5e96691f2c9099e307c3e1f3
2028
+ Author: Eric Wong <normalperson@yhbt.net>
2029
+ Date: Wed Nov 2 23:00:28 2011 +0000
2030
+
2031
+ mog: remove sysrwloop dependency for "tee"
2032
+
2033
+ We can do this in a way that's compatible with IO.copy_stream
2034
+
2035
+ commit 100fcbe4b368cd6510e65af5b773ab9d70ef42d6
2036
+ Author: Eric Wong <normalperson@yhbt.net>
2037
+ Date: Wed Nov 2 22:59:12 2011 +0000
2038
+
2039
+ mogilefs: don't pass class argument if it's "default"
2040
+
2041
+ mogilefsd may not like that
2042
+
2043
+ commit 443d7bdf4c1fb3b950cd05ffb475aef12d50c4b6
2044
+ Author: Eric Wong <normalperson@yhbt.net>
2045
+ Date: Wed Nov 2 22:33:01 2011 +0000
2046
+
2047
+ bigfile: make parse_info public and require arg
2048
+
2049
+ commit 909a2ae12d11593d59fccf30b7c2143cc9f441ab
2050
+ Author: Eric Wong <normalperson@yhbt.net>
2051
+ Date: Wed Nov 2 20:36:47 2011 +0000
2052
+
2053
+ bigfile: better factor this for use with IO.copy_stream
2054
+
2055
+ syswrloop and it's filter arg is going away, but we're
2056
+ stuck supporting bigfiles in read-only mode for eternity.
2057
+
2058
+ commit 46355ddfecb4e210b4dd3b6f91dde330e8d509ff
2059
+ Author: Eric Wong <normalperson@yhbt.net>
2060
+ Date: Wed Nov 2 02:40:03 2011 +0000
2061
+
2062
+ remove the rest of the Socket monkeypatches
2063
+
2064
+ No more mucking with existing Ruby classes \o/
2065
+
2066
+ commit af2d9c971cee5a6896fa3da44adff72d5f2ae44a
2067
+ Author: Eric Wong <normalperson@yhbt.net>
2068
+ Date: Wed Nov 2 02:14:46 2011 +0000
2069
+
2070
+ util: remove syswrite_full method
2071
+
2072
+ It's no longer used
2073
+
2074
+ commit 4b8cc437c502e5fda86ac5935baf69ec5a585e74
2075
+ Author: Eric Wong <normalperson@yhbt.net>
2076
+ Date: Wed Nov 2 02:06:19 2011 +0000
2077
+
2078
+ make http_read_sock and friends use new socket API
2079
+
2080
+ This will need further refactoring
2081
+
2082
+ commit ec29cbf28b2fa3a0155462f8ee927265f9fc3d94
2083
+ Author: Eric Wong <normalperson@yhbt.net>
2084
+ Date: Tue Nov 1 23:38:31 2011 +0000
2085
+
2086
+ use IO.copy_stream if available for making uploads with HTTPFile
2087
+
2088
+ commit 60a29ca15a1d90cb7ef011719111e3d6d5691614
2089
+ Author: Eric Wong <normalperson@yhbt.net>
2090
+ Date: Tue Nov 1 23:30:41 2011 +0000
2091
+
2092
+ httpfile: remove silly syswrite_full usage
2093
+
2094
+ Since Sockets default to IO#sync=true, IO#write is
2095
+ just like syswrite_full and there's no reason to
2096
+ continue using it.
2097
+
2098
+ commit 0bffe57f784b40dc355c2eca82d1d7a8cab09093
2099
+ Author: Eric Wong <normalperson@yhbt.net>
2100
+ Date: Tue Nov 1 20:08:25 2011 +0000
2101
+
2102
+ backend: rely on Array#shuffle instead sort_by { rand }
2103
+
2104
+ This is easier-to-read and more correct. This is not available
2105
+ in 1.8.6, but we already broke 1.8.6 compatibility with
2106
+ String#bytesize.
2107
+
2108
+ commit 6897db699255ce1fbd31ffb304db357351f5509a
2109
+ Author: Eric Wong <normalperson@yhbt.net>
2110
+ Date: Mon Oct 31 23:45:25 2011 +0000
2111
+
2112
+ wire up new socket class to backend
2113
+
2114
+ This should allow us to swap in kgio more easily.
2115
+
2116
+ commit 7b50489a1bca82ccb0b2e374f3d4f95bb651be5a
2117
+ Author: Eric Wong <normalperson@yhbt.net>
2118
+ Date: Fri Oct 21 08:03:58 2011 +0000
2119
+
2120
+ introduce MogileFS::Socket class
2121
+
2122
+ More work towards _not_ monkey-patching core classes.
2123
+
2124
+ commit d367d4c5645c946505d39c57b4f619a5c3123a10
2125
+ Author: Eric Wong <normalperson@yhbt.net>
2126
+ Date: Sat Oct 22 02:47:43 2011 +0000
2127
+
2128
+ test_backend: remove TempServer usage
2129
+
2130
+ This needs to be less implementation detail-oriented
2131
+
2132
+ commit c35ea4f30221e18fa5d504a444a40f611e21c291
2133
+ Author: Eric Wong <normalperson@yhbt.net>
2134
+ Date: Sat Oct 22 01:41:09 2011 +0000
2135
+
2136
+ httpfile: remove comment to NFSFile
2137
+
2138
+ NFS support is gone
2139
+
2140
+ commit 095967f8a960ec1720ea6aaa2dbed1063ba74ba8
2141
+ Author: Eric Wong <normalperson@yhbt.net>
2142
+ Date: Sat Oct 22 01:39:43 2011 +0000
2143
+
2144
+ README.txt: shorten bogomips.org URLs
2145
+
2146
+ bogomips.org went on a URL diet earlier this year.
2147
+
2148
+ commit 582463d9826b8b07d01846d8fdcf2beba45df1f9
2149
+ Author: Eric Wong <normalperson@yhbt.net>
2150
+ Date: Thu Oct 20 09:16:51 2011 +0000
2151
+
2152
+ util: small ivar reduction
2153
+
2154
+ commit 0d7f4e94223bb7413b98f39ac03ddc2970f2bbb3
2155
+ Author: Eric Wong <normalperson@yhbt.net>
2156
+ Date: Thu Oct 20 09:03:23 2011 +0000
2157
+
2158
+ remove Socket#mogilefs_peername
2159
+
2160
+ One tiny step in removing core class changes.
2161
+
2162
+ commit bd4e832d294635594c2af4da7a6b05fb884b2ce2
2163
+ Author: Eric Wong <normalperson@yhbt.net>
2164
+ Date: Thu Oct 20 06:35:38 2011 +0000
2165
+
2166
+ tests: do not assume "." is in $LOAD_PATH anymore
2167
+
2168
+ Ruby 1.9.2+ removes "." from $LOAD_PATH
2169
+
2170
+ commit 7e72f6a063703ff065588fa869c3dbad29829e56
2171
+ Author: Eric Wong <normalperson@yhbt.net>
2172
+ Date: Wed Jan 12 18:08:18 2011 -0800
2173
+
2174
+ mogilefs-client 2.2.0
2175
+
2176
+ = 2.2.0
2177
+ * internal cleanups (no public API breakage)
2178
+ * refactor backend socket/connection handling for reliability
2179
+
2180
+ There'll probably be more aggressive cleanups/refactoring in
2181
+ future releases if I have time.
2182
+
2183
+ commit 60c22ca86f8fcea8b51c90d5cb759cc2f29cac59
2184
+ Author: Eric Wong <normalperson@yhbt.net>
2185
+ Date: Wed Jan 12 17:49:32 2011 -0800
2186
+
2187
+ refactor backend socket/connection handling
2188
+
2189
+ We now take steps to ensure the socket we wrote to is always the same as
2190
+ the socket we'll read from. And if a read ever fails we'll close the
2191
+ socket to avoid having responses. We've also switched from Socket#send
2192
+ to IO#write as IO#write guarantees write-in-full behavior as long as the
2193
+ socket is alive (MogileFS queries are small)
2194
+
2195
+ The public MogileFS::Backend#shutdown method is now thread-safe,
2196
+ too.
2197
+
2198
+ commit 79718dd2b5d7fa05974388d409dec44a298ebefe
2199
+ Author: Eric Wong <normalperson@yhbt.net>
2200
+ Date: Fri Feb 19 15:50:19 2010 -0800
2201
+
2202
+ bump VERSION to 3.0.0pre
2203
+
2204
+ The 3.x.x series will probably be incompatible with 2.x.x...
2205
+
2206
+ commit 3f714b9b60879e4e8ce9ed43c62ea9339a09ffe5
2207
+ Author: Eric Wong <normalperson@yhbt.net>
2208
+ Date: Fri Feb 19 15:47:40 2010 -0800
2209
+
2210
+ remove support for TCP_CORK
2211
+
2212
+ It's needless optimization on a LAN (most places where MogileFS
2213
+ is deployed) and the extra method calls in Ruby seem to force
2214
+ more overhead in to the application. So stop doing it.
2215
+
2216
+ commit da9f66a8c1cd76de75bf35a441d27492a29a9bf2
2217
+ Author: Eric Wong <normalperson@yhbt.net>
2218
+ Date: Fri Feb 19 15:45:46 2010 -0800
2219
+
2220
+ avoid unnecessary IO#sync = true
2221
+
2222
+ Sockets have sync=true by default, and there's no need for it
2223
+ when reading files
2224
+
2225
+ commit 5a9a0fb45eb191262b4b09975ebf502438272b27
2226
+ Author: Eric Wong <normalperson@yhbt.net>
2227
+ Date: Fri Nov 20 14:38:33 2009 -0800
2228
+
2229
+ set encoding: binary for all files
2230
+
2231
+ We won't trust Ruby 1.9 String weirdness since data storage
2232
+ is locale-agnostic
2233
+
2234
+ commit b34465591ba83034985dc4be5fa3516ae059f408
2235
+ Author: Eric Wong <normalperson@yhbt.net>
2236
+ Date: Fri Jun 26 11:40:37 2009 -0700
2237
+
2238
+ backend: cleaner newline handling of error strings
2239
+
2240
+ IO#gets respects "$/" which may be altered outside of our
2241
+ control. So force gets to use "\n" which will also match "\r\n"
2242
+ (in case the mogilefs protocol changes subtly in the future).
2243
+ There's also no point in exposing the trailing "\r\n" from the
2244
+ network protocol to our users.
2245
+
2246
+ commit 19ba6f2602ffc5e54fc91e22d28f6231290c15bc
2247
+ Author: Eric Wong <normalperson@yhbt.net>
2248
+ Date: Fri Jun 26 11:12:14 2009 -0700
2249
+
2250
+ GNUmakefile: spaces for decls to avoid confusing make
2251
+
2252
+ Otherwise it could be confused as belonging to the
2253
+ task defined above the declarations.
2254
+
2255
+ commit 3299ed2412a2b27d88e04ce7c40416371507f8ec
2256
+ Author: Eric Wong <normalperson@yhbt.net>
2257
+ Date: Sat Apr 11 19:54:47 2009 -0700
2258
+
2259
+ mogilefs-client 2.1.0
2260
+
2261
+ commit 127799e5ba632d2d4cc0ac4c1a48cdf0143eb75f
2262
+ Author: Eric Wong <normalperson@yhbt.net>
2263
+ Date: Sat Apr 11 19:52:36 2009 -0700
2264
+
2265
+ GNUmakefile: better logging/output control
2266
+
2267
+ Running "make V=1" displays test results verbosely.
2268
+
2269
+ commit ba24d98b90b17ca59e9d274b7f5925e237418b4a
2270
+ Author: Eric Wong <normalperson@yhbt.net>
2271
+ Date: Fri Apr 10 18:09:43 2009 -0700
2272
+
2273
+ Ensure store_{content,file} always returns size
2274
+
2275
+ It's useful to know the size of the file we're storing.
2276
+
2277
+ commit 33ce9880cff9eaf8b7ad7558357cd0fcaed8144a
2278
+ Author: Eric Wong <normalperson@yhbt.net>
2279
+ Date: Wed Apr 1 16:03:39 2009 -0700
2280
+
2281
+ mog: small cleanup
2282
+
2283
+ Tempfiles already have their own finalizer and we
2284
+ ensure they're closed, too.
2285
+
2286
+ commit 539f39680436dfebe6de9e5c8b905428af438468
2287
+ Author: Eric Wong <normalperson@yhbt.net>
2288
+ Date: Fri Mar 27 14:18:53 2009 -0700
2289
+
2290
+ mysql: filter out URLs for down/dead hosts/devices
2291
+
2292
+ Clients won't be able to make use of them if they're down or
2293
+ dead. We trust the MogileFS metadata in MySQL to be synced
2294
+ correctly with the actual device/host states.
2295
+
2296
+ commit 4610f9a59b22993785689f292ab23d309a5ce048
2297
+ Author: Eric Wong <normalperson@yhbt.net>
2298
+ Date: Wed Mar 25 00:27:24 2009 -0700
2299
+
2300
+ README: add links to the repo.or.cz mirror
2301
+
2302
+ These have been mirrored to there forever, but
2303
+ never got linked correctly.
2304
+
2305
+ commit 20963ad8c801701208f2496ba62fd4c57bcc97e0
2306
+ Author: Eric Wong <normalperson@yhbt.net>
2307
+ Date: Tue Mar 24 23:07:51 2009 -0700
2308
+
2309
+ verify_uris: use write_nonblock instead of syswrite
2310
+
2311
+ This really shouldn't make a difference since the smallest
2312
+ buffer size for a socket I've seen is 4096 and MogileFS
2313
+ URIs cannot get that long.
2314
+
2315
+ commit 40e82ab559dee657a5884c77a46e85613856c9d8
2316
+ Author: Eric Wong <normalperson@yhbt.net>
2317
+ Date: Tue Mar 24 23:02:14 2009 -0700
2318
+
2319
+ Add get_uris API method
2320
+
2321
+ This is just like get_paths, but integrates better into Ruby
2322
+ applications that use the parsed-out URI to do operations
2323
+ directly on the URIs.
2324
+
2325
+ commit 65f9a224dfda3ac8b0ee9290b456d23ece32a053
2326
+ Author: Eric Wong <normalperson@yhbt.net>
2327
+ Date: Tue Mar 24 22:34:14 2009 -0700
2328
+
2329
+ Extra checking for full_timeout in sysread_full
2330
+
2331
+ full_timeout could be set if timeout is set. Don't
2332
+ croak on a NilClass error if we screw it up. Also,
2333
+ correctly detect readiness when checking the return
2334
+ value of IO.select.
2335
+
2336
+ commit 76076d42db5cf16317823131f47570c8f80e22a1
2337
+ Author: Eric Wong <normalperson@yhbt.net>
2338
+ Date: Tue Mar 24 22:16:07 2009 -0700
2339
+
2340
+ README: add a note about emailing me
2341
+
2342
+ Yes, I'm a doof when it comes to using web pages.
2343
+
2344
+ commit fdd00effb846e77807751562c11d78b4240dd93d
2345
+ Author: Eric Wong <normalperson@yhbt.net>
2346
+ Date: Tue Mar 24 22:09:08 2009 -0700
2347
+
2348
+ Really remove all NFS support
2349
+
2350
+ This cleans up some of the internal HTTP handling code a bit,
2351
+ too; and does a better job of closing sockets than it did
2352
+ previously.
2353
+
2354
+ commit f0ed5cb6ec6851a367175a93398e813e2d62667f
2355
+ Author: Eric Wong <normalperson@yhbt.net>
2356
+ Date: Tue Mar 24 20:16:37 2009 -0700
2357
+
2358
+ Compact get_paths output so we don't have nils
2359
+
2360
+ I'm not sure if mogilefsd ever returned broken output for this,
2361
+ but just in case we compact the output so users don't have to
2362
+ worry about them.
2363
+
2364
+ commit b7880146d13c8ed837ffa92102f1a907dd0d21ee
2365
+ Author: Eric Wong <normalperson@yhbt.net>
2366
+ Date: Tue Mar 24 20:08:08 2009 -0700
2367
+
2368
+ Close socket we create before raising exceptions
2369
+
2370
+ This can potentially fix some file descriptor leaks (but there
2371
+ may not be any leaks because of GC which can mysteriously close
2372
+ file descriptors as I've discovered).
2373
+
2374
+ Better safe than sorry...
2375
+
2376
+ commit 9ae7c33f4465d3d44b5ae31d9f454f89e5748fb3
2377
+ Author: Eric Wong <normalperson@yhbt.net>
2378
+ Date: Tue Mar 24 19:43:48 2009 -0700
2379
+
2380
+ Unify internal HTTP GET/HEAD methods
2381
+
2382
+ This takes advantage of the (ugly) new mogilefs_size Socket
2383
+ attribute to avoid duplicating Content-Length parsing code.
2384
+
2385
+ I really wish Net::HTTP in Ruby was actually usable...
2386
+
2387
+ commit c07be896889f13235bda1bd32983261e73513a70
2388
+ Author: Eric Wong <normalperson@yhbt.net>
2389
+ Date: Tue Mar 24 18:56:50 2009 -0700
2390
+
2391
+ Respect timeout when doing get_file_data
2392
+
2393
+ This adds a sysread_full utility method with configurable
2394
+ timeouts. Individual reads can be timed out as well as
2395
+ the entire sysread_full call.
2396
+
2397
+ commit a69925d4b4671fe65e54e34a009e17fb1fa47700
2398
+ Author: godfat <godfat@godfat.org>
2399
+ Date: Wed Mar 11 16:19:43 2009 +0800
2400
+
2401
+ call IO.select([sock]) if sock is not ready.
2402
+
2403
+ commit cb0eb2a46cae96a602d0c78033a3e1154e165986
2404
+ Author: Eric Wong <normalperson@yhbt.net>
2405
+ Date: Tue Mar 24 17:14:18 2009 -0700
2406
+
2407
+ MySQL interface returns integer length and devcount
2408
+
2409
+ This is an API change.
2410
+
2411
+ Additionally ensure the normal MogileFS::MogileFS API
2412
+ doesn't break here.
2413
+
2414
+ commit b9722d72614a0198b7db6257981d71b9d62b43f4
2415
+ Author: Eric Wong <normalperson@yhbt.net>
2416
+ Date: Wed Mar 18 03:40:17 2009 -0700
2417
+
2418
+ test_mogilefs: fix race conditions
2419
+
2420
+ commit 878e3c83595c1ad44e648904987c4d917baa06b2
2421
+ Author: Eric Wong <normalperson@yhbt.net>
2422
+ Date: Wed Mar 18 03:39:35 2009 -0700
2423
+
2424
+ tests: retry random ports correctly
2425
+
2426
+ Oops
2427
+
2428
+ commit 1959ed17631f7a2b044f609ba147845cdf1307bb
2429
+ Author: Eric Wong <normalperson@yhbt.net>
2430
+ Date: Mon Mar 2 13:54:52 2009 -0800
2431
+
2432
+ mogilefs-client 2.0.2
2433
+
2434
+ commit 41d028768fbeb49a31542cb0eaa6ec396d3baf5a
2435
+ Author: Eric Wong <normalperson@yhbt.net>
2436
+ Date: Mon Mar 2 13:28:31 2009 -0800
2437
+
2438
+ Tasks to enforce permissions are set correctly
2439
+
2440
+ commit 72ed3d1243037d5c625be6b23fb0098250f5f6dd
2441
+ Author: Eric Wong <normalperson@yhbt.net>
2442
+ Date: Thu Feb 26 14:21:14 2009 -0800
2443
+
2444
+ Update Manifest.txt with setup.rb
2445
+
2446
+ commit 918d58b902614ad2c6eede674382e25557276481
2447
+ Author: Eric Wong <normalperson@yhbt.net>
2448
+ Date: Thu Feb 26 14:14:40 2009 -0800
2449
+
2450
+ backend: don't blindly add "Error" to exception class names
2451
+
2452
+ We were getting classes with "SizeVerifyErrorError", which
2453
+ just looks stupid. This was because MogileFS puts
2454
+ the "_error" suffix into error messages it sends us and
2455
+ we were blindly appending Error to the end. Avoid doing
2456
+ that, even if it's somewhat inconsistent since "ErrorError"
2457
+ looks really stupid IMNSHO...
2458
+
2459
+ Note: this is a minor API change
2460
+
2461
+ commit d6eff4e796bbb2c135f6e15d7c8580e16c6cbb5f
2462
+ Author: Eric Wong <normalperson@yhbt.net>
2463
+ Date: Thu Feb 26 13:55:56 2009 -0800
2464
+
2465
+ backend: raise exceptions with the error message
2466
+
2467
+ Getting to lasterrstr from several levels up the stack is
2468
+ annoying otherwise...
2469
+
2470
+ commit bc7e7cd06f1e2b4eacbf5b7595af6938c2332adc
2471
+ Author: Eric Wong <normalperson@yhbt.net>
2472
+ Date: Wed Feb 25 00:22:48 2009 -0800
2473
+
2474
+ README.txt: update documentation URL
2475
+
2476
+ The old one has become invalid.
2477
+
2478
+ commit cfdf498adee9ec21420728abd59ce01c181b0d5f
2479
+ Author: Eric Wong <normalperson@yhbt.net>
2480
+ Date: Wed Feb 25 00:10:33 2009 -0800
2481
+
2482
+ mogilefs-client 2.0.1
2483
+
2484
+ commit 8d6ced74c2538cfa3836ec14668abf02e712507e
2485
+ Author: Eric Wong <normalperson@yhbt.net>
2486
+ Date: Tue Feb 24 23:42:14 2009 -0800
2487
+
2488
+ network: make verify_uris method more robust
2489
+
2490
+ IO.select can raise errors (IOError most notably) on bad
2491
+ descriptors. Ensure we can detect and delete them from our
2492
+ waiting sets if IO.select raises something.
2493
+
2494
+ commit 6cf59a3231bd53a1bfe91df31e900e4349a4746e
2495
+ Author: Jacob Burkhart <jacob@brontes3d.com>
2496
+ Date: Mon Feb 23 13:01:55 2009 -0500
2497
+
2498
+ Allow 'store_content' to be used with a streamable object
2499
+
2500
+ New way to call 'store_content' with a
2501
+ MogileFS::Util::StoreContent allows you to roll your own method
2502
+ of streaming data to mogile on an upload (instead of using a
2503
+ string or file)
2504
+
2505
+ [ew: this still requires a known content length beforehand]
2506
+ [ew: applied with --whitespace=strip, rewritten subject,
2507
+ 80-column wrapping]
2508
+
2509
+ Signed-off-by: Eric Wong <normalperson@yhbt.net>
2510
+
2511
+ commit aaf794c5455b17ab8f0a15ccd81f7496bcc0b8d5
2512
+ Author: Jacob Burkhart <jacob@brontes3d.com>
2513
+ Date: Mon Feb 23 12:22:00 2009 -0500
2514
+
2515
+ fix tests
2516
+
2517
+ Signed-off-by: Eric Wong <normalperson@yhbt.net>
2518
+
2519
+ commit d49d49152ddace8258b9aeb3930e209edb3cef68
2520
+ Author: Eric Wong <normalperson@yhbt.net>
2521
+ Date: Mon Feb 23 11:49:08 2009 -0800
2522
+
2523
+ Add setup.rb
2524
+
2525
+ I'm tired of the overhead of loading rubygems
2526
+
2527
+ commit ee21c71551d220a0fc89111dbd5b13a71d54ff3f
2528
+ Author: Eric Wong <normalperson@yhbt.net>
2529
+ Date: Sat Feb 7 20:18:31 2009 -0800
2530
+
2531
+ test: workaround some concurrency issues in tests
2532
+
2533
+ At least processes are easier to debug than threads...
2534
+
2535
+ commit 6f103af69968237f1dbd33fac40975dd4db8c701
2536
+ Author: Eric Wong <normalperson@yhbt.net>
2537
+ Date: Sat Feb 7 19:52:11 2009 -0800
2538
+
2539
+ backend: Allow TEST_DEAD_PORT to be set
2540
+
2541
+ When running tests in parallel, releasing a listener when
2542
+ killing the process that owns it can cause another test to grab
2543
+ it. Allow setting TEST_DEAD_PORT in env to avoid this race
2544
+ condition.
2545
+
2546
+ commit 75115f3296d31e5e9f10645f216d3d7c1e9024d1
2547
+ Author: Eric Wong <normalperson@yhbt.net>
2548
+ Date: Sat Feb 7 18:56:14 2009 -0800
2549
+
2550
+ test_util: cleanup forked servers
2551
+
2552
+ Not sure why the atexit statement doesn't kick in in test/setup;
2553
+ but I'm too lazy to look into it at the moment. Also remove a
2554
+ "require 'tempfile'" while we're at it.
2555
+
2556
+ commit b384c7dc1f0ce052f518fe1b94a4bf5588328359
2557
+ Author: Eric Wong <normalperson@yhbt.net>
2558
+ Date: Sat Feb 7 18:50:47 2009 -0800
2559
+
2560
+ Rewrite tests to not use threads (1.9)
2561
+
2562
+ Kernel threads in 1.9 are excruciatingly painful to debug
2563
+ (much more so than userspace threads in 1.8). I'm not in
2564
+ a masochistic days...
2565
+
2566
+ commit cdc5fc07a34bd17f2162dcb171928f49af55ead7
2567
+ Author: Eric Wong <normalperson@yhbt.net>
2568
+ Date: Sat Feb 7 17:22:19 2009 -0800
2569
+
2570
+ Force binary encoding on all objects
2571
+
2572
+ File and StringIO objects need to be opened in binary mode,
2573
+ otherwise they take the default encoding format. Thankfully,
2574
+ Sockets and Tempfile objects seem to be binary by default as of
2575
+ 1.9.1; but it really is a mess to have to deal with FS
2576
+ abstractions that try to deal with encoding crap behind your
2577
+ back...
2578
+
2579
+ commit ffc4ec4baaae5020c98dc545c6c6ade0336a3311
2580
+ Author: Eric Wong <normalperson@yhbt.net>
2581
+ Date: Sat Feb 7 16:38:41 2009 -0800
2582
+
2583
+ test_backend: 1.9 compatibility fixes
2584
+
2585
+ Not sure how hosts was ever allowed to be a String, but sort_by
2586
+ does not work on Strings in 1.9 so this was a bug before, too.
2587
+ Also I'm not sure how the accept_nr variable gets shared between
2588
+ threads; better just to use sockets for here...
2589
+
2590
+ commit fb8874fbf719264064bf9761476de4c16d7f8c89
2591
+ Author: Eric Wong <normalperson@yhbt.net>
2592
+ Date: Sat Feb 7 16:36:28 2009 -0800
2593
+
2594
+ backend: Ruby 1.9-compatible url_escape
2595
+
2596
+ Use String#ord instead of String#[] when it is available.
2597
+
2598
+ commit db52b53fad2f6ef88cc6105d7b1280a4f4293edf
2599
+ Author: Eric Wong <normalperson@yhbt.net>
2600
+ Date: Sat Feb 7 12:17:13 2009 -0800
2601
+
2602
+ test/setup: don't blindly undefine default_test
2603
+
2604
+ the "default_test" method may not exist in the version
2605
+ of Ruby we're using (1.9.1p0)
2606
+
2607
+ commit 78f7849963ca41d315e029a895b8b919e4981b1b
2608
+ Author: Eric Wong <normalperson@yhbt.net>
2609
+ Date: Sat Feb 7 12:13:22 2009 -0800
2610
+
2611
+ MogileFS::Pool#use always returns nil
2612
+
2613
+ We don't want to return the used object back to the caller.
2614
+ Noticed during 1.9.1 compatibility testing.
2615
+
2616
+ commit 7b1e64a80c7554ad30f68e977993742a8d14350d
2617
+ Author: Eric Wong <normalperson@yhbt.net>
2618
+ Date: Mon Feb 2 20:23:02 2009 -0800
2619
+
2620
+ mogilefs-client 2.0.0
2621
+
2622
+ commit 72bf21fe39651881d06c77042e299a0aaaeb4bba
2623
+ Author: Eric Wong <normalperson@yhbt.net>
2624
+ Date: Mon Feb 2 17:05:39 2009 -0800
2625
+
2626
+ backend: cleanup and simplify slightly
2627
+
2628
+ Again, eliminate unnecessary return statements and
2629
+ simplify hash generation.
2630
+
2631
+ commit a24cd5c8e29161c5dbf707f65ec0d64b2a75dc1b
2632
+ Author: Eric Wong <normalperson@yhbt.net>
2633
+ Date: Wed Jan 28 16:02:26 2009 -0800
2634
+
2635
+ MogileFS::Mysql: refresh devices/domains on cache miss
2636
+
2637
+ Domains and devices may be added/changed at any time,
2638
+ so there's a risk of cache misses in case something
2639
+ got added before our cache refresh interval. Always
2640
+ retry if we have a cache miss.
2641
+
2642
+ commit e482442c5c46ab67d5db5206e8dea66d2e5c4dc9
2643
+ Author: Eric Wong <normalperson@yhbt.net>
2644
+ Date: Fri Jan 23 19:25:56 2009 -0800
2645
+
2646
+ GNUmakefile: add flog/flay targets
2647
+
2648
+ Some static code analysis tools by Seattle.rb folks
2649
+
2650
+ I'm avoiding sticking these tasks in the Rakefile since they're
2651
+ too slow (and I like GNU Make more than I like Ruby *g*)
2652
+
2653
+ commit 929184e57d73ba29b6a97c52c22e3281a0810d2f
2654
+ Author: Eric Wong <normalperson@yhbt.net>
2655
+ Date: Fri Jan 23 18:45:39 2009 -0800
2656
+
2657
+ Remove unnecessary statements and temp variables
2658
+
2659
+ Last I checked, the trailing "return" is not optimized away by
2660
+ MRI 1.8. Additionally, remove some useless temporary variables.
2661
+
2662
+ commit 69dd8a992379439f20e1aa0ab564f18285b3a515
2663
+ Author: Eric Wong <normalperson@yhbt.net>
2664
+ Date: Fri Jan 23 18:24:02 2009 -0800
2665
+
2666
+ documentation updates
2667
+
2668
+ commit b4ca5228ec024bdcbb98fcdb883738941fe0d1fd
2669
+ Author: Eric Wong <normalperson@yhbt.net>
2670
+ Date: Fri Jan 23 17:44:26 2009 -0800
2671
+
2672
+ allow using the default class to store files
2673
+
2674
+ Don't specify an empty class (e.g. "class="), instead
2675
+ just omit the parameter entirely if it is nil.
2676
+
2677
+ commit b294f73c1686be08b9a2509c74ad4fc28151050a
2678
+ Author: Eric Wong <normalperson@yhbt.net>
2679
+ Date: Tue Jan 6 02:48:47 2009 -0800
2680
+
2681
+ Enable test for db_backend
2682
+
2683
+ Due to the unfortunate name, it never got run.
2684
+ Oops!
2685
+
2686
+ commit 6d7fc201b307aca412a7a6129d5f2583cfdfade5
2687
+ Author: Eric Wong <normalperson@yhbt.net>
2688
+ Date: Tue Jan 6 02:36:01 2009 -0800
2689
+
2690
+ Manifest: add test/test_util.rb
2691
+
2692
+ commit d3f4b01e9b15dc8f7dd71973d07380b98caa6d2e
2693
+ Author: Eric Wong <normalperson@yhbt.net>
2694
+ Date: Tue Jan 6 02:32:23 2009 -0800
2695
+
2696
+ test_backend: shorten timeout test
2697
+
2698
+ Since the test server sleeps forever, there's no harm in having
2699
+ a shorter timeout so our tests run faster (over twice as fast
2700
+ with `make -j').
2701
+
2702
+ commit 805d5cc33362cf92196b4ec1edf33b01b5c02746
2703
+ Author: Eric Wong <normalperson@yhbt.net>
2704
+ Date: Tue Jan 6 02:30:56 2009 -0800
2705
+
2706
+ test_backend: race condition caused occasional test failures
2707
+
2708
+ Oops, there may be more of these...
2709
+
2710
+ commit db750a6eeff7010cedb31c99f8aeeb439541c9ef
2711
+ Author: Eric Wong <normalperson@yhbt.net>
2712
+ Date: Tue Jan 6 02:05:58 2009 -0800
2713
+
2714
+ syswrite_full: allow an optional timeout to be specified
2715
+
2716
+ This makes it easier to use when making requests.
2717
+
2718
+ commit e18ff3c8c759c88aca53163e2f5b15c5436280ec
2719
+ Author: Eric Wong <normalperson@yhbt.net>
2720
+ Date: Tue Jan 6 02:05:57 2009 -0800
2721
+
2722
+ Use syswrite_full where we previously used syswrite
2723
+
2724
+ This is a bit safer since we'll retry on short writes
2725
+ instead of silently failing...
2726
+
2727
+ commit 8f33fa98734a3b2d44c81e63ff77851887d736d3
2728
+ Author: Eric Wong <normalperson@yhbt.net>
2729
+ Date: Tue Jan 6 02:05:56 2009 -0800
2730
+
2731
+ Use syswrite_full when PUT-ing smaller files
2732
+
2733
+ Socket#send will return with short writes and IO.write just
2734
+ sucks, so expose our existing syswrite_full routine to the
2735
+ public.
2736
+
2737
+ While we're at it, add a unit test to try to ensure that we're
2738
+ correctly doing syswrite_full here. System-specific behavior
2739
+ dealing with buffer sizes is not easy to test...
2740
+
2741
+ commit 27092c172aaf828740f85d45a410a18c346db8f8
2742
+ Author: Eric Wong <normalperson@yhbt.net>
2743
+ Date: Mon Jan 5 19:05:38 2009 -0800
2744
+
2745
+ Mysql: fix get_paths
2746
+
2747
+ Oops, this method needs to bypass transformations we
2748
+ in the normal MogileFS::MogileFS code path.
2749
+
2750
+ commit 14da9651b3227bea0dcc01eaf09364d8d1ebc274
2751
+ Author: Eric Wong <normalperson@yhbt.net>
2752
+ Date: Mon Jan 5 13:40:31 2009 -0800
2753
+
2754
+ Remove all trailing whitespace
2755
+
2756
+ This got noticed when I imported this project into another
2757
+ project vendor/ subdirectory (no, I've decided to not use
2758
+ submodules for that project).
2759
+
2760
+ commit fdefa0ac60dda5d96abf279d5a4df4521325d838
2761
+ Author: Eric Wong <normalperson@yhbt.net>
2762
+ Date: Mon Jan 5 13:26:57 2009 -0800
2763
+
2764
+ Update Manifest, include Make target for generating it
2765
+
2766
+ commit 12d8afa7539915ca448e362ee6edc39e49d9a07b
2767
+ Author: Eric Wong <normalperson@yhbt.net>
2768
+ Date: Mon Jan 5 13:20:24 2009 -0800
2769
+
2770
+ mog: fix fallback to MOG_HOSTS env if MOG_TRACKERS is empty
2771
+
2772
+ commit c0450c6888c6234bfbd324672ddcedb33901d21e
2773
+ Author: Eric Wong <normalperson@yhbt.net>
2774
+ Date: Tue Dec 30 18:38:48 2008 -0800
2775
+
2776
+ Don't let size(key) get tricked by non-200 OK responses
2777
+
2778
+ We never checked the HTTP status code when making the HEAD
2779
+ request. All this HTTP stuff should probably be moved to
2780
+ HTTPFile
2781
+
2782
+ commit dda46f246f93ac31512582767c402957fb2fbaa1
2783
+ Author: Eric Wong <normalperson@yhbt.net>
2784
+ Date: Tue Dec 30 18:03:06 2008 -0800
2785
+
2786
+ Cleanup and document http_get_sock
2787
+
2788
+ Correctly fail when we get non-200 HTTP responses and retry on
2789
+ the next URI.
2790
+
2791
+ commit e07b59855a61a4053810f72e5a9f2000d54964e5
2792
+ Author: Eric Wong <normalperson@yhbt.net>
2793
+ Date: Tue Dec 30 14:39:31 2008 -0800
2794
+
2795
+ new MogileFS::Network module, move verify_uris there
2796
+
2797
+ This will include networks and optimal URI selection support
2798
+
2799
+ commit dfa94f76c60e54376372e181a25c080c611bb323
2800
+ Author: Eric Wong <normalperson@yhbt.net>
2801
+ Date: Mon Dec 29 16:50:54 2008 -0800
2802
+
2803
+ History: note that 2.0.0 is still a work-in-progress
2804
+
2805
+ commit 91276ae9131c405050b1f31af0680475043a9e0b
2806
+ Author: Eric Wong <normalperson@yhbt.net>
2807
+ Date: Wed Dec 24 16:53:22 2008 -0800
2808
+
2809
+ sysrwloop: make sure descriptors are flushed and synced
2810
+
2811
+ "io.sync = true" does not appear to flush file pointers in MRI
2812
+ 1.8, we need to explicitly flush it first.
2813
+
2814
+ commit 0d3607a455141a428b105b39e3be1c263cc48e8a
2815
+ Author: Eric Wong <normalperson@yhbt.net>
2816
+ Date: Wed Dec 24 16:47:45 2008 -0800
2817
+
2818
+ GNUmakefile: allow "make test/test*.rb" to work
2819
+
2820
+ Also, remove the PID uniqueness thing, it's easy enough
2821
+ to just create a new directory if we want to run tests
2822
+ in parallel... Additionally, add ignores in for the
2823
+ log files.
2824
+
2825
+ commit ab87a8472ee42785364ab1ee84ea00e06cb592d8
2826
+ Author: Eric Wong <normalperson@yhbt.net>
2827
+ Date: Wed Dec 24 03:22:57 2008 -0800
2828
+
2829
+ test_mogilefs: fix broken test case that was timing out
2830
+
2831
+ And incorrectly nested assertions in the tests made
2832
+ sure the errors were never caught, too.
2833
+
2834
+ Now the unit tests run in about 3s for me
2835
+
2836
+ Damn Ruby conventions and 2-space indents...
2837
+
2838
+ commit c07ee9fdcc00e5af18993b3cda9d17f91351d09e
2839
+ Author: Eric Wong <normalperson@yhbt.net>
2840
+ Date: Wed Dec 24 03:09:50 2008 -0800
2841
+
2842
+ GNUmakefile: remove dependency on bash3
2843
+
2844
+ -o pipefail was only useful when I was experimenting
2845
+ with unbuffering output to the terminal. I've decided
2846
+ to just forgo terminal spewing in the tests, and the
2847
+ lone use of cat(1) is highly unlikely to fail..
2848
+
2849
+ commit 28aab06e493363b143476d44ec3d39e8403cd28e
2850
+ Author: Eric Wong <normalperson@yhbt.net>
2851
+ Date: Wed Dec 24 00:13:48 2008 -0800
2852
+
2853
+ test_mogilefs: allow NR_CHUNKS to be overridable via env
2854
+
2855
+ This way tests can run quicker by default but we
2856
+ can still use larger ones to test things.
2857
+
2858
+ commit e6ff1c564a5420d7ea855fc7312caaa9e280f921
2859
+ Author: Eric Wong <normalperson@yhbt.net>
2860
+ Date: Tue Dec 23 20:44:27 2008 -0800
2861
+
2862
+ shorten MogileFS__DbBackend test name
2863
+
2864
+ commit a326d26e281e440375925970912c6a9e6b07b7a8
2865
+ Author: Eric Wong <normalperson@yhbt.net>
2866
+ Date: Tue Dec 23 20:27:08 2008 -0800
2867
+
2868
+ HTTPFile: handle multiple device failover correctly
2869
+
2870
+ Previously, when we got multiple destinations to
2871
+ upload to and one of them failed, we failed to
2872
+ correctly retry the next destination. This will
2873
+ set the correct devid and URL.
2874
+
2875
+ commit 5ba07ec56c5c8f89ef9390f649f12fdfcf611b49
2876
+ Author: Eric Wong <normalperson@yhbt.net>
2877
+ Date: Tue Dec 23 19:09:40 2008 -0800
2878
+
2879
+ MogileFS::MogileFS: simplify get_paths
2880
+
2881
+ We dropped NFS support, so this can be simplified further.
2882
+
2883
+ commit d4a3c3a63b20ea6a863e70c026c7b08d1c70d52b
2884
+ Author: Eric Wong <normalperson@yhbt.net>
2885
+ Date: Tue Dec 23 18:22:15 2008 -0800
2886
+
2887
+ Add GNU Makefile for running tests in a parallel
2888
+
2889
+ I'm getting a 40% decreas with my current set of tests
2890
+ on my dual core machine.
2891
+
2892
+ commit 8ddfde0f598d0f7ddebf2f81293475e16125f538
2893
+ Author: Eric Wong <normalperson@yhbt.net>
2894
+ Date: Tue Dec 23 18:14:03 2008 -0800
2895
+
2896
+ test/setup: remove rubygems and zentest assertions
2897
+
2898
+ I don't think we ever used the assertions from ZenTest
2899
+ and rubygems increases load time on my box.
2900
+
2901
+ commit cd821f79aff72385412c4338a2883d5cad3a8d76
2902
+ Author: Eric Wong <normalperson@yhbt.net>
2903
+ Date: Tue Dec 23 17:06:13 2008 -0800
2904
+
2905
+ test_client: make this work outside of "rake test"
2906
+
2907
+ I prefer running my tests directly from the command-line
2908
+ ruby -I lib/ test/test_client.rb
2909
+
2910
+ commit a784189571101463dd4291207f989147e98d81f4
2911
+ Author: Eric Wong <normalperson@yhbt.net>
2912
+ Date: Tue Dec 23 16:56:49 2008 -0800
2913
+
2914
+ backend: remove pointless connect_to method
2915
+
2916
+ We used to mock it for the tests, but we use real sockets now.
2917
+
2918
+ commit f806d7c3adbdc5062666df0336f5da6d0dd72dab
2919
+ Author: Eric Wong <normalperson@yhbt.net>
2920
+ Date: Tue Dec 23 16:56:07 2008 -0800
2921
+
2922
+ test/setup: EACCES, not EACCES_S_
2923
+
2924
+ Also, fix up a warning about @thr being uninitialized
2925
+ that showed up in testing.
2926
+
2927
+ commit 9d2810194a64427b90a4e226fbd0dfb16c9bc095
2928
+ Author: Eric Wong <normalperson@yhbt.net>
2929
+ Date: Tue Dec 23 16:45:48 2008 -0800
2930
+
2931
+ Make sure select(2) calls are IO.select
2932
+
2933
+ We don't mock `select' anywhere, and this makes us safer
2934
+ in case we're included in another module.
2935
+
2936
+ commit 819027c713930d8234abdc633344922382958bed
2937
+ Author: Eric Wong <normalperson@yhbt.net>
2938
+ Date: Tue Dec 23 16:43:29 2008 -0800
2939
+
2940
+ backend: remember to require 'thread' here
2941
+
2942
+ It was accidenally removed during the TCPSocket removal
2943
+
2944
+ commit a6cebdeeb3f89b8097abbe4a5fddd798e16c8758
2945
+ Author: Eric Wong <normalperson@yhbt.net>
2946
+ Date: Mon Dec 22 20:56:57 2008 -0800
2947
+
2948
+ test/setup: TempServer saner port acquiry
2949
+
2950
+ Originally I had a process-based port thing stolen from Mongrel
2951
+ (and subsequently screwed up). Just use a random port that's
2952
+ not in use right now. Additionlly, retry if we get EACCESS in
2953
+ case we're on a strange system where binding certain ports are
2954
+ not allowed.
2955
+
2956
+ commit dd2089b2646e77fef396e2e62ad313851bfbf04e
2957
+ Author: Eric Wong <normalperson@yhbt.net>
2958
+ Date: Mon Dec 22 20:44:45 2008 -0800
2959
+
2960
+ Remove NFS support
2961
+
2962
+ MogileFS 2.x upstream no longer supports it, and it's
2963
+ become a maintenance burden and NFS is a horrible thing
2964
+ anyways.
2965
+
2966
+ Attempting to use this with servers that support NFS will result
2967
+ in MogileFS::UnsupportedPathError being raised.
2968
+
2969
+ commit 8e44957300037c8bfd029fb21b665ceb98e7817a
2970
+ Author: Eric Wong <normalperson@yhbt.net>
2971
+ Date: Mon Dec 22 20:08:56 2008 -0800
2972
+
2973
+ HTTPFile: rename bigfile accessor to big_io
2974
+
2975
+ "bigfile" is used by the large file support, too.
2976
+ "big_io" also allows an IO object to be sent to us, as well
2977
+ (and not a pathname)
2978
+
2979
+ commit 16cfeeb035c0c0362e8f4fb1707f9006573defc1
2980
+ Author: Eric Wong <normalperson@yhbt.net>
2981
+ Date: Mon Dec 22 19:00:13 2008 -0800
2982
+
2983
+ MogileFS::HTTPFile: support TCP_CORK on Linux
2984
+
2985
+ Since we use TCP_NODELAY with all sockets, the bigfile code path
2986
+ here is less efficient because it sends the headers separately.
2987
+ So use TCP_CORK for this part of the code to avoid sending
2988
+ partial frames.
2989
+
2990
+ Additionally rewrite this to use send(2) which is more suitable
2991
+ for sockets.
2992
+
2993
+ Since we didn't have any previously, add a test for uploading
2994
+ large files.
2995
+
2996
+ commit 46b2c5ff196c9194abae8954c9efdc899b1f1ff8
2997
+ Author: Eric Wong <normalperson@yhbt.net>
2998
+ Date: Mon Dec 22 18:45:08 2008 -0800
2999
+
3000
+ Create all sockets with TCP_NODELAY
3001
+
3002
+ This should reduce latency. We send reasonably-sized
3003
+ chunks whenever sending large requests anyways, so
3004
+ throughput shouldn't be noticeably affected.
3005
+
3006
+ commit 4a5794447a682b8034b2381054df28bd6296c4ee
3007
+ Author: Eric Wong <normalperson@yhbt.net>
3008
+ Date: Mon Dec 22 18:28:27 2008 -0800
3009
+
3010
+ Replace TCPSocket + timeout code with Socket + IO.select
3011
+
3012
+ This removes the dependency on unsafe methods used in the
3013
+ Timeout class.
3014
+
3015
+ Charles makes some good points here:
3016
+ http://blog.headius.com/2008/02/rubys-threadraise-threadkill-timeoutrb.html
3017
+
3018
+ And even matz agrees:
3019
+ http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/294446
3020
+
3021
+ Of course, I strongly dislike any unnecessary use of threads,
3022
+ and implementations using native threads to do timeouts makes me
3023
+ even more uncomfortable.
3024
+
3025
+ commit b7ba273a043633c01d9ae8cda8ae9db4cc5dcf07
3026
+ Author: Eric Wong <normalperson@yhbt.net>
3027
+ Date: Mon Dec 22 17:37:02 2008 -0800
3028
+
3029
+ test: remove FakeSocket code
3030
+
3031
+ These tests forced us to use TCPSocket, which wasn't friendly to
3032
+ sockets created with Socket.new (for asynchronous connect(2)
3033
+ calls).
3034
+
3035
+ No changes to the core MogileFS components have been
3036
+ made. I want to verify the new TempServer implementation
3037
+ performs correctly with the current code.
3038
+
3039
+ commit df2af32f01bc995e9f311b51d3351ee042e23483
3040
+ Author: Eric Wong <normalperson@yhbt.net>
3041
+ Date: Thu Dec 18 20:52:24 2008 -0800
3042
+
3043
+ Allow MogileFS::MogileFS to use :db_backend => MogileFS::Mysql
3044
+
3045
+ This should complete the integration of the read-only Mysql
3046
+ backend into MogileFS::MogileFS.
3047
+
3048
+ commit bd42a70bb299e088b1c244c3ffe46695393521c5
3049
+ Author: Eric Wong <normalperson@yhbt.net>
3050
+ Date: Thu Dec 18 20:31:35 2008 -0800
3051
+
3052
+ MogileFS::Mysql: sleep() is MogileFS::Backend-compatible
3053
+
3054
+ Keep methods in the Mysql backend as compatible with the
3055
+ standard Backend as possible.
3056
+
3057
+ commit fa796bf60396430a3de4ce0409d7f1edf663856f
3058
+ Author: Eric Wong <normalperson@yhbt.net>
3059
+ Date: Thu Dec 18 20:19:15 2008 -0800
3060
+
3061
+ test: move mocks from test_mysql to test/setup
3062
+
3063
+ This allows us to reuse this code in another test
3064
+
3065
+ commit 1b2589208ef8765ab17af06be3e12164ab7b1492
3066
+ Author: Eric Wong <normalperson@yhbt.net>
3067
+ Date: Thu Dec 18 20:14:23 2008 -0800
3068
+
3069
+ test_mysql: remove unnecessary requires
3070
+
3071
+ Not sure how they got there, probably just some junk leftover
3072
+ from copy & pasting...
3073
+
3074
+ commit 0cdb20bfb76653a74d44c434e243029117a7a48d
3075
+ Author: Eric Wong <normalperson@yhbt.net>
3076
+ Date: Thu Dec 18 19:57:58 2008 -0800
3077
+
3078
+ MogileFS::Mysql: start making this a backend for MogileFS::MogileFS
3079
+
3080
+ This will allow us to avoid redundant code and modules,
3081
+ allowing existing applications to more easily use the
3082
+ direct MySQL interface as a drop-in replacement for
3083
+ read-only MogileFS::MogileFS applications.
3084
+
3085
+ commit 19e15f7b029b3c3c5e9eeed948a37e2316ed5975
3086
+ Author: Eric Wong <normalperson@yhbt.net>
3087
+ Date: Thu Dec 18 19:30:35 2008 -0800
3088
+
3089
+ MogileFS::Mysql: list_keys returns nil if nothing was found
3090
+
3091
+ This is to be compatible with MogileFS::MogileFS
3092
+
3093
+ commit 61e2ccc21b8d94087a11efced682461a63e49b09
3094
+ Author: Eric Wong <normalperson@yhbt.net>
3095
+ Date: Thu Dec 18 19:09:57 2008 -0800
3096
+
3097
+ Add some documentation and comments to new code
3098
+
3099
+ Otherwise I'll forget what I've been doing, too.
3100
+
3101
+ commit 37a0f630737d57ca42a8a8019b7c4351387459a9
3102
+ Author: Eric Wong <normalperson@yhbt.net>
3103
+ Date: Thu Dec 18 18:09:29 2008 -0800
3104
+
3105
+ MogileFS::Bigfile: remove Thread.abort_on_exception setting
3106
+
3107
+ This was leftover from testing. As it affects global
3108
+ application state behind the user's back, it should not
3109
+ be set here.
3110
+
3111
+ commit 8e271d4f2a29bf1935cc2b3ecfecd0f444b933ba
3112
+ Author: Eric Wong <normalperson@yhbt.net>
3113
+ Date: Thu Dec 18 17:53:48 2008 -0800
3114
+
3115
+ MogileFS::Mysql: read-only methods for MogileFS::MogileFS compat
3116
+
3117
+ These methods help allow MogileFS::Mysql objects to be used as a
3118
+ drop-in replacement for MogileFS::MogileFS in read-only
3119
+ situations.
3120
+
3121
+ commit 6f0a6159d8335cc6a08f118048f7c8175807c7c1
3122
+ Author: Eric Wong <normalperson@yhbt.net>
3123
+ Date: Thu Dec 18 17:24:46 2008 -0800
3124
+
3125
+ Add test for the Mysql interface
3126
+
3127
+ This doesn't require a Mysql server to be setup, limiting the
3128
+ effectiveness of it a bit, but should be enough to ensure
3129
+ refactorings don't break things.
3130
+
3131
+ commit daab68d1da073648098be96fbb468315cec36b48
3132
+ Author: Eric Wong <normalperson@yhbt.net>
3133
+ Date: Thu Dec 18 15:22:13 2008 -0800
3134
+
3135
+ MogileFS::Mysql: small cleanups to make testing easier
3136
+
3137
+ The get_paths change should be a small optimization, too.
3138
+
3139
+ commit 0255844ed2495aa7fa7366fb439176174413472a
3140
+ Author: Eric Wong <normalperson@yhbt.net>
3141
+ Date: Fri Dec 12 11:38:29 2008 -0800
3142
+
3143
+ MogileFS::Mysql: more flexible Mysql driver handling
3144
+
3145
+ Remove hard dependency on mysqlplus driver. We can detect
3146
+ whether the driver supports the c_async_query method or not.
3147
+ This also allows more flexible connection setup and management.
3148
+
3149
+ commit cb85f82e640762aea81b7ad2b8aec1efed0aa572
3150
+ Author: Eric Wong <normalperson@yhbt.net>
3151
+ Date: Tue Dec 2 16:33:05 2008 -0800
3152
+
3153
+ initial bigfile read support
3154
+
3155
+ Needs more tests, but it seems to work...
3156
+
3157
+ I seem to have discovered a bug in mogtool which causes it to
3158
+ generate incorrect MD5 checksums when the --gzip flag is used
3159
+ (and --gzip actually just does zlib deflate, not something that
3160
+ gzip(1) can actually decrypt).
3161
+
3162
+ So right now MD5 checksums are only verified on non-zlib-deflated
3163
+ files.
3164
+
3165
+ commit 83dfe9644cbbc83b0f3bd05537874eecc8ad0a8c
3166
+ Author: Eric Wong <normalperson@yhbt.net>
3167
+ Date: Wed Dec 3 14:47:22 2008 -0800
3168
+
3169
+ MogileFS::Util: avoid calling syswrite on zero-length buffer
3170
+
3171
+ This bug can't have a noticeable effect since writing a
3172
+ zero-length buffer would result in nothing being written, but
3173
+ this is more correct and can save a method dispatch and syscall.
3174
+
3175
+ commit 02393ab1f3517436f1b8adee3c97e2b71a1f41f4
3176
+ Author: Eric Wong <normalperson@yhbt.net>
3177
+ Date: Fri Oct 31 16:40:45 2008 -0700
3178
+
3179
+ sysrwloop: safely handle non-blocking sockets
3180
+
3181
+ Non-blocking sockets can bail out with EAGAIN (and any socket
3182
+ also with EINTR), so retry if we get those calls.
3183
+
3184
+ commit 4f57bb12f080de0ba7314319b1f1434e0c2e40a8
3185
+ Author: Eric Wong <normalperson@yhbt.net>
3186
+ Date: Fri Oct 31 14:54:14 2008 -0700
3187
+
3188
+ mog: fix 'tee' command so that it actually outputs to stdout
3189
+
3190
+ However, if the stdout stream is pointing to /dev/null, then
3191
+ just avoid writing anything to save the function call overhead
3192
+ entirely.
3193
+
3194
+ commit 746c453e030190392a0743e8b935a38eab899a7f
3195
+ Author: Eric Wong <normalperson@yhbt.net>
3196
+ Date: Thu Sep 18 14:00:59 2008 -0700
3197
+
3198
+ Allow sysrwloop to take an optional filter Proc
3199
+
3200
+ This will let us run our copies through MD5 and
3201
+ decompression inline.
3202
+
3203
+ commit b36b892c735407bba34502e71e95d7481fc3ad79
3204
+ Author: Eric Wong <normalperson@yhbt.net>
3205
+ Date: Wed Sep 17 18:34:15 2008 -0700
3206
+
3207
+ Move http_get_sock into its own function
3208
+
3209
+ We'll be reusing it in the big file module
3210
+
3211
+ commit 03fe01aa98e00ccf12f58e5bdb69d742e054fa36
3212
+ Author: Eric Wong <normalperson@yhbt.net>
3213
+ Date: Fri Oct 24 14:25:34 2008 -0700
3214
+
3215
+ mysql: documentation for public functions
3216
+
3217
+ commit 363775c63c03f45175136bc514eba3ea143a5f09
3218
+ Author: Eric Wong <normalperson@yhbt.net>
3219
+ Date: Fri Oct 24 14:15:11 2008 -0700
3220
+
3221
+ add .gitignore
3222
+
3223
+ commit 1c9463b944ac44277598955a2ce331679afff5cd
3224
+ Author: Eric Wong <normalperson@yhbt.net>
3225
+ Date: Fri Oct 24 14:13:58 2008 -0700
3226
+
3227
+ History: add note about MogileFS::Mysql
3228
+
3229
+ commit 0bdf69f413f64cbf52a15540cf0441930bf81688
3230
+ Author: Eric Wong <normalperson@yhbt.net>
3231
+ Date: Fri Oct 24 14:13:06 2008 -0700
3232
+
3233
+ LICENSE: add Eric Wong to copyright
3234
+
3235
+ commit 5b073c6f5878a1a6b582ab007b6ffa237f6317bb
3236
+ Author: Eric Wong <normalperson@yhbt.net>
3237
+ Date: Fri Oct 24 14:12:54 2008 -0700
3238
+
3239
+ README: formatting changes, remove trailing whitespace
3240
+
3241
+ commit f6cbfa23e03c815b7957156a6f3e6c5e33c8ce2c
3242
+ Author: Eric Wong <normalperson@yhbt.net>
3243
+ Date: Fri Oct 24 14:11:15 2008 -0700
3244
+
3245
+ README: note that :root is only required for NFS
3246
+
3247
+ commit 97b29016c18b8bd1b5df7a3e218ba9a9d2a1b96c
3248
+ Author: Eric Wong <normalperson@yhbt.net>
3249
+ Date: Fri Oct 24 13:40:57 2008 -0700
3250
+
3251
+ README: add git repository links, update Warning section
3252
+
3253
+ commit 47ee90f6c2190f4754d445e75b5e16c766e4da56
3254
+ Author: Eric Wong <normalperson@yhbt.net>
3255
+ Date: Fri Oct 24 13:31:09 2008 -0700
3256
+
3257
+ mysql: allow specifying connect,read,write timeouts
3258
+
3259
+ The Mysql driver allows these timeouts to be specified,
3260
+ so allow the following parameters to be passed to the
3261
+ initializer:
3262
+
3263
+ :connect_timeout
3264
+ :read_timeout
3265
+ :write_timeout
3266
+
3267
+ These must be integer values (representing seconds)
3268
+ and will be passed straight through to the underlying
3269
+ Mysql driver (which will hopefully support sub-second
3270
+ timeouts at some point...).
3271
+
3272
+ All timeouts will default to 1 (second) here.
3273
+
3274
+ commit 6b94f724d090d352951f92fceda1b9cd47a997c7
3275
+ Author: Eric Wong <normalperson@yhbt.net>
3276
+ Date: Tue Oct 21 19:06:34 2008 -0700
3277
+
3278
+ Mysql: size() method returns an integer
3279
+
3280
+ Returning a string here does not make sense, and we
3281
+ should be consistent with the MogileFS::MogileFS
3282
+ interface.
3283
+
3284
+ commit 877338e485c614fc7539a47cab7ae2bf8597382d
3285
+ Author: Eric Wong <normalperson@yhbt.net>
3286
+ Date: Tue Oct 21 18:55:29 2008 -0700
3287
+
3288
+ MySQL: switch to async interface
3289
+
3290
+ This lets us use multiple green threads safely, but means
3291
+ we now require the async mysqlplus driver available here:
3292
+
3293
+ http://github.com/oldmoe/mysqlplus/tree/master
3294
+
3295
+ commit f0df7a9b9b73cb39d445400cf1869de021e516a9
3296
+ Author: Eric Wong <normalperson@yhbt.net>
3297
+ Date: Fri Oct 17 20:55:20 2008 -0700
3298
+
3299
+ MogileFS::Backend: timeout code allows retrying other backends
3300
+
3301
+ This allows other trackers to be used if the current
3302
+ one dies or croaks while we're connected. This also
3303
+ allows us to better handle spurious wakeups, if we get
3304
+ any...
3305
+
3306
+ commit fb3536089dc7f663458b90f311ab704cfb7b768f
3307
+ Author: Eric Wong <normalperson@yhbt.net>
3308
+ Date: Fri Oct 17 14:38:27 2008 -0700
3309
+
3310
+ Add MogileFS::Mysql class, allowing read-only access to slaves
3311
+
3312
+ This allows for full read redundancy if the master MySQL instance
3313
+ or trackers go down. This can potentially offer higher
3314
+ performance; too; as it eliminates trackers from the call
3315
+ path.
3316
+
3317
+ commit 39c131182f33c02eb2883e115a845f0d17062edd
3318
+ Author: Eric Wong <normalperson@yhbt.net>
3319
+ Date: Thu Oct 16 17:29:53 2008 -0700
3320
+
3321
+ Add verify_uris utility method
3322
+
3323
+ This lets us do client-side verification of URIs, taking load
3324
+ off mogilefsd processes and being more reliable (since it'll be
3325
+ us, the clients, talking to the backend storage nodes to
3326
+ retrieve/send data and not the mogilefsd processes).
3327
+
3328
+ commit f0601cab1c309bf9d213ac8b392f359f2ea87e1d
3329
+ Author: Eric Wong <normalperson@yhbt.net>
3330
+ Date: Wed Oct 15 21:06:30 2008 -0700
3331
+
3332
+ mog: try more verbose error handling
3333
+
3334
+ commit fb3d01d38c5b2b4a839ab0d1da97fe2c0ccc5b8c
3335
+ Author: Eric Wong <normalperson@yhbt.net>
3336
+ Date: Wed Oct 15 18:56:01 2008 -0700
3337
+
3338
+ Start working on v2.0.0 entry and notes
3339
+
3340
+ commit 2aa8badf3b7e1d664e137901ce6bd6b61e793ca6
3341
+ Author: Eric Wong <normalperson@yhbt.net>
3342
+ Date: Wed Oct 15 20:06:18 2008 -0700
3343
+
3344
+ Avoid double-close on bigfiles
3345
+
3346
+ This was leading to ugly "no_temp_file" errors that
3347
+ got converted to exceptions.
3348
+
3349
+ commit 2e9e8cc2c0ea08e090018891dd8538ec675c0825
3350
+ Author: Eric Wong <normalperson@yhbt.net>
3351
+ Date: Wed Oct 15 18:51:11 2008 -0700
3352
+
3353
+ Backend: use the consistent shutdown() method to close our socket
3354
+
3355
+ This always closes it and ignores any exceptions that may
3356
+ occur (since it's going away anyways). This also sets
3357
+ the instance variable to nil for easy checking.
3358
+
3359
+ commit a9566b561662aa0925eff49adad9813e5ffff179
3360
+ Author: Eric Wong <normalperson@yhbt.net>
3361
+ Date: Wed Oct 15 18:47:12 2008 -0700
3362
+
3363
+ list_keys trap exception in this method
3364
+
3365
+ commit 968cbe34ece986d4d0f072117cf5e278823dfae9
3366
+ Author: Eric Wong <normalperson@yhbt.net>
3367
+ Date: Wed Oct 15 18:34:32 2008 -0700
3368
+
3369
+ mog: retry on Backend::NoDevicesError
3370
+
3371
+ I seem to hit this quite often under heavy load...
3372
+
3373
+ commit a62053e547279b59fd2ba3bcbe0a84583ecf23b7
3374
+ Author: Eric Wong <normalperson@yhbt.net>
3375
+ Date: Wed Oct 15 18:06:40 2008 -0700
3376
+
3377
+ Replace the last of the ad-hoc RuntimeError exceptions
3378
+
3379
+ The ArgumentErrors happen at initialization time, so
3380
+ I'll keep those as-is
3381
+
3382
+ commit 20c337eb0c043e0033b794df93b51627f13b729e
3383
+ Author: Eric Wong <normalperson@yhbt.net>
3384
+ Date: Wed Oct 15 17:50:22 2008 -0700
3385
+
3386
+ mog: increase timeout for interactive use
3387
+
3388
+ The default 3 second timeout is too low sometimes on an
3389
+ overloaded system. Since this is intended for interactive
3390
+ use, be more patient...
3391
+
3392
+ commit c02257508fd7a8e8529b4b37634323fc1136fee9
3393
+ Author: Eric Wong <normalperson@yhbt.net>
3394
+ Date: Wed Oct 15 17:45:18 2008 -0700
3395
+
3396
+ Backend: convert socket/invalid response errors to exceptions
3397
+
3398
+ commit c22186b461c7f73f0a083dae3d40eebab09d7139
3399
+ Author: Eric Wong <normalperson@yhbt.net>
3400
+ Date: Wed Oct 15 17:27:57 2008 -0700
3401
+
3402
+ HTTPFile: use a standard set of exceptions here, too
3403
+
3404
+ Again, easier to trap under MogileFS::Error is better
3405
+
3406
+ commit 84c9d66d180aa392a8150b61236ee1577601158c
3407
+ Author: Eric Wong <normalperson@yhbt.net>
3408
+ Date: Wed Oct 15 16:46:53 2008 -0700
3409
+
3410
+ HTTPFile: remove scary message about this not working
3411
+
3412
+ It surely does work for me..
3413
+
3414
+ commit 2c09ff42b2e96f28dda283730bdb9deb68946843
3415
+ Author: Eric Wong <normalperson@yhbt.net>
3416
+ Date: Wed Oct 15 16:30:15 2008 -0700
3417
+
3418
+ Raise MogileFS::ReadOnly error for readonly instances
3419
+
3420
+ Also easier to trap and deal with
3421
+
3422
+ commit 0d4068e5e890aad959419ad932a162ab170868c5
3423
+ Author: Eric Wong <normalperson@yhbt.net>
3424
+ Date: Wed Oct 15 16:24:12 2008 -0700
3425
+
3426
+ Use exceptions for all errors sent to us from the backend
3427
+
3428
+ commit fb9f44979ee98b7d90c0501986e75d633ec555f0
3429
+ Author: Eric Wong <normalperson@yhbt.net>
3430
+ Date: Wed Oct 15 15:27:29 2008 -0700
3431
+
3432
+ Backend: automatically create exceptions based on errors we get
3433
+
3434
+ This allows us to raise exceptions based on the errors
3435
+ we get upstream can are easier to trap an deal with
3436
+ in applications
3437
+
3438
+ commit ccdf900ef999019a2a4b04eefb3ec34b4c0eae15
3439
+ Author: Eric Wong <normalperson@yhbt.net>
3440
+ Date: Wed Oct 15 14:35:13 2008 -0700
3441
+
3442
+ create MogileFS::Error class to base our other errors off of
3443
+
3444
+ This will allow users to trap MogileFS::Error to trap errors
3445
+ specific to our library.
3446
+
3447
+ commit 35644223ceba73228b8563aef43e75def3da2ecf
3448
+ Author: Eric Wong <normalperson@yhbt.net>
3449
+ Date: Tue Oct 7 13:43:29 2008 -0700
3450
+
3451
+ remove 'open-uri' dependency
3452
+
3453
+ The open-uri code path doesn't scale to large files at
3454
+ all, so there's no point in depending on it as the
3455
+ TCPSocket code path works just as well.
3456
+
3457
+ commit cbbf0f96d36922d237563bc71378902f0d342f36
3458
+ Author: Eric Wong <normalperson@yhbt.net>
3459
+ Date: Tue Oct 7 13:05:42 2008 -0700
3460
+
3461
+ MogileFS::MogileFS:: add paths_size() API call
3462
+
3463
+ This lets clients issue a single get_paths() call and
3464
+ to both retrieve paths and file sizes.
3465
+
3466
+ commit ffe803c5fe97890c0b44d78ffb5251e842d2cc13
3467
+ Author: Eric Wong <normalperson@yhbt.net>
3468
+ Date: Tue Oct 7 13:01:02 2008 -0700
3469
+
3470
+ Use TCPSocket instead of Net::HTTP for HEAD requests
3471
+
3472
+ Net::HTTP doesn't save us any lines of code here and it uses up
3473
+ unnecessary memory and allocations, slightly increasing latency.
3474
+
3475
+ Also, while we're at it, more gracefully handle size() failures
3476
+ if nodes are down.
3477
+
3478
+ commit 971b5ccb0708a4cc06772c5e7c2be379b3ff4d3d
3479
+ Author: Eric Wong <normalperson@yhbt.net>
3480
+ Date: Thu Oct 2 19:59:51 2008 -0700
3481
+
3482
+ Version 1.3.1
3483
+
3484
+ commit 53a15da3ce5f8bd3f00dcf30dac395423f6cb644
3485
+ Author: Eric Wong <normalperson@yhbt.net>
3486
+ Date: Thu Oct 2 19:56:56 2008 -0700
3487
+
3488
+ Remember to include MogileFS::Util in MogileFS::MogileFS
3489
+
3490
+ Tests passed, but certain applications based around this
3491
+ did not...
3492
+
3493
+ commit 242c6ff266959b581ff9bb44abbf897feae92444
3494
+ Author: Eric Wong <normalperson@yhbt.net>
3495
+ Date: Thu Sep 18 16:42:57 2008 -0700
3496
+
3497
+ Version 1.3.0
3498
+
3499
+ commit 29c83a1ffe5d28a3f5f71f3fa4c0683bd5d2eb5a
3500
+ Author: Eric Wong <normalperson@yhbt.net>
3501
+ Date: Thu Sep 18 16:39:56 2008 -0700
3502
+
3503
+ Update maintainer and release info
3504
+
3505
+ commit f10e8899a1cc969ed2e7afd0b0b0a211ba6b70de
3506
+ Author: Eric Wong <normalperson@yhbt.net>
3507
+ Date: Thu Sep 18 16:38:29 2008 -0700
3508
+
3509
+ Fix ZenTest dependency and make it a dev-only dep
3510
+
3511
+ commit 9c866e3c6a1115f5e16aaa6612790905f6cf6391
3512
+ Author: Eric Wong <normalperson@yhbt.net>
3513
+ Date: Thu Sep 18 16:29:59 2008 -0700
3514
+
3515
+ mog: add `test' command, currently only supports "test -e"
3516
+
3517
+ Eventually this will have more switches for testing
3518
+ various bigfile options.
3519
+
3520
+ commit 7f93c3f711785cc1215d17a9ab412998260745f0
3521
+ Author: Eric Wong <normalperson@yhbt.net>
3522
+ Date: Wed Sep 17 16:48:16 2008 -0700
3523
+
3524
+ mog: ensure the tempfile is killed at death
3525
+
3526
+ commit 71a440d04e6c9496062ed123708b71c051a22290
3527
+ Author: Eric Wong <normalperson@yhbt.net>
3528
+ Date: Thu Sep 11 18:59:45 2008 -0700
3529
+
3530
+ mog: handle SIGPIPE and SIGINT gracefully
3531
+
3532
+ SIGPIPE is very handy for scripting, and I hit SIGINT
3533
+ in the console pretty often, too; so don't spew to
3534
+ STDERR when we catch these signals.
3535
+
3536
+ commit c06411e24f7323688e9036db138caf307ad025f0
3537
+ Author: Eric Wong <normalperson@yhbt.net>
3538
+ Date: Mon Sep 8 17:36:23 2008 -0700
3539
+
3540
+ Add `mog' command-line tool as an example/frontend
3541
+
3542
+ This supports several UNIX-like subcommands:
3543
+
3544
+ cp FILE KEY - copy a file to a given key
3545
+
3546
+ cat KEY(s) - cat any number of keys to STDOUT
3547
+
3548
+ ls PREFIX - list keys matching PREFIX (not globbing)
3549
+
3550
+ rm KEY(s) - remove keys
3551
+
3552
+ mv FROMKEY TOKEY - rename a key
3553
+
3554
+ stat KEY(s) - show various information, including URLs and Size
3555
+
3556
+ tee KEY - read input from STDIN and write it to key
3557
+ (due to the limitations of HTTP servers
3558
+ and clients this is not streamed)
3559
+
3560
+ commit 6c8f2db31097998aaab21c05cab53b50bfc243c5
3561
+ Author: Eric Wong <normalperson@yhbt.net>
3562
+ Date: Thu Sep 4 18:53:14 2008 -0700
3563
+
3564
+ Lower the large-file threshold to 64K
3565
+
3566
+ Yes, I'm quite miserly when it comes to memory usage. Since the
3567
+ file is already on disk, just read it incrementally and stream
3568
+ it out to avoid having to deal with potential memory exhaustion
3569
+ issues on busy systems. There's also no benefit to slurping
3570
+ 256MB and anything above 64K leads to diminishing returns on
3571
+ most systems I've seen.
3572
+
3573
+ commit 673861cd6fcb8f563de9c6300252d5ff290adee1
3574
+ Author: Eric Wong <normalperson@yhbt.net>
3575
+ Date: Thu Sep 4 18:47:39 2008 -0700
3576
+
3577
+ mogilefs: only timeout on connect/header reading
3578
+
3579
+ Reading the rest of the body can take a long time for big files
3580
+ (we expect that for big blocks) and the timeout is stupid in
3581
+ that case.
3582
+
3583
+ commit 71c71da5df7f680bd7dbdf4c28c7da3c4ee3ed45
3584
+ Author: Eric Wong <normalperson@yhbt.net>
3585
+ Date: Mon Sep 8 17:29:17 2008 -0700
3586
+
3587
+ Allow get_file_data to accept a block for large files
3588
+
3589
+ This block will be passed the IO object for reading the file.
3590
+ This is to prevent the client from having to slurp an entire
3591
+ large file into memory all at once.
3592
+
3593
+ commit 99735076974cad8c5485b949179701f9d36b0699
3594
+ Author: Eric Wong <normalperson@yhbt.net>
3595
+ Date: Mon Sep 8 17:26:02 2008 -0700
3596
+
3597
+ Add MogileFS::Util for a sysrwloop() function
3598
+
3599
+ Enable it in the HTTPFile PUT code. We'll also use
3600
+ it for get_file_data when handling large files next.
3601
+
3602
+ commit efaeed97b61f59d493ed8942d711fc705e0e9fb2
3603
+ Author: Eric Wong <normalperson@yhbt.net>
3604
+ Date: Wed Sep 3 20:40:43 2008 -0700
3605
+
3606
+ Fix each_keys loop termination condition
3607
+
3608
+ The underlying list_keys function can return nil,
3609
+ so don't try to run .empty? on nil.
3610
+
3611
+ commit 651eeeacec1e9c0d59652c3a0d90ee83ddea46a8
3612
+ Author: Eric Wong <normalperson@yhbt.net>
3613
+ Date: Wed Sep 3 15:36:25 2008 -0700
3614
+
3615
+ HTTPFile: use IO.sysread for better performance
3616
+
3617
+ IO.sysread is more GC-friendly than IO.read because it does not
3618
+ have to allocate additional userspace buffers. Userspace read
3619
+ buffering is redundant nowadays with modern kernels (especially
3620
+ in Linux 2.6 and almost always a performance hit).
3621
+
3622
+ Additionally, use an underdocumented feature of both IO.sysread
3623
+ and IO.read that allows it to reuse the existing buffer.
3624
+ Further reducing garbage collector overhead for large files.
3625
+
3626
+ commit 4c1f1924271dc828bb5eb22461b2b02390b11f6f
3627
+ Author: Eric Wong <normalperson@yhbt.net>
3628
+ Date: Wed Sep 3 15:24:13 2008 -0700
3629
+
3630
+ HTTPFile: more reasonable chunk size for big files
3631
+
3632
+ 16M for a chunk is a huge amount of memory to slurp at once.
3633
+ 64K is much more reasonable and chunk sizes above this lead
3634
+ to dimishing returns in performance.
3635
+
3636
+ commit 5939e0855ff1e84021cbfd4a72a6b6d9827a25df
3637
+ Author: Eric Wong <normalperson@yhbt.net>
3638
+ Date: Wed Sep 3 15:12:36 2008 -0700
3639
+
3640
+ Apply error handling patch from Matthew Willson
3641
+
3642
+ Ref: http://rubyforge.org/tracker/index.php?func=detail&aid=15987&group_id=1513&atid=5923
3643
+ > Submitted By: Matthew Willson
3644
+ > Summary: Errors on subsequent requests after client times out
3645
+ > waiting for a response from tracker on a previous request (it
3646
+ > leaves the socket open)
3647
+ >
3648
+ > Detailed description
3649
+ >
3650
+ > The summary says it all really.
3651
+ >
3652
+ > Once in a while, the tracker will time out responding to, say, a
3653
+ > create_open or a create_close command, raising one of these:
3654
+ >
3655
+ > MogileFS::UnreadableSocketError: 146.101.142.132:7001 never became readable
3656
+ > from /usr/lib/ruby/gems/1.8/gems/mogilefs-client-1.2.1/lib/mogilefs/backend.rb:158:in `readable?'
3657
+ > from /usr/lib/ruby/gems/1.8/gems/mogilefs-client-1.2.1/lib/mogilefs/backend.rb:122:in `do_request'
3658
+ > from /usr/lib/ruby/1.8/thread.rb:135:in `synchronize'
3659
+ > from /usr/lib/ruby/gems/1.8/gems/mogilefs-client-1.2.1/lib/mogilefs/backend.rb:108:in `do_request'
3660
+ > from /usr/lib/ruby/gems/1.8/gems/mogilefs-client-1.2.1/lib/mogilefs/backend.rb:16:in `create_open'
3661
+ > from /usr/lib/ruby/gems/1.8/gems/mogilefs-client-1.2.1/lib/mogilefs/mogilefs.rb:108:in `new_file'
3662
+ > from /usr/lib/ruby/gems/1.8/gems/mogilefs-client-1.2.1/lib/mogilefs/mogilefs.rb:163:in `store_content'
3663
+ > from ./script/../config/../config/../app/models/mogile_backed.rb:59:in `store_in_mogile'
3664
+ > from ./script/../config/../config/../app/models/image.rb:139:in `data'
3665
+ > from ./script/../config/../config/../app/models/mogile_backed.rb:59:in `store_in_mogile'
3666
+ > from (irb):15
3667
+ > from (irb):15
3668
+ >
3669
+ > The problem is that, if you code catches this error and carries
3670
+ > on using the same client object for a subsequent request, the
3671
+ > 'OK' response which we timed out waiting for, will eventually
3672
+ > arrive, and sit in the socket's read buffer. It will then be
3673
+ > read and treated as the response to some unconnected subsequent
3674
+ > command, resulting in a variety of seemingly intermittent and
3675
+ > confusing errors.
3676
+ >
3677
+ > I've attached a patch for this against 1.2.1, which simply
3678
+ > closes the socket whenever it times out waiting for a reponse.
3679
+ > The next request will then open a new socket as required.
3680
+ >
3681
+ > Also included a quick fix/improvement to error reporting in one
3682
+ > case, which helped me to track the problem down.
3683
+
3684
+ commit b0b702171b01e391d9fe29eb4374d971c2f5bc83
3685
+ Author: Eric Wong <normalperson@yhbt.net>
3686
+ Date: Wed Sep 3 15:05:56 2008 -0700
3687
+
3688
+ merge large file patch from Andy La Foe
3689
+
3690
+ Merging involved "Content-length" => "Content-Length"
3691
+ capitalizing 'L' as per p4#3627 (aka SVN r433)
3692
+
3693
+ Ref: http://rubyforge.org/tracker/index.php?func=detail&aid=13764&group_id=1513&atid=5923
3694
+ > Submitted By: Andy Lo-A-Foe (arloafoe)
3695
+ > Category: mogilefs-client
3696
+ > Summary:
3697
+ > Store very large files (> 256M) without running out of memory in store_file
3698
+ >
3699
+ > Detailed description
3700
+ >
3701
+ > This is a patch to the MogileFS::store_file mechanism in order to
3702
+ > support very large filee stores using HTTPFile. We sometimes have to
3703
+ > store files of up to 1GB in size. Using chunking is not really an option
3704
+ > since it has proven to be very unreliable (mogtool) and there is no
3705
+ > support for it in the current version of this client. This patch
3706
+ > basically reads 16M chunks at a time and writes them to the tracker
3707
+ > socket instead of trying to stuff the while file in the StringIO and
3708
+ > running out of memory. It's probably very rough and the get_file_data
3709
+ > symmetry patch is not there yet. Feedback appreciated.
3710
+
3711
+ commit 2c1c7312f96fd2688366c5637e749c668c0dceb7
3712
+ Author: zenspider <zenspider@d2e05cf2-00e0-46e5-a3de-bbee4d6b9404>
3713
+ Date: Fri Mar 21 22:22:07 2008 +0000
3714
+
3715
+ Credit for bug report.
3716
+
3717
+ From p4 revision #3630
3718
+
3719
+ git-svn-id: http://seattlerb.rubyforge.org/svn/mogilefs-client/dev@434 d2e05cf2-00e0-46e5-a3de-bbee4d6b9404
3720
+
3721
+ commit 5432c0e4d6b05bcc49c3a7c48eeff11f657beeca
3722
+ Author: zenspider <zenspider@d2e05cf2-00e0-46e5-a3de-bbee4d6b9404>
3723
+ Date: Fri Mar 21 22:22:00 2008 +0000
3724
+
3725
+ Fixed MogileFS#rename.
3726
+ Removed infinite loop in MogileFS::HTTPFile#store_file.
3727
+ Made MogileFS#get_file_data timeout configurable.
3728
+ Add MogileFS#size.
3729
+
3730
+ From p4 revision #3627
3731
+
3732
+ git-svn-id: http://seattlerb.rubyforge.org/svn/mogilefs-client/dev@433 d2e05cf2-00e0-46e5-a3de-bbee4d6b9404
3733
+
3734
+ commit e20f64cd7ba2deb249b9b51ce9154ba5337ddf08
3735
+ Author: zenspider <zenspider@d2e05cf2-00e0-46e5-a3de-bbee4d6b9404>
3736
+ Date: Fri Mar 21 22:15:07 2008 +0000
3737
+
3738
+ Fixed bug #7273 in HTTP mode of client where data would not get returned. Submitted by Matthew Willson.
3739
+
3740
+ From p4 revision #3337
3741
+
3742
+ git-svn-id: http://seattlerb.rubyforge.org/svn/mogilefs-client/dev@377 d2e05cf2-00e0-46e5-a3de-bbee4d6b9404
3743
+
3744
+ commit d7aba2f7ca1c1282b5c9afaabe2082b4d1a85170
3745
+ Author: zenspider <zenspider@d2e05cf2-00e0-46e5-a3de-bbee4d6b9404>
3746
+ Date: Fri Mar 21 22:15:02 2008 +0000
3747
+
3748
+ Import mogilefs-client converted to Hoe.
3749
+
3750
+ From p4 revision #3336
3751
+
3752
+ git-svn-id: http://seattlerb.rubyforge.org/svn/mogilefs-client/dev@376 d2e05cf2-00e0-46e5-a3de-bbee4d6b9404