Nadezhda Ivanova (f0d391f6) at 15 Feb 18:11
Nadezhda Ivanova (1bb795ad) at 15 Feb 17:11
Hmm, you have a point, but I think this is not the only configuration directive that is present in meta, but is irrelevant in asyncmeta, conn-pool-max comes to mind. Should all of those be treated similarly? We do explicitly mentioned in the entry for suffix-massage that rewrite is not supported.
back-asyncmeta does not currently support the rewrite engine.
Nadezhda Ivanova (5fe93f47) at 15 Feb 13:39
ITS#10179 back-asyncmeta(5) man page incorrectly mentions rewrite
... and 15 more commits
This is a use-case that I might have missed in my testing. Anyway, simply allocating candidates for every operation and modifying all necessary functions to accept them as argument seems to work fine - I wasn't sure at first and it was more work, but it works, and saves us the linked list lookup.
Hi Ondrej, the patch following your advice, take a look when you can, thanks!
Nadezhda Ivanova (5cc992c5) at 08 Feb 13:11
ITS#10164 back-meta hangs when used with dynlist overlay
... and 12 more commits
Nadezhda Ivanova (6cb3063b) at 31 Jan 17:21
Why is op_extra such a hassle, or "trickery"? It is literally a coupe of lines of code to add it or find it. It seems to me faster and easier to implement than changing function definitions, and it seems safer since we are sure at any point in the code where the structure we need actually lives?
Ok, I'll rework and re-commit, thanks!
For some reason meta would skip calling meta_back_proxy_authz_cred if op->o_do_not_cache is set. This is redundant, since meta_back_proxy_authz_cred does have a check for this. When meta_back_proxy_authz_cred is skipped, the dn/cred combo is not initialized correctly, and instead of the proper sasl bind, meta attempts an anonymous bind, with dn, which the target server rejects. Invoking meta_back_proxy_authz_cred makes meta behave exactly like back-ldap in the same scenario, which seems to be the correct behavior.
Nadezhda Ivanova (de69a841) at 31 Jan 13:34
ITS#10165 back-meta fails to bind to target when proxying an intern...
Make sure every proxied operation has a separate candidates structure When an overlay issues an internal operation on receiving an entry from a previous operation, back-meta hangs in an endless thread_yeald cycle. This happens because back-meta uses a single candidates structure per thread to hold operation status. In the above case, it ends up proxying two operations simultaneously in the same thread, and the second operation corrupts the state for the first. This patch ensures that every operation has a separate candidates structure to maintain the state. This problem seems to have been there from the start, but is only discovered because dynlist starts an internal search for every group entry received for the original request - the problem will not appear if the internal op is started when the client op is received (on the way down), because in such cases the two operations are executed by meta consecutively and they do not mess up each other's data.
I would like the reviewers' opinion - originally meta used the thread context to store that data. I am not sure why this is a good approach, but I kept it, making sure to use the op as a key, so that each op has it's own. As I understand the number of keys is limited to MAXKEYS, potentially limiting the number of concurrent ops executed by a single thread inside meta. It seems to me extremely unlikely to have such a large number, but it is possible alternatively to hold the candidates in op_extra instead.
Nadezhda Ivanova (44791554) at 31 Jan 12:58
ITS#10164 back-meta hangs when used with dynlist overlay
Nadezhda Ivanova (5a45cf60) at 31 Jan 12:31
ITS#10014 Non blocking TLS session accept for mbedtls handle
... and 40 more commits
Nadezhda Ivanova (8260500e) at 30 Nov 12:10
ITS#10109 Pass operation to slap_get_csn()
... and 48 more commits
Nadezhda Ivanova (6cbcfa0a) at 19 Jul 18:12
Nadezhda Ivanova (e5368f72) at 11 Jul 12:55
ITS#10076 suffixmassage in back-asyncmeta does not handle empty rem...
... and 3 more commits