Skip to content

Fix support for high-availability LDAP authentication (2+ servers) - #100

Open
flowln wants to merge 1 commit into
bluesky:mainfrom
flowln:fix/ha-ldap-connection
Open

flowln wants to merge 1 commit into
bluesky:mainfrom
flowln:fix/ha-ldap-connection

Conversation

@flowln

@flowln flowln commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

When using active=False, the ServerPool object uses only an index of a server (in this case, an index of a random server), without checking whether that server is currently active (reachable) (ref).

This means that in a setup with two or more servers in the pool, if one or more of them are down (e.g. for maintenance), there's a random chance that server is picked, resulting in an error.

Setting 'active' to an integer prevents that by making the pool loop through all servers to check which ones are available, but does not block the thread indefinitely as setting it to True would. This is corroborated by the documentation on ServerPool.

Summary of Changes for Release Notes

Fix support for high-availability LDAP authentication (2+ servers)

Fixed

When using 'active=False', the ServerPool object returns only an index
of a server to use (in this case, an index of a random server), without
checking whether that server is currently active (reachable) [1].

This means that in a setup with two or more servers in the pool, if one
or more of them are down (e.g. for maintenance), there's a random chance
that server is picked, resulting in an error.

Setting 'active' to an integer prevents that by making the pool loop
through all servers to check which ones are available, but does not block
the thread indefinitely as setting it to 'True' would.

[1] - https://github.com/cannatag/ldap3/blob/c5be4b6f/ldap3/core/pooling.py#L95

Signed-off-by: Sofia Donato Ferreira <sofia.ferreira@lnls.br>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant