<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/haproxy.git/include/haproxy/pattern.h, branch master</title>
<subtitle>github.com: haproxy/haproxy.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/'/>
<entry>
<title>CLEANUP: pattern: remove export of non-existent function pattern_delete()</title>
<updated>2021-05-25T06:44:48+00:00</updated>
<author>
<name>Dragan Dosen</name>
<email>ddosen@haproxy.com</email>
</author>
<published>2021-05-21T15:01:08+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=3e6690a55513f2c10dfc7875b9ec2bb5333dee5f'/>
<id>3e6690a55513f2c10dfc7875b9ec2bb5333dee5f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>CLEANUP: pattern: remove the unused and dangerous pat_ref_reload()</title>
<updated>2021-05-11T14:49:55+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2021-05-11T14:49:55+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=da7f11bfb58c42c024cd4ba5aa32b008c1390f56'/>
<id>da7f11bfb58c42c024cd4ba5aa32b008c1390f56</id>
<content type='text'>
This function was not used anymore after the atomic updates were
implemented in 2.3, and it must not be used given that it does not
yield and can easily make the process hang for tens of seconds on
large acls/maps. Let's remove it before someone uses it as an
example to implement something else!
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This function was not used anymore after the atomic updates were
implemented in 2.3, and it must not be used given that it does not
yield and can easily make the process hang for tens of seconds on
large acls/maps. Let's remove it before someone uses it as an
example to implement something else!
</pre>
</div>
</content>
</entry>
<entry>
<title>MINOR: pattern: support purging arbitrary ranges of generations</title>
<updated>2021-04-30T13:36:31+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2021-04-30T11:19:37+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=a13afe6535e29e7dfe9a488cc2aed7795ed5bbf1'/>
<id>a13afe6535e29e7dfe9a488cc2aed7795ed5bbf1</id>
<content type='text'>
Instead of being able to purge only values older than a specific value,
let's support arbitrary ranges and make pat_ref_purge_older() just be
one special case of this one.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of being able to purge only values older than a specific value,
let's support arbitrary ranges and make pat_ref_purge_older() just be
one special case of this one.
</pre>
</div>
</content>
</entry>
<entry>
<title>CLEANUP: pattern: make all pattern tables read-only</title>
<updated>2021-04-10T15:49:41+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2021-04-10T15:44:27+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=9057a0026ea9b40744f2eaa91d9540c9bd410079'/>
<id>9057a0026ea9b40744f2eaa91d9540c9bd410079</id>
<content type='text'>
Interestingly, all arrays used to declare patterns were read-write while
only hard-coded. Let's mark them const so that they move from data to
rodata and don't risk to experience false sharing.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Interestingly, all arrays used to declare patterns were read-write while
only hard-coded. Let's mark them const so that they move from data to
rodata and don't risk to experience false sharing.
</pre>
</div>
</content>
</entry>
<entry>
<title>CLEANUP: atomic: add an explicit _FETCH variant for add/sub/and/or</title>
<updated>2021-04-07T16:18:37+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2021-04-06T09:44:07+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=1db427399c995a474c531a85e648af18033682b2'/>
<id>1db427399c995a474c531a85e648af18033682b2</id>
<content type='text'>
Currently our atomic ops return a value but it's never known whether
the fetch is done before or after the operation, which causes some
confusion each time the value is desired. Let's create an explicit
variant of these operations suffixed with _FETCH to explicitly mention
that the fetch occurs after the operation, and make use of it at the
few call places.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently our atomic ops return a value but it's never known whether
the fetch is done before or after the operation, which causes some
confusion each time the value is desired. Let's create an explicit
variant of these operations suffixed with _FETCH to explicitly mention
that the fetch occurs after the operation, and make use of it at the
few call places.
</pre>
</div>
</content>
</entry>
<entry>
<title>MINOR: pattern: add the missing generation ID manipulation functions</title>
<updated>2021-01-15T13:41:16+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2021-01-15T13:40:04+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=31ffe9fad095166f2a3ccb967aa177e96731d83c'/>
<id>31ffe9fad095166f2a3ccb967aa177e96731d83c</id>
<content type='text'>
The functions needed to commit a pattern file generation number or
increase it were still missing. Better not have the caller play with
these.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The functions needed to commit a pattern file generation number or
increase it were still missing. Better not have the caller play with
these.
</pre>
</div>
</content>
</entry>
<entry>
<title>CLEANUP: pattern: rename pat_ref_commit() to pat_ref_commit_elt()</title>
<updated>2021-01-15T13:11:59+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2021-01-15T13:11:59+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=dc2410d093c0c2eef45a5617671a9e97a6f06a00'/>
<id>dc2410d093c0c2eef45a5617671a9e97a6f06a00</id>
<content type='text'>
It's about the third time I get confused by these functions, half of
which manipulate the reference as a whole and those manipulating only
an entry. For me "pat_ref_commit" means committing the pattern reference,
not just an element, so let's rename it. A number of other ones should
really be renamed before 2.4 gets released :-/
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's about the third time I get confused by these functions, half of
which manipulate the reference as a whole and those manipulating only
an entry. For me "pat_ref_commit" means committing the pattern reference,
not just an element, so let's rename it. A number of other ones should
really be renamed before 2.4 gets released :-/
</pre>
</div>
</content>
</entry>
<entry>
<title>CLEANUP: assorted typo fixes in the code and comments</title>
<updated>2020-12-21T10:24:48+00:00</updated>
<author>
<name>Ilya Shipitsin</name>
<email>chipitsine@gmail.com</email>
</author>
<published>2020-12-20T20:16:17+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=f38a01884ae7c378a1f02bdcaddcc8be53a2b3f6'/>
<id>f38a01884ae7c378a1f02bdcaddcc8be53a2b3f6</id>
<content type='text'>
This is 13n iteration of typo fixes
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is 13n iteration of typo fixes
</pre>
</div>
</content>
</entry>
<entry>
<title>MINOR: pattern: add pat_ref_purge_older() to purge old entries</title>
<updated>2020-11-05T18:27:09+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2020-10-28T17:23:49+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=94b9abe2009cc5f2f35bee6491e424ba1fcaec61'/>
<id>94b9abe2009cc5f2f35bee6491e424ba1fcaec61</id>
<content type='text'>
This function will be usable to purge at most a specified number of old
entries from a reference. Entries are declared old if their generation
number is in the past compared to the one passed in argument. This will
ease removal of early entries when new ones have been appended.

