Hi all !

After approximately one month, we managed to gather enough features
and fixes to release a new development version.

First, a quick spot on the fixes. Dmitry Sivachenko provided a
patch to fix build failures on FreeBSD. It was also noticed that
the tarpit feature did not work anymore in 1.4-dev2, which is now
fixed. That's all for the regressions in 1.4-dev2. That means that
1.4-dev2 has been pretty stable for the ones who used it.

Now the shiny new features.

First, everyone on the list has seen Krzysztof Oledzki's patch
to report precise health check status on the stats interface.
It's really nice because with this, you don't only see that a
server is dead, you see what steps of the test it succeeded or
failed, and in how much time. This will be particularly helpful
for persons who have to configure HTTP health checks on URLs
they're not exactly certain (for hosted customers, etc...).
I invite all stats user to try this and to report ideas on how
to improve it (I'd personally like to get captures of last
requests and responses which changed the service's state, but
it can take quite some time to implement). Some people might
have other ideas.

Second, I've been working on adapting the internals to evolve
towards multi-layering and keepalive. We've reached the point
where unix and TCP sockets share the same code, and where it
is possible for a processing to be embedded within a task, be
it the one which handles the session or another one.

For a developper, it means that the door is open to try to
implement internal services running as "applets" (eg: a CLI)
and multi-layer protocols. It's the right moment to try again
to merge some asynchronous SSL or FastCGI converters into
haproxy. For sure there will be some annoying issues, but
probably not total showstoppers as were encountered in the
past. As a proof of concept, I have changed the stats socket
to use this new mechanism. The code looks easier to read, and
above all it allows interactive mode with a basic command line
interface and the ability to batch multiple commands at once.

Also, the changes on the internals have brought us very close
to supporting keep-alive. Responses 1xx are already correctly
parsed, transmitted and skipped (I'll see if I can backport
this into 1.3 BTW). And last week-end, I really thought I
could see at least a keep-alive session work, but I still
encountered difficulties that had to be delayed to after this
release. I'll focus on this now that the internals look better.

There were a few minor features that are already queued in 1.3,
such as the "hdr_ip" ACL keyword to extract an IP address from
a header and use it as such with netmasks, etc... Some minor
network speed enhancements were found again and the socket
code has been cleaned and improved a little bit.

Oh, and now it's possible to adjust the internal buffers size
by configuration (global section: tune.bufsize). This means
that users with large amounts of sessions will not have to
rebuild to save memory, and that users with buggy applications
which send tens of kB of headers or cookies will be able to
use them from stock code too.

I'll be clear. Some of the changes on the internal code were
sensible and I can't exclude a regression. But I've been
extremely careful and I've reviewed the changes several times.
Also, it led me to uncover and fix some old pending bugs. I'm
personally upgrading the three instances I'm using to run on
this version (at least for the new stats and mini-CLI). As
usual, I'm very interested in test reports on this new devel
version.

The new code with the complete changelog is here :

   http://haproxy.1wt.eu/download/1.4/src/

Last, I would like to announce a very good news that I hope will
give ideas to others : Exceliance [1] and Loadbalancer.org [2]
have both agreed to contribute some manpower and money to implement
the complete persistence framework that everyone is dreaming about
into haproxy. That's a tough work and I'm not certain it will be
ready for 1.4 (though it might, depending if I'm as late on my
releases as usual). I would personally like to thank them both
for their contributions. When you have to put your money in
commercial solutions, please never forget to consult first the
guys who involve time and money in opensource projects, because
they are the ones who help the projects evolve and live !

Have fun,
Willy

[1] Exceliance:       http://www.exceliance.fr/
[2] Loadbalancer.org: http://www.loadbalancer.org/


Reply via email to