mogilefs-client 3.1.1 → 3.2.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/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