Date | Commit message (Collapse) |
|
Improvements to the Unix domain socket handling and small
bugfixes throughout.
Support for the "unix_diag" facility in Linux 3.3+ is planned
but not yet implemented (patches to raindrops@librelist.org
appreciated)
Brian Corrigan (1):
resolve symlinks to Unix domain sockets
Eric Wong (6):
unix_listener_stats follows and remembers symlinks
middleware/proxy: favor __send__ for method dispatch
unix: show zero-value stats for idle listeners
test_watcher: fix incorrect request/date comparison
watcher: sort index of listener listing
watcher: do not require Rack::Head for HEAD response
See "git log v0.9.0..v0.10.0" for full details
|
|
Rack webservers are not guaranteed to include Rack::Head in the
middleware stack. Watcher is a standalone app, so it cannot
rely on a framework which automatically includes Rack::Head.
|
|
For hosts with many listeners, it should be easier to read the
index page if the results are shown in a consistent order.
Requested privately via email to raindrops@bogomips.org
|
|
It makes no sense to compare peak times of different queues
(active vs queued) against each other.
|
|
When unix_listener_stats is called without arguments, it should
still match the behavior of tcp_listener_stats and return
ListenerStats object with zero values.
This allows callers to iterate through the results to find the
pathnames of all the Unix domain sockets in in listen mode.
|
|
"send" is more likely to be overridden in subclasses whereas
the Ruby runtime (at least 1.9.3) will warn loudly if any user
code (re)defines the "__send__" method.
For example, BasicSocket#send and UDPSocket#send in the Ruby
stdlib are wrappers for the send(2)/sendto(2) system calls,
and it's entirely possible an application could return a
Socket-subclass as a Rack response body.
|
|
Teach unix_listener_stats to remember the symlink path
it followed and have it point to the same object as the
resolved (real) socket path.
This allows the case where looking up stats by symlinks
works if the symlink is given to unix_listener_stats:
File.symlink("/real/path/of.sock", "/path/to/link.sock")
stats = unix_listener_stats(["/path/to/link.sock"])
stats["/path/to/link.sock"] => # same as stats["/real/path/of.sock"]
|
|
Raindrops currently fails when provided a symlink to a socket.
As this is a common practice for many deployment tools (Vlad,
etc.) this patch adds support for finding the realpath prior to
looking the socket up in /proc/net/unix
[ew: commit message subject]
[ew: fixed test to pass under 1.9.3 and 1.8.7:
* Tempfile#unlink is unsafe to call if we want to reuse the
path, use File.unlink(tmp.path) instead
* The return value of File.symlink is zero (or it raises),
so it's unusable.
* File.symlink will not call #to_path under 1.8.7, so it's
necessary to pass pathnames to it, not Tempfile objects.
]
Signed-off-by: Eric Wong <normalperson@yhbt.net>
|
|
Raindrops::Middleware::Proxy now forwards method_missing
to the proxied body object. This allows compatibility
with non-standard Rack extensions employed by some
middlewares, applications, or servers.
Thanks to Ben Somers for the feature!
|
|
Noted, but not fixed in the previous commit
commit abc6dd47ede5b96ada1ff8f37dfba73cd5fd586a
(Add method_missing to Raindrops::Middleware::Proxy)
|
|
This enables it to behave more like a Rack
BodyProxy would, delegating methods to its body
object when it does not implement them itself.
(Also includes a minor grammar fix to a comment.)
[ew: minor comment/whitespace fix]
Signed-off-by: Eric Wong <normalperson@yhbt.net>
|
|
This release fixes a build problem found under a current SmartOS. This
release also runs successfully on FreeBSD 9.0 under both x86-64 and
i386.
There are also documentation updates from Aman Gupta and a test suite
fix from Jeremy Evans for OpenBSD.
raindrops fully supports unicorn on recent versions of FreeBSD, OpenBSD,
SmartOS, and possibly other Free Software systems. Portability reports
and fixes for Free Software systems is greatly appreciated at
raindrops@librelist.org
Non-Free systems will never be supported.
raindrops requires the Linux 2.6.18 or later for full functionality
(which unicorn does not require). Future releases will take advantage
of the unix_diag functionality found in the Linux 3.3 (and later)
kernels.
|
|
This is exported (visibly) under Ruby 1.9.3 but not
in headers, so it was causing warnings.
|
|
Attempting to test for CMPXCHG on x86 should allow this check to
fail on i386 systems. We also won't need try_run as a result,
enabling cross-compilation. The configure.in check in Ruby
1.9.3 does something similar and that's far more widely used
than raindrops is.
|
|
Signed-off-by: Aman Gupta <aman@tmm1.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
|
|
Signed-off-by: Aman Gupta <aman@tmm1.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
|
|
Consolidating multiple Rack apps into fewer Rack apps on
bogomips.org, might as well be transparent about it.
|
|
Most other linux-specific test files have this, but
test_linux_tcp_info.rb does not.
With this patch, gmake test passes on OpenBSD.
|
|
There are various updates to the Raindrops::Watcher Rack app.
Most notably, the timestamp where the a statistic first and last
hit its peak value (active/queued connections) is captured.
As usual, the latest Raindrops::Watcher is running at:
http://raindrops-demo.bogomips.org/
|
|
Math.sqrt on 1.8.7 does not give NaN for certain errors.
We'll also fix our Errno::EDOM retry loop to avoid resetting
the "retried" flag.
|
|
Just in case somebody tries to scan all addresses, we
won't run out of memory as easily.
|
|
These names are not finalized, yet.
|
|
It could be useful to know when the first and last peak time of
a maximum was.
|
|
Unicorn.run no longer exists
|
|
It can be useful to some to see that info all at once
without hitting the HTML index page.
|
|
I don't need this feature myself.
|
|
This was always supported via the HTML (browser) interface
but there was no documented way of hitting it without a
browser, before.
|
|
|
|
This release fixes a build issue on FreeBSD. There are various
documentation and code cleanups, too.
|
|
A non-profit TLD makes more sense for a Free Software project.
|
|
Found in the check-warnings target in pkg.mk
|
|
It's not needed.
|
|
* check-warnings option added
* locale-independent grep invocation
|
|
This appears to cause __BSD_VISIBLE to not be defined,
which is required for MAP_ANON to be visible in
sys/mman.h
Thanks for Aleksandar Simic for the hint and Troex Nevelin
for the bug report!
|
|
No need to cast when C has handy unions. Maybe the compiler
will be able to make better optimization choices here, but
at least it'll be less noisy.
|
|
The last_data_recv field is dependent on the CONFIG_HZ of
the kernel, so the stock 250 HZ kernel can change the
timing on us.
|
|
formatting is hard :<
|
|
I copied and pasted off the Raindrops::LastDataRecv
documentation. While the headers and mathematical meanings are
identical, they measure different things (but for the same
purpose)
Noticed-by: Troex Nevelin
|
|
TCP_INFO support couldn't compile under non-Linux, this was
broken since 0.5.0 when TCP_INFO support was introduced.
Thanks to Ben Bleything for the report.
|
|
We can't even pull in linux/*.h headers to check
for TCP_INFO.
|
|
Following up the huge 0.5.0 release, 0.6.0 makes
some minor improvements:
* minor UI/UX improvements for Watcher Rack app
* set close-on-exec by default for inet_diag sockets
* inet_diag build fixes for newer GNU libc6
* --with-atomic_ops-dir= build option added
|
|
dir_config may be used to build for libatomic_ops. The
previous use of dir_config was from back when I didn't
understand mkmf.
This means you can now use:
gem install raindrops -- --with-atomic_ops-dir=/usr/local
If you libatomic_ops library was installed in /usr/local
instead of /usr
|
|
Seems to breaks under newer libc headers (on Debian sid).
|
|
We no longer use it.
|
|
|
|
Very few programs can take advantage of inheriting FDs
across exec() boundaries, and inet_diag sockets have no
reason to be used in this way.
|
|
It can detect cross-thread close() calls
|
|
No need to duplicate code
|
|
It can help navigation, we think...
|
|
No need to waste bandwidth of example.com when
we have a meaningful demo site :)
|