Hi all,
it's been about 5 weeks since dev3. In the mean time, several issues were
met and some of them have led to a few internal changes.
We had 130 patches this time, half of which came from Thierry who did an
immense cleanup for the sake of making it easier to make the code evolve
later, and 20% of which were doc updates. This time only 20 bugs were
fixed, few of which were recent regressions, meaning we're converging
towards something clean.
Thierry did two major things. First, he reworked the way the data attached
to a sample is accessed internally so that stick-tables can now use samples
as their inputs. That removes a lot of duplicated casts that we used to have
since version 1.4 when the very first stick-tables were introduced. It could
possibly slightly speed up stick-tables access thanks to one less indirection
though that should barely be measurable. The purpose here was to make code
more maintainable for the long term. The second thing he did in the same
spirit was to unify the internal API of the various actions used by TCP and
HTTP request/response actions. We had to fix several regressions in 1.6 that
were caused by these inconsistencies, so it was about time to get rid of
them. We've spotted a few minor glitches which should be addressed before
the release. There's no user-visible effect, it's just related to the way
code has to be written, and we now know what we want so it will be fast
and it was not worth delaying dev4 for this.
Some Lua trouble was reported (txn:close()) and there was some confusion,
including on my side, about how it ought to work. It turned out that even
the fixes uncovered other bugs that were hidden behind the first one, hence
the reason why it took a few more days than expected. In the end, we've
changed txn:close() so that it terminates the code flow, the action in
progress and the transaction. And since its name didn't make it obvious
that it was meant to immediately return, we renamed it to "txn:done()"
which more accurately says what it does (since it doesn't immediately close).
Marc-Antoine and Tsvetan, you'll have to update your code to replace txn:close
with txn:done. That's the benefit of working with dev code :-)
The doc was updated to add an intro to present the product. The purpose is
to kill haproxy-{en,fr}.txt which are totally obsolete but which still contain
useful information. This new intro tries to make it more obvious to newcomers
if haproxy is the product they need or not, and what product to consider
otherwise. Cyril has already updated his doc conversion utility dconv to
automatically publish the updated version. And the result looks quite good!
Regarding the doc, I discovered in my development directory that some docs
I wrote a looooonnnnngggg time ago were never committed. Shame on my monster
directory with hundreds of entries polluting git-status. So I fixed the
gitignore file to be smarter to ignore junk and I committed these old docs
which are still possibly useful for developers.
We accidently found some breakage in the peers v2 protocol. We didn't notice
it because the system is robust enough to reconnect after it breaks a
connection upon protocol violation, so it hardly had any impact except some
occasional latencies to resync. Emeric spotted the two bugs responsible for
this and fixed them.
There's also this long discussion about ECDSA+RSA+DSA certs. It's nice that
people participate to the discussion. While it's not very cool for Dave who
did a few different implementations, it's becoming clearer what type of issues
each model brings and how to address them. We should be able to address this
before the release, that would be great.
The only thing that remains to merge beyond this is Baptiste's state keeping
across reloads. I have the patchset now, it needs review and I'll merge it.
It doesn't interact with the rest so I'm not scared by merging it late. At
worst it may only impact those who use it, since the required code changes
were already merged early to make it work.
Ah I forgot one point, there's now a new data type stored in tables : a general
purpose tag (GPT0). The purpose is to use it the way people tend to use gpc0
today, ie: tag a key. For example most users use gpc0 as a flag using inc to
set it and clr to clear it. That was a bad design from me, I know. But gpc0 is
really meant to be an event counter and it even reports the increment rate.
When aggregating data between multiple nodes, it's a nightmare to use gpc0
because there's no way to know if it should be summed up or if only one entry
needs to be used due to this misuse. Now gpt0 is usable to tag, and gpc0 should
be used only for counting. Configs will continue to work of course, but there's
more choice to do things properly.
I'm not commenting on the bugs fixed since they were all discussed here.
We still have one month before the expected release date. There's no strict
date but as long as we can respect a schedule it helps decide what needs to
be merged and what not.
The work has clearly be more focused on quality than on risky features, and
I thank all participants for this. I guess we'll have a nice 1.6.
As usual, please report issues (and success) here.
Usual URLs below :
Site index : http://www.haproxy.org/
Sources : http://www.haproxy.org/download/1.6/src/devel/
Git repository : http://git.haproxy.org/git/haproxy.git/
Git Web browsing : http://git.haproxy.org/?p=haproxy.git
Changelog : http://www.haproxy.org/download/1.6/src/CHANGELOG
Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/intro-1.6.html
Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/configuration-1.6.html
Cheers,
Willy
it's been about 5 weeks since dev3. In the mean time, several issues were
met and some of them have led to a few internal changes.
We had 130 patches this time, half of which came from Thierry who did an
immense cleanup for the sake of making it easier to make the code evolve
later, and 20% of which were doc updates. This time only 20 bugs were
fixed, few of which were recent regressions, meaning we're converging
towards something clean.
Thierry did two major things. First, he reworked the way the data attached
to a sample is accessed internally so that stick-tables can now use samples
as their inputs. That removes a lot of duplicated casts that we used to have
since version 1.4 when the very first stick-tables were introduced. It could
possibly slightly speed up stick-tables access thanks to one less indirection
though that should barely be measurable. The purpose here was to make code
more maintainable for the long term. The second thing he did in the same
spirit was to unify the internal API of the various actions used by TCP and
HTTP request/response actions. We had to fix several regressions in 1.6 that
were caused by these inconsistencies, so it was about time to get rid of
them. We've spotted a few minor glitches which should be addressed before
the release. There's no user-visible effect, it's just related to the way
code has to be written, and we now know what we want so it will be fast
and it was not worth delaying dev4 for this.
Some Lua trouble was reported (txn:close()) and there was some confusion,
including on my side, about how it ought to work. It turned out that even
the fixes uncovered other bugs that were hidden behind the first one, hence
the reason why it took a few more days than expected. In the end, we've
changed txn:close() so that it terminates the code flow, the action in
progress and the transaction. And since its name didn't make it obvious
that it was meant to immediately return, we renamed it to "txn:done()"
which more accurately says what it does (since it doesn't immediately close).
Marc-Antoine and Tsvetan, you'll have to update your code to replace txn:close
with txn:done. That's the benefit of working with dev code :-)
The doc was updated to add an intro to present the product. The purpose is
to kill haproxy-{en,fr}.txt which are totally obsolete but which still contain
useful information. This new intro tries to make it more obvious to newcomers
if haproxy is the product they need or not, and what product to consider
otherwise. Cyril has already updated his doc conversion utility dconv to
automatically publish the updated version. And the result looks quite good!
Regarding the doc, I discovered in my development directory that some docs
I wrote a looooonnnnngggg time ago were never committed. Shame on my monster
directory with hundreds of entries polluting git-status. So I fixed the
gitignore file to be smarter to ignore junk and I committed these old docs
which are still possibly useful for developers.
We accidently found some breakage in the peers v2 protocol. We didn't notice
it because the system is robust enough to reconnect after it breaks a
connection upon protocol violation, so it hardly had any impact except some
occasional latencies to resync. Emeric spotted the two bugs responsible for
this and fixed them.
There's also this long discussion about ECDSA+RSA+DSA certs. It's nice that
people participate to the discussion. While it's not very cool for Dave who
did a few different implementations, it's becoming clearer what type of issues
each model brings and how to address them. We should be able to address this
before the release, that would be great.
The only thing that remains to merge beyond this is Baptiste's state keeping
across reloads. I have the patchset now, it needs review and I'll merge it.
It doesn't interact with the rest so I'm not scared by merging it late. At
worst it may only impact those who use it, since the required code changes
were already merged early to make it work.
Ah I forgot one point, there's now a new data type stored in tables : a general
purpose tag (GPT0). The purpose is to use it the way people tend to use gpc0
today, ie: tag a key. For example most users use gpc0 as a flag using inc to
set it and clr to clear it. That was a bad design from me, I know. But gpc0 is
really meant to be an event counter and it even reports the increment rate.
When aggregating data between multiple nodes, it's a nightmare to use gpc0
because there's no way to know if it should be summed up or if only one entry
needs to be used due to this misuse. Now gpt0 is usable to tag, and gpc0 should
be used only for counting. Configs will continue to work of course, but there's
more choice to do things properly.
I'm not commenting on the bugs fixed since they were all discussed here.
We still have one month before the expected release date. There's no strict
date but as long as we can respect a schedule it helps decide what needs to
be merged and what not.
The work has clearly be more focused on quality than on risky features, and
I thank all participants for this. I guess we'll have a nice 1.6.
As usual, please report issues (and success) here.
Usual URLs below :
Site index : http://www.haproxy.org/
Sources : http://www.haproxy.org/download/1.6/src/devel/
Git repository : http://git.haproxy.org/git/haproxy.git/
Git Web browsing : http://git.haproxy.org/?p=haproxy.git
Changelog : http://www.haproxy.org/download/1.6/src/CHANGELOG
Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/intro-1.6.html
Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/configuration-1.6.html
Cheers,
Willy