The javadoc of ServiceDiscoveryMechanism#getPartitions(baseDns) mentions that the Partition returned would only contains servers supporting all the provided baseDns.
Problem is that current service discovery implementations (static and replication) are actually considering this list of Dn as an any list instead of an allOf: if a server supports at least one of the provided Dn it'll be added to the partition.
As a result, incoming requests would be balanced among servers with different base DNs.
While at it, it might be worth considering other criteria for server inclusion/exclusion:
- supported capabilities such as controls/extensions
- access controls and proxy related users/groups
- SSL configuration
- LDAP schema
- backend types and indexing.