Date | Commit message (Collapse) |
|
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
|
|
"touch -r" is actually in POSIX.
|
|
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.
|
|
There's no variable interpolation for the regexp.
|
|
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.
|
|
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.
|
|
Oops, olddoc screws up the Atom XML feed otherwise...
|
|
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
|
|
At least it should not be needed for rebuilding the gem,
anymore. This will hopefully make it easier to package
and hack.
|
|
Instead, promote anonymous remailers and put users in
charge of their own anonymity.
|
|
Hopefully nobody complains about us dropping the feature, then.
|
|
This helps somewhat with user privacy; since reading about
distributed systems can get people tagged as anti-authoritarian :P
|
|
This should reduce the amount of garbage we produce and
keep the process leaner and meaner.
|
|
It looks like this regression will be fixed in time for
Ruby 2.5.
|
|
This is a workaround for <https://bugs.ruby-lang.org/issues/13085>
since we use non-blocking sockets anyways.
|
|
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.
|
|
The optional net-http-persistent RubyGem we use has a major
incompatible change from the 2.x versions. Support them both.
|
|
This compiles to smaller bytecode on YARV (MRI)
|
|
None of these are too performance critical, but err on
the safe side and avoid allocations whenever possible.
|
|
We do not emit any sort of message on successful 2XX responses,
so there's no need to save the actual response after writing.
|
|
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
|
|
We should never attempt to use the network to install a
locally-built gem.
|
|
And add some weak tests while we're at it.
Actually simulating a connection timeout on localhost
will be difficult.
|
|
It is unlikely I will be using cgit in the future since
it has CSS and lacks mailing list integration.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
This test bug was exposed due to using an old
MogileFS-Server without
commit d0ee2a27253ade4b50ef5b91471f4f520a67bf8c
("Work with DBD::SQLite's latest lock errors")
|
|
This feature allows us to avoid expensive exceptions when doing
non-blocking I/O without relying on horrible hacks like kgio.
|
|
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.
|
|
opt_str_freeze and String#split is optimized for single-byte splits.
Use bang methods for escaping, avoiding much garbage in tight
loops.
|
|
|
|
We don't care if there's a \r before \n if we anchor on \z.
|
|
None of the bigfile stuff is in common use, so avoid bloating
user apps with more of it.
|
|
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)
|
|
These generates smaller bytecode than explicitly
comparing to a constant value.
|
|
The tracker won't send a utilization field until it has
that data.
|
|
rdoc seems to think we implement something for Process, we do not.
|
|
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
|
|
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
|
|
Remove old, out-of-date references and clarify that we use
email.
|
|
This needlessly wastes bytecode and saves around 2K memory
on 64-bit platforms.
|
|
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.
|
|
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]
|
|
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
|
|
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.
|
|
This should prevent stray processes from being leftover
after tests are run as well as cleaning up tmpdirs
more thoroughly.
|
|
|
|
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.
|