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/