about summary refs log tree commit homepage
DateCommit message (Collapse)
2017-03-23mogilefs-client 3.11.1 v3.11.1
This release updates the IO#write garbage workaround to be enabled for Ruby 2.0 and 2.1 users; but avoids it on the just-released Ruby 2.4.1; as that includes the backported bugfix for https://bugs.ruby-lang.org/issues/13085 There's also some trivial doc and code aesthetics fixes. 6 changes since 3.11.0: .olddoc.yml: add trailing slash on URL socket_common: expand IO#write garbage workaround to 2.0 and 2.1 socket_common: limit garbage workaround to Ruby <= 2.4.1 socket_common: remove needless 'o' modifier for Regexp socket_common: improve readability of case statement GNUmakefile: fix incorrect comment
2017-03-23GNUmakefile: fix incorrect comment
"touch -r" is actually in POSIX.
2017-03-23socket_common: improve readability of case statement
Due to the release of Ruby 2.4.1 with the necessary fix, it seems likely that future releases (if any) of the 2.2 and 2.3 series will avoid garbage on IO#write, too.
2017-03-23socket_common: remove needless 'o' modifier for Regexp
There's no variable interpolation for the regexp.
2017-03-13socket_common: limit garbage workaround to Ruby <= 2.4.1
It looks like Ruby 2.4.1 will have the regression fixed backported to it: https://bugs.ruby-lang.org/issues/13299#change-63503 The next releases of Ruby 2.3 and 2.2 may, too; at the branch maintainer's decision.
2017-02-03socket_common: expand IO#write garbage workaround to 2.0 and 2.1
On reading more carefully, it seems this change is from r34847 which landed in Ruby 2.0. So we still need to support Ruby 2.0 and 2.1 users.
2017-01-31.olddoc.yml: add trailing slash on URL
Oops, olddoc screws up the Atom XML feed otherwise...
2017-01-31Ruby mogilefs-client 3.11.0 v3.11.0
This release provides compatibility with net-http-persistent 3.x while retaining support for the (API-incompatible) 2.x series. Users of mainline Ruby 2.2+ get a workaround for excessive garbage for uploading files. This excessive garbage on IO#write should be fixed when Ruby 2.5 gets released on Dec 25, 2017: https://bugs.ruby-lang.org/issues/13085 There's also a few minor garbage reductions of small strings, relying on the maintained cmogstored for Content-Range PUT testing, and some minor build system and documentation updates. 12 changes since 3.10.0 (Aug 2016): avoid pointless capture in regexp use opt_str_freeze to avoid allocations in a few places new_file/common: simplify empty class declarations support net-http-persistent 3.x test: switch to cmogstored for testing Content-Range PUTs avoid excessive garbage on uploads with Ruby 2.2+ socket_common: limit IO#write garbage workaround to <= 2.4 freeze string literals in a few more places update URLS to HTTPS README: explain removal of NFS support doc: remove private email address linkage gemspec: remove olddoc development dependency
2017-01-31gemspec: remove olddoc development dependency
At least it should not be needed for rebuilding the gem, anymore. This will hopefully make it easier to package and hack.
2017-01-31doc: remove private email address linkage
Instead, promote anonymous remailers and put users in charge of their own anonymity.
2017-01-31README: explain removal of NFS support
Hopefully nobody complains about us dropping the feature, then.
2017-01-31update URLS to HTTPS
This helps somewhat with user privacy; since reading about distributed systems can get people tagged as anti-authoritarian :P
2017-01-31freeze string literals in a few more places
This should reduce the amount of garbage we produce and keep the process leaner and meaner.
2017-01-30socket_common: limit IO#write garbage workaround to <= 2.4
It looks like this regression will be fixed in time for Ruby 2.5.
2017-01-27avoid excessive garbage on uploads with Ruby 2.2+
This is a workaround for <https://bugs.ruby-lang.org/issues/13085> since we use non-blocking sockets anyways.
2017-01-27test: switch to cmogstored for testing Content-Range PUTs
mogstored_rack is long abandoned since I decided to work on cmogstored (in C, not Ruby :) instead. We still need this test since the original Perl mogstored does not yet support Content-Range: in PUT requests.
2017-01-26support net-http-persistent 3.x
The optional net-http-persistent RubyGem we use has a major incompatible change from the 2.x versions. Support them both.
2016-12-29new_file/common: simplify empty class declarations
This compiles to smaller bytecode on YARV (MRI)
2016-12-29use opt_str_freeze to avoid allocations in a few places
None of these are too performance critical, but err on the safe side and avoid allocations whenever possible.
2016-12-29avoid pointless capture in regexp
We do not emit any sort of message on successful 2XX responses, so there's no need to save the actual response after writing.
2016-08-31Ruby mogilefs-client 3.10.0 v3.10.0
A bunch of minor tweaks to reduce garbage and exceptions. In addition to the existing :timeout and :fail_timeout options, there is a new :connect_timeout directive for all connection classes which only controls the time spent waiting for a TCP connection. This defaults to the same value as the existing :timeout option (3 seconds); but users are advised to lower it to match ideal network conditions. For users of Ruby 2.3+, this release takes advantage of exception-less Socket#connect_nonblock using "exception: false". Users of Ruby 2.1+ will also benefit from "exception: false" usage for read_nonblock and write_nonblock calls. kgio is no longer be useful with this release with Ruby 2.3+ This release also fixes a Ruby 1.8.7 compatibility bug for non-kgio users. However, this may be the last 1.8.7-compatible release. Fwiw, I wanted to remove Ruby 1.8 support around 5 years ago but several users were against it. Maybe nobody will complain, this time... 18 changes since 3.9.0: doc: avoid inadvertantly documenting the Process class admin: simplify utilization conversion more idiomatic comparisons with constants bigfile/filter: only update MD5 if non-nil bigfile: lazily require bigfile/filter backend: simplify regexp .olddoc.yml: add NNTP and mailing list archive URL minor garbage reductions for newer Rubies socket/pure_ruby: fix Ruby 1.8 compatibility socket/pure_ruby: use `:exception=>false' on Ruby 2.1+ test_fresh: do not delete non-existent domain admin: map unset reject_bad_md5 field to nil socket/pure_ruby: connect with "exception:false" on Ruby 2.3+ implement :connect_timeout option add .gitattributes for Ruby method detection README: stop mentioning cgit connect_timeout: match :timeout if unset pkg.mk: use --local option for gem installation
2016-08-31pkg.mk: use --local option for gem installation
We should never attempt to use the network to install a locally-built gem.
2016-08-31connect_timeout: match :timeout if unset
And add some weak tests while we're at it. Actually simulating a connection timeout on localhost will be difficult.
2016-08-31README: stop mentioning cgit
It is unlikely I will be using cgit in the future since it has CSS and lacks mailing list integration.
2016-08-31add .gitattributes for Ruby method detection
The "diff" function detection for C does not map well to Ruby files, take advantage of gitattributes(5) to improve method name detection in generated patches as well as making "git diff -W" output more useful.
2016-08-31implement :connect_timeout option
This can be useful for specifying a different timeout for establishing a connection. Some requests could be expensive and want a higher :timeout measured in seconds, while the time to establish a TCP connection on a healthy LAN could be less than a millisecond. This defaults to 3s to match the existing :timeout, but only affects the amount of time the client will wait for establishing a TCP connection to a tracker.
2016-08-31socket/pure_ruby: connect with "exception:false" on Ruby 2.3+
Exceptions are expensive for common errors, so avoid raising them under Ruby 2.3+ which allows connect_nonblock to be called with "exception: false" kwarg.
2016-08-31admin: map unset reject_bad_md5 field to nil
The 'reject_bad_md5' field may be of an unknown value before the monitor is ready, so prepare for it and map it to 'nil' instead of an empty string. This hopefully makes the Ruby API more Ruby-ish.
2016-08-31test_fresh: do not delete non-existent domain
This test bug was exposed due to using an old MogileFS-Server without commit d0ee2a27253ade4b50ef5b91471f4f520a67bf8c ("Work with DBD::SQLite's latest lock errors")
2015-11-04socket/pure_ruby: use `:exception=>false' on Ruby 2.1+
This feature allows us to avoid expensive exceptions when doing non-blocking I/O without relying on horrible hacks like kgio.
2015-10-22socket/pure_ruby: fix Ruby 1.8 compatibility
For non-kgio users, IO#wait_readable did not appear until Ruby 2.0. Additionally, optimistically perform reads before waiting because EOF handling behavior differs in current revisions of Ruby 2.3.0dev.
2015-10-22minor garbage reductions for newer Rubies
opt_str_freeze and String#split is optimized for single-byte splits. Use bang methods for escaping, avoiding much garbage in tight loops.
2015-10-22.olddoc.yml: add NNTP and mailing list archive URL
2015-09-16backend: simplify regexp
We don't care if there's a \r before \n if we anchor on \z.
2015-09-16bigfile: lazily require bigfile/filter
None of the bigfile stuff is in common use, so avoid bloating user apps with more of it.
2015-09-14bigfile/filter: only update MD5 if non-nil
It is possible to disable MD5 verification, so we cannot risk updating a nil object. Also, favor explicitly calling "update" instead of using "<<" which YARV will attempt to optimize for Array/String receivers at the cost of other objects (such as Digest::MD5)
2015-09-14more idiomatic comparisons with constants
These generates smaller bytecode than explicitly comparing to a constant value.
2015-09-14admin: simplify utilization conversion
The tracker won't send a utilization field until it has that data.
2015-06-25doc: avoid inadvertantly documenting the Process class
rdoc seems to think we implement something for Process, we do not.
2015-06-25Ruby mogilefs-client 3.9.0 v3.9.0
shortlog of changes since v3.8.0: * test/test_fresh.rb: fix breakage from Ruby-trunk r50118 * use monotonic clock if possible on Ruby 2.1+ * avoid defineclass instructions for empty classes * HACKING: minor documentation updates * mogilefs/socket/pure_ruby: use IO#wait_*able
2015-06-24mogilefs/socket/pure_ruby: use IO#wait_*able
IO#wait_*able methods may use the more efficient ppoll syscall under Linux to avoid performance penalties with high-numbered FDs. Use them if available. IO#wait_readable has been around since the 1.8 days at least, and IO#wait_writable was added in Ruby 2.0.0
2015-06-24HACKING: minor documentation updates
Remove old, out-of-date references and clarify that we use email.
2015-05-28avoid defineclass instructions for empty classes
This needlessly wastes bytecode and saves around 2K memory on 64-bit platforms.
2015-05-27use monotonic clock if possible on Ruby 2.1+
The monotonic clock is immune to discontinuous time jumps while still taking into account clock imperfections, making it appropriate for calculating time differences and timeouts.
2015-05-27test/test_fresh.rb: fix breakage from Ruby-trunk r50118
IO.copy_stream behaves slightly differently when operating on non-IO-subclassed objects nowadays. Ref: > * io.c (copy_stream_body): use the arguments without conversion if > having read, readpartial, and write methods, than conversion by > to_path method. [ruby-core:68676] [Bug #11015]
2015-02-10Ruby mogilefs-client 3.8.0 v3.8.0
Mostly documentation updates and test cleanups. Nothing interesting for the regular client, but the admin client now shows the checksum-related fields in get_devices. Most notably, there's a public-inbox for those who don't want to subscribe to the MogileFS list: mogilefs-client-public@bogomips.org Archives are at: http://bogomips.org/mogilefs-client-public/ There is no new mailing list subscription, it is only a public-inbox. Cc-ing the MogileFS list at mogile@googlegroups.com is encouraged if you do have a subscription. shortlog since 3.7.1: add mog-sync example script admin (doc, get_hosts): display integers in results doc update documentation and packaging GNUmakefile: publish examples on the site, too examples: add usage_fetcher example TODO: remove Cool.io and EventMachine references admin: flesh out get_devices admin: reduce bytecode overhead of get_stats tests: create fresh intances for all integration tests include mogilefs/version.rb in the distro test: fixup object lifetimes and teardown new public-inbox: mogilefs-client-public@bogomips.org
2015-02-10new public-inbox: mogilefs-client-public@bogomips.org
Probably not worth being a full-blown mailing list since mogile@googlegroups.com exists, but it's nice to have a public place where people can post without subscribing to anything.
2015-01-22test: fixup object lifetimes and teardown
This should prevent stray processes from being leftover after tests are run as well as cleaning up tmpdirs more thoroughly.
2015-01-22include mogilefs/version.rb in the distro
2015-01-16tests: create fresh intances for all integration tests
This should make it easier to fully test on machines without access to an existing MogileFS instance. You'll still need mogilefsd and mogstored available, however, but these tests are skipped on machines without them.