Eric Wong [Sun, 1 Mar 2015 10:18:15 +0000 (1 10:18 +0000)]
README: reference yahns
Because nobody has time to read about all the options Rainbows!
provides. yahns is basically XEpollThreadPool, with minor
improvements which weren't easily supportable with other
concurrency options.
Eric Wong [Tue, 13 Jan 2015 03:31:15 +0000 (13 03:31 +0000)]
switch docs + website to olddoc
wrongdoc was difficult to maintain because of the tidy-ffi
dependency and the HTML5 changes in Darkfish could not be
handled well by Tidy.
olddoc is superior as it generates leaner HTML which loads faster,
requires less scrolling and less processing power to render.
Aesthetic comparisons are subjective of course but completely
unimportant compared to speed and accessibility.
The presence of images and CSS on the old (Darkfish-based) site
probably set unreasonable expectations as to my ability and
willingness to view such things. No more, the new website is
entirely simple HTML which renders well with even the wimpiest
browser (hell, olddoc even tries to generate readable raw HTML).
Eric Wong [Wed, 14 May 2014 20:22:06 +0000 (14 20:22 +0000)]
doc: fix pandoc HTML generation
The --sanitize-html option is gone nowadays.
Eric Wong [Wed, 14 May 2014 20:09:09 +0000 (14 20:09 +0000)]
zbatery 4.2.0
Lots of updates for deprecated broken stuff, and we have a good
version number to go with it ;)
See the corresponding Rainbows! release for more details:
http://bogomips.org/rainbows-public/m/
20140512074058.GB29516@dcvr.yhbt.net
One notable new feature is the addition of the
--no-default-middleware option which I forgot about and should've
released last year when Rainbows! got it :x
Eric Wong (6):
Rakefile: s/freshmeat.net/freecode.com/
Rakefile: kill raa_update task
rubyforge death updates
update license to GPLv2+
warn about premature grandparent death on daemonization
update for Rainbows! compatibility
Lin Jen-Shin (1):
Add -N or --no-default-middleware option.
Eric Wong [Wed, 14 May 2014 20:06:37 +0000 (14 20:06 +0000)]
update for Rainbows! compatibility
Recent versions of Rainbows! and unicorn broke compatibility
during shutdown.
Eric Wong [Wed, 14 May 2014 20:05:55 +0000 (14 20:05 +0000)]
warn about premature grandparent death on daemonization
This may cause failures if some process nukes the grandparent
too soon.
Eric Wong [Wed, 14 May 2014 20:04:36 +0000 (14 20:04 +0000)]
update license to GPLv2+
In case I'm hit by a bus, the lesser of two evils is to have the FSF
potentially screw us with a bad GPLv4 than to be stuck with an
insufficient GPLv3.
Eric Wong [Wed, 14 May 2014 20:02:53 +0000 (14 20:02 +0000)]
rubyforge death updates
RubyForge is going away tomorrow, update docs + mailing list
to point to the new instances.
Eric Wong [Mon, 30 Sep 2013 18:20:45 +0000 (30 18:20 +0000)]
Rakefile: kill raa_update task
RAA is dead
Lin Jen-Shin [Tue, 29 Jan 2013 04:06:00 +0000 (29 12:06 +0800)]
Add -N or --no-default-middleware option.
This would prevent Unicorn (Zbatery) from adding default middleware,
as if RACK_ENV were always none. (not development nor deployment)
This is implemented in Unicorn, so we only need to update
the option parser here.
Discussion thread on Unicorn mailing list:
http://rubyforge.org/pipermail/mongrel-unicorn/2013-January/001675.html
Eric Wong [Thu, 8 Dec 2011 02:49:18 +0000 (8 02:49 +0000)]
Rakefile: s/freshmeat.net/freecode.com/
I liked Freshmeat more :P
Eric Wong [Mon, 5 Dec 2011 18:36:12 +0000 (5 18:36 +0000)]
Zbatery 4.1.2 - we don't fork, but our apps may!
There are two bugfixes in this release. Rack applications that
use fork() internally should now behave as-expected when
receiving SIGCHLD. The pid file is also unlinked during a
graceful shutdown.
Eric Wong [Sat, 3 Dec 2011 01:38:48 +0000 (2 17:38 -0800)]
use default SIGCHLD handler
Applications that fork() will trigger SIGCHLD. As unicorn is
based on the master+worker model, its master process handles
SIGCHLD when workers die. However, Zbatery is single-process
and has no workers, it does not need a custom SIGCHLD handler.
Eric Wong [Wed, 23 Nov 2011 09:52:48 +0000 (23 09:52 +0000)]
zbatery: unlink pid file during graceful shutdown
We don't have the same shutdown sequence as unicorn, there is no
need to leave pid files hanging around during upgrades. Of
course we can't guarantee this (or any) behavior for
non-graceful shutdowns...
Eric Wong [Fri, 2 Sep 2011 02:20:04 +0000 (2 02:20 +0000)]
Zbatery 4.1.1 - small bugfix
This release fixes a potential reentrancy deadlock when
using the default logger from the Ruby standard library.
Eric Wong [Wed, 31 Aug 2011 07:54:25 +0000 (31 07:54 +0000)]
avoid potential Logger deadlocks in signal handling
If any combination of signals are sent to Zbatery in a short
period of time, the Mutex used by the default Logger
implementation may deadlock since Mutex synchronization is not
reentrant-safe.
By spawning a thread, we can take advantage of the thread-safety
and avoid the reentrancy-safety issue of acquiring a mutex
inside a signal handler.
Users of alternative logger implementations (or monkey-patched
ones) are possibly not affected. Users of the logger_mp_safe.rb
monkey-patch distributed[1] with unicorn are not affected.
[1] http://unicorn.bogomips.org/examples/logger_mp_safe.rb
Eric Wong [Sat, 20 Aug 2011 01:38:59 +0000 (20 01:38 +0000)]
Zbatery 4.1.0 - pull in latest changes from unicorn 4.1.0
Logging of errors is more consistent in this release.
See the unicorn 4.1.0 release notes for more details:
http://bogomips.org/unicorn.git/tag/?id=v4.1.0
Eric Wong [Sat, 20 Aug 2011 01:36:41 +0000 (20 01:36 +0000)]
t/test_isolate: bump test dependency versions
Eric Wong [Sat, 20 Aug 2011 01:31:27 +0000 (20 01:31 +0000)]
README: various doc updates
Eric Wong [Sat, 20 Aug 2011 01:28:04 +0000 (20 01:28 +0000)]
gemspec: depend on unicorn 4.1.0
...via Rainbows! 4.3.0.
Eric Wong [Sat, 20 Aug 2011 01:27:36 +0000 (20 01:27 +0000)]
cleanup rdoc
We have no public API
Eric Wong [Sat, 20 Aug 2011 01:25:14 +0000 (20 01:25 +0000)]
bump wrongdoc to 1.6
We want email (but not the HTML kind :P)
Eric Wong [Mon, 27 Jun 2011 09:51:43 +0000 (27 09:51 +0000)]
Zbatery 4.0.0 - another Rainbows! resync
This gets most of the improvements Rainbows! 4.0.0 got:
* client_max_header_size directive is added to limit per-client
memory usage in headers.
* An experimental StreamResponseEpoll concurrency option
* minor bugfixes, minor stack depth reduction
Since Zbatery doesn't fork workers, the ability of Unicorn 4.x
to scale to a large amount of worker processes doesn't matter
to us.
Eric Wong [Mon, 27 Jun 2011 09:49:19 +0000 (27 09:49 +0000)]
remove DeadIO class
It's no longer needed.
Eric Wong [Mon, 27 Jun 2011 09:47:50 +0000 (27 09:47 +0000)]
remove Zbatery.run method
It's unnecessary making the stack deeper. Stop it.
Eric Wong [Mon, 27 Jun 2011 09:46:23 +0000 (27 09:46 +0000)]
resync with Rainbows! 4.0.0
There are some internal changes in Unicorn and Rainbows! 4.x
Eric Wong [Sat, 21 May 2011 03:31:26 +0000 (21 03:31 +0000)]
pkg.mk: update to the latest version
This fixes locale issues with grep and adds check-warnings.
Eric Wong [Sat, 21 May 2011 03:28:23 +0000 (21 03:28 +0000)]
Zbatery 3.4.0 - another Rainbows! resync
This release fixes dependencies on Rainbows! and gets all
the improvements Rainbows! 3.4.0 got:
* Kgio.autopush support for multi-threaded configurations
* Immediate disconnect of idle clients on SIGQUIT for
concurrency models where idle clients are cheap to maintain.
Eric Wong [Mon, 16 May 2011 21:28:29 +0000 (16 14:28 -0700)]
Zbatery 3.3.0 - another Rainbows! resync
Like Rainbows! 3.3.0, we've added the GPLv3 to our license
(in addition to GPLv2 and Ruby terms). See Rainbows! 3.3.0
release notes and news for more infor on changes:
http://rainbows.rubyforge.org/NEWS.html
Eric Wong [Tue, 10 May 2011 23:36:25 +0000 (10 16:36 -0700)]
LICENSE: add GPLv3 terms
GPLv2 and Ruby-specific terms remain intact, but this means
we can be combined and redistributed with GPLv3-only software
(once Unicorn has GPLv3 added to its license).
Eric Wong [Fri, 11 Feb 2011 11:24:10 +0000 (11 11:24 +0000)]
GNUmakefile: fix doc build
copy-and-paste error from Rainbows!
Eric Wong [Wed, 16 Feb 2011 18:50:50 +0000 (16 10:50 -0800)]
README: clarify license terms and versions
Ruby 1.9.3dev switched to BSD but we remain under the same terms
as the old Ruby 1.8 license. Mongrel2 exists now and also uses
the BSD, so don't confuse people with that, either.
Eric Wong [Fri, 11 Feb 2011 11:22:21 +0000 (11 11:22 +0000)]
Zbatery 3.1.0 - we stole release notes from Rainbows!
Small bug fixes that have been sitting around, not much but
it's already been one month since our last release.
* Unicorn dependency updated to 3.4.0, so we get IPv6 support
and Kgio.autopush support for ":tcp_nopush => true" users.
* Optional :pool_size argument is fixed for NeverBlock and
CoolioThreadPool users.
* Mostly minor internal code cleanups
* Sunshowers support removed, it was out-of-date and
unmaintained. Cramp remains supported for now.
* X-Rainbows-* response headers support removed, nobody used it.
There are severalnew features in this release not documented
here. Consider any new features not mentioned in these release
notes to be subject to removal/renaming in future releases.
Eric Wong [Fri, 11 Feb 2011 11:21:16 +0000 (11 11:21 +0000)]
bump Rainbows! dependency to 3.1.0
Minor updates, really.
Eric Wong [Fri, 11 Feb 2011 11:15:52 +0000 (11 11:15 +0000)]
update packaging and URLs
bogomips.org went on a URL diet!
Eric Wong [Fri, 11 Feb 2011 11:08:02 +0000 (11 11:08 +0000)]
bump up wrongdoc dependency
Eric Wong [Fri, 11 Feb 2011 11:07:30 +0000 (11 11:07 +0000)]
update for internal API change in rainbows.git
About to become Rainbows 3.1.0 soon
Eric Wong [Wed, 12 Jan 2011 00:49:55 +0000 (11 16:49 -0800)]
Zbatery 3.0.0 - Rainbows! 3.0.0 resync
The ugly "Rainbows::G" constant is no longer.
Eric Wong [Wed, 29 Dec 2010 09:18:59 +0000 (29 09:18 +0000)]
Zbatery 0.6.0 - Rainbows! 2.1.x resync
Eric Wong [Wed, 29 Dec 2010 09:18:14 +0000 (29 09:18 +0000)]
packaging updates (wrongdoc!)
Eric Wong [Wed, 29 Dec 2010 09:00:36 +0000 (29 09:00 +0000)]
resync with Rainbows! 2.1.0
Eric Wong [Sat, 20 Nov 2010 03:31:47 +0000 (20 03:31 +0000)]
Zbatery 0.5.0 - Rainbows! 2.0.x sync
This release syncs up with the latest from Rainbows! 2.0.x
and Unicorn 3.0.x. See Rainbows! and Unicorn release notes
and changelogs for relevant details.
Eric Wong [Thu, 28 Oct 2010 09:44:45 +0000 (28 09:44 +0000)]
Zbatery 0.4.0 - Rainbows! 1.0.x sync
This release syncs up with the latest from Rainbows! 1.0.x
and Unicorn 2.0.x
Eric Wong [Thu, 28 Oct 2010 09:43:15 +0000 (28 09:43 +0000)]
updates for Rainbows! 1.0.0
There are some internal API changes here.
Eric Wong [Sat, 28 Aug 2010 20:03:57 +0000 (28 20:03 +0000)]
bump dependencies on Unicorn + Rainbows!
Small fixes from both that are worth having to ease support.
Eric Wong [Sun, 11 Jul 2010 02:57:56 +0000 (11 02:57 +0000)]
Zbatery v0.3.1 - quiet EOF errors from clients
Eric Wong (3):
update local.mk.sample for 0.3.0
Fix documentation generation
bump Rainbows! (and Unicorn) dependencies
Eric Wong [Sun, 11 Jul 2010 02:57:01 +0000 (11 02:57 +0000)]
bump Rainbows! (and Unicorn) dependencies
Unicorn 1.1.0 had constant resolution problems
with TeeInput
Eric Wong [Sat, 10 Jul 2010 10:09:54 +0000 (10 10:09 +0000)]
Fix documentation generation
.document needed to be updated for RDoc 2.5.x
Eric Wong [Sat, 10 Jul 2010 09:58:53 +0000 (10 09:58 +0000)]
update local.mk.sample for 0.3.0
Eric Wong [Sat, 10 Jul 2010 09:56:27 +0000 (10 09:56 +0000)]
Zbatery v0.3.0 - for newer Rainbows!
Rainbows! v0.95.0 is more awesome than v0.94.0, so we've updated
ourselves to use it and be more awesome as well!
Eric Wong [Sat, 10 Jul 2010 09:55:20 +0000 (10 09:55 +0000)]
gemspec: small doc updates
Eric Wong [Sat, 10 Jul 2010 09:53:52 +0000 (10 09:53 +0000)]
add additional tests for newish Rainbows! features
Eric Wong [Sat, 10 Jul 2010 09:41:46 +0000 (10 02:41 -0700)]
updates for Rainbows! 0.95.0
Rainbows! 0.95.0 made some incompatible changes, so update
everything. Unfortunately we have to avoid subclassing here.
Tests use isolate now.
Eric Wong [Mon, 19 Apr 2010 21:14:46 +0000 (19 14:14 -0700)]
Zbatery 0.2.1 - use a less-broken parser from Unicorn
This release fixes a denial-of-service vector for deployments
exposed directly to untrusted clients.
The HTTP parser in Unicorn <= 0.97.0 would trip an assertion
(killing the associated worker process) on invalid
Content-Length headers instead of raising an exception. Since
Rainbows! and Zbatery supports multiple clients per worker
process, all clients connected to the worker process that hit
the assertion would be aborted.
Deployments behind nginx are _not_ affected by this bug, as
nginx will reject clients that send invalid Content-Length
headers.
The status of deployments behind other HTTP-aware proxies is
unknown. Deployments behind a non-HTTP-aware proxy (or no proxy
at all) are certainly affected by this DoS.
Users are strongly encouraged to upgrade as soon as possible,
there are no other changes besides this bug fix from Rainbows!
0.91.0 nor Unicorn 0.97.0
This bug affects all previously released versions of Rainbows!
and Zbatery.
Eric Wong [Mon, 1 Mar 2010 18:22:14 +0000 (1 18:22 +0000)]
t0003: fix error log check
We don't have "worker" processes in here.
Eric Wong [Mon, 1 Mar 2010 10:40:51 +0000 (1 10:40 +0000)]
Zbatery 0.2.0 - Unicorn/Rainbows! resync
Eric Wong (7):
use Unicorn.builder to parse config.ru switches
import selected parts of test suite from Rainbows!
gemspec: depend on newer Unicorn for Unicorn.builder
support "user" directive outside of after_fork hook
MRI 1.8 thread fix to avoid blocking accept()
disable more Unicorn methods
support Unicorn 0.96.0+ ready_pipe daemonization
Eric Wong [Mon, 1 Mar 2010 10:36:54 +0000 (1 10:36 +0000)]
support Unicorn 0.96.0+ ready_pipe daemonization
ready_pipe allows the controlling process to detect
errors more reliably.
Eric Wong [Mon, 1 Mar 2010 10:33:41 +0000 (1 10:33 +0000)]
disable more Unicorn methods
init_self_pipe! and trap_deferred are worthless and
possibly harmful to us
Eric Wong [Mon, 1 Mar 2010 10:29:01 +0000 (1 10:29 +0000)]
MRI 1.8 thread fix to avoid blocking accept()
Rainbows! commit
ee7fe220ccbc991e1e7cbe982caf48e3303274c7
Under MRI 1.8, listen sockets do not appear to have the
nonblocking I/O flag on by default, nor does it set the
nonblocking I/O flag when calling #accept (but it does
when using #accept_nonblock, of course).
Normally this is not a problem even when using green threads
since MRI will internally select(2) on the file descriptor
before attempting a blocking (and immediately successful)
accept(2).
However, when sharing a listen descriptor across multiple
processes, spurious wakeups are likely to occur, causing
multiple processes may be woken up when a single client
connects.
This causes a problem because accept(2)-ing on multiple
threads/processes for a single connection causes blocking accepts in
multiple processes, leading to stalled green threads.
This is not an issue under 1.9 where a blocking accept() call
unlocks the GVL to let other threads run.
Eric Wong [Mon, 1 Mar 2010 10:20:32 +0000 (1 10:20 +0000)]
support "user" directive outside of after_fork hook
This is new in Unicorn 0.97.0, and makes sense to us since we
don't fork. It won't work as nicely with log reopening in some
cases, but it's better than nothing
Eric Wong [Mon, 1 Mar 2010 09:23:29 +0000 (1 09:23 +0000)]
gemspec: depend on newer Unicorn for Unicorn.builder
Eric Wong [Mon, 1 Mar 2010 08:27:36 +0000 (1 08:27 +0000)]
import selected parts of test suite from Rainbows!
Eric Wong [Mon, 1 Mar 2010 03:43:06 +0000 (28 19:43 -0800)]
use Unicorn.builder to parse config.ru switches
Less code to maintain this way.
Eric Wong [Sat, 13 Feb 2010 09:19:32 +0000 (13 01:19 -0800)]
Zbatery 0.1.1
Unicorn had a memory that didn't affect Unicorn, but only
Rainbows!, so we bumped the dependency on Rainbows!
which in turn bumped the dependency on Unicorn...
Also some minor documentation updates.
Eric Wong [Sat, 13 Feb 2010 09:16:09 +0000 (13 01:16 -0800)]
gemspec: bump Rainbows! dependency (leak fix)
Rainbows! >= 0.90.2 depends on Unicorn >= 0.96.1,
which will work around a memory leak found in
previous versions of Unicorn::HttpParser.
Eric Wong [Fri, 25 Dec 2009 01:58:53 +0000 (24 17:58 -0800)]
doc: update manpage since Unicorn got new features
working_directory and Worker#user got added over time, so
recommending Dir.chdir and Process::UID.change_privilege
is bad.
Eric Wong [Tue, 22 Dec 2009 22:56:37 +0000 (22 14:56 -0800)]
Zbatery 0.1.0
This gem release allows compatibility with newer versions of
Rainbows! This also fixes a bug when $stdout is not redirected
to a file.
Eric Wong [Tue, 22 Dec 2009 20:51:54 +0000 (22 12:51 -0800)]
ficks speling eror in README
Eric Wong [Mon, 21 Dec 2009 22:14:28 +0000 (21 14:14 -0800)]
GNUmakefile: releases push tgz to Rubyforge
Eric Wong [Wed, 16 Dec 2009 07:54:38 +0000 (15 23:54 -0800)]
avoid breaking user switching with a single process
$stdout may not have been a chown-able file descriptor,
so throw in a dummy object there that absorbs chown calls.
Eric Wong [Tue, 15 Dec 2009 08:18:59 +0000 (15 00:18 -0800)]
doc: update README, add FAQ
* make it clear we depend on Unicorn and Rainbows!
* point out Sunshowers
* add FAQ
Eric Wong [Sun, 13 Dec 2009 09:28:29 +0000 (13 01:28 -0800)]
gemspec: relax Rainbows! dependency
We do not expect Rainbows! internals we depend on to change
significantly before Rainbows! 1.0.0.
Eric Wong [Thu, 10 Dec 2009 08:19:35 +0000 (10 00:19 -0800)]
prep for release
Eric Wong [Thu, 10 Dec 2009 07:52:26 +0000 (9 23:52 -0800)]
trap and noop SIGWINCH, too
Eric Wong [Mon, 30 Nov 2009 04:41:38 +0000 (29 20:41 -0800)]
do not expand paths given by shell
Shells already expand '~' before the executables see it, and
relative paths inside symlinks can get set incorrectly to the
actual directory name, and not the (usually desired) symlink
name for things like Capistrano.
Since our paths are now unexpanded, we must now check the
"working_directory" directive and raise an error if the user
specifies the config file in a way that makes the config file
unreloadable.
Eric Wong [Fri, 27 Nov 2009 23:08:19 +0000 (27 15:08 -0800)]
initial