We also call malloc_trim() when available, at the end of the series,
because this is one place where there is a lot of memory to save. Reloads
of 1M IP addresses used in an ACL made the process grow up to 1.7 GB RSS
after 10 reloads and roughly stabilize there without this call, versus
only 260 MB when the call is present. Sadly there is no direct equivalent
for jemalloc, which stabilizes around 800MB-1GB.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This function will be usable to purge at most a specified number of old
entries from a reference. Entries are declared old if their generation
number is in the past compared to the one passed in argument. This will
ease removal of early entries when new ones have been appended.

We also call malloc_trim() when available, at the end of the series,
because this is one place where there is a lot of memory to save. Reloads
of 1M IP addresses used in an ACL made the process grow up to 1.7 GB RSS
after 10 reloads and roughly stabilize there without this call, versus
only 260 MB when the call is present. Sadly there is no direct equivalent
for jemalloc, which stabilizes around 800MB-1GB.
</pre>
</div>
</content>
</entry>
<entry>
<title>MINOR: pattern: implement pat_ref_load() to load a pattern at a given generation</title>
<updated>2020-11-05T18:27:09+00:00</updated>
<author>
<name>Willy Tarreau</name>
<email>w@1wt.eu</email>
</author>
<published>2020-10-29T08:21:43+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/haproxy.git/commit/?id=1a6857b9c198ff3f22ae0b3d1d09f419110939d8'/>
<id>1a6857b9c198ff3f22ae0b3d1d09f419110939d8</id>
<content type='text'>
pat_ref_load() basically combines pat_ref_append() and pat_ref_commit().
It's very similar to pat_ref_add() except that it also allows to set the
generation ID and the line number. pat_ref_add() was modified to directly
rely on it to avoid code duplication. Note that a previous declaration
of pat_ref_load() was removed as it was just a leftover of an earlier
incarnation of something possibly similar, so no existing functionality
was changed here.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
pat_ref_load() basically combines pat_ref_append() and pat_ref_commit().
It's very similar to pat_ref_add() except that it also allows to set the
generation ID and the line number. pat_ref_add() was modified to directly
rely on it to avoid code duplication. Note that a previous declaration
of pat_ref_load() was removed as it was just a leftover of an earlier
incarnation of something possibly similar, so no existing functionality
was changed here.
</pre>
</div>
</content>
</entry>
</feed>
