Issue 8614 - Remove ability to build non-threaded slapd
Summary: Remove ability to build non-threaded slapd
Status: VERIFIED FIXED
Alias: None
Product: OpenLDAP
Classification: Unclassified
Component: slapd (show other issues)
Version: 2.4.44
Hardware: All All
: --- normal
Target Milestone: 2.5.0
Assignee: Quanah Gibson-Mount
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-03-10 21:43 UTC by bwright@intacct.com
Modified: 2020-10-14 21:09 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description bwright@intacct.com 2017-03-10 21:43:24 UTC
Full_Name: Brian Wright
Version: 2.4.44
OS: CentOS 6.8
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (209.136.225.254)


When configuring and compiling OpenLDAP using --with-threads=no flag, the test
suite fails to complete. It seems the test suite appears to be dependent on
threads for a successful run. Unfortunately, this test suite issue makes it
difficult to know if LDAP is functioning correctly when compiled without
threads.

Reproduce this by using the following:

./configure --with-threads=no
make depend
make
make test

Note, all backends fail at least one test when threads are disabled. For
example, if you set --enable-bdb=no --enable-hdb=no and leave only
--enable-mdb=yes, mdb itself fails the test suite. The same for bdb and hdb if
they are the only backends available.

If you plan on retaining --with-threads=no feature, someone might want to update
the test suite to properly test LDAP when threads are disabled. Or
alternatively, inform the user that 'make test' doesn't support testing LDAP
when threads are disabled.
Comment 1 Quanah Gibson-Mount 2017-03-17 16:41:49 UTC
moved from Incoming to Software Bugs
Comment 2 Quanah Gibson-Mount 2017-03-17 23:06:00 UTC
--On Friday, March 10, 2017 9:43 PM +0000 bwright@intacct.com wrote:

> If you plan on retaining --with-threads=no feature, someone might want to
> update the test suite to properly test LDAP when threads are disabled. Or
> alternatively, inform the user that 'make test' doesn't support testing
> LDAP when threads are disabled.

Thanks for the report and great suggestion.

--Quanah



--

Quanah Gibson-Mount
Product Architect
Symas Corporation
Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
<http://www.symas.com>


Comment 3 Ryan Tandy 2020-04-19 19:49:00 UTC
Since quite a while slapd doesn't compile at all without threads; nor do liblmdb, syncprov, etc. At this point we should probably just reject configuring slapd without threading, and maybe talk about dropping the non-thread-safe backends (shell and perl IIRC). BDB is gone for 2.5 and LMDB doesn't support a non-threaded build AFAIK.
Comment 4 Quanah Gibson-Mount 2020-04-20 16:57:12 UTC
(In reply to Ryan Tandy from comment #3)
> Since quite a while slapd doesn't compile at all without threads

Discussed with Howard.

For 2.5: No more libldap, remove the --with-threads=XX switch to configure, remove back-perl, remove back-shell

For libldap: Just stop building it (keep it in source tree).  Same with back-perl, back-shell.
Comment 5 Ryan Tandy 2020-04-20 17:10:20 UTC
We should keep the ability to specify the threads library by --with-threads=<impl>, and only remove the --without-threads option.

We're still going to ship some libldap.so -> libldap_r.so symlinks in order to avoid breaking everyone's Makefiles, correct?
Comment 6 Quanah Gibson-Mount 2020-04-20 17:21:05 UTC
(In reply to Ryan Tandy from comment #5)
> We should keep the ability to specify the threads library by
> --with-threads=<impl>, and only remove the --without-threads option.
> 
> We're still going to ship some libldap.so -> libldap_r.so symlinks in order
> to avoid breaking everyone's Makefiles, correct?

Yep to both.

We'll delete back-shell/back-perl from the 2.5 release tree specifically, no point in shipping them, but leave them in master for reference.
Comment 7 Quanah Gibson-Mount 2020-04-22 17:03:14 UTC
Need to check the various man pages etc about threads.  For example, slapd-ldap(5) has:

    Note: When  looping  back  to  the  same  instance  of  slapd(8),  each
       connection  requires  a  new thread; as a consequence, slapd(8) must be
       compiled with thread support, and the threads parameter may  need  some
       tuning;  in those cases, one may consider using slapd-relay(5) instead,
       which performs the relayed operation internally  and  thus  reuses  the
       same connection.


slapd always will have thread support in 2.5+, so the wording needs adjustment.
Comment 8 Howard Chu 2020-04-22 17:51:00 UTC
(In reply to Quanah Gibson-Mount from comment #7)
> Need to check the various man pages etc about threads.  For example,
> slapd-ldap(5) has:
> 
>     Note: When  looping  back  to  the  same  instance  of  slapd(8),  each
>        connection  requires  a  new thread; as a consequence, slapd(8) must
> be
>        compiled with thread support, and the threads parameter may  need 
> some
>        tuning;  in those cases, one may consider using slapd-relay(5)
> instead,
>        which performs the relayed operation internally  and  thus  reuses 
> the
>        same connection.
> 
> 
> slapd always will have thread support in 2.5+, so the wording needs
> adjustment.

For this particular example, just delete "slapd(8) must be compiled with thread support, and "
Comment 9 Quanah Gibson-Mount 2020-04-22 18:58:47 UTC
(In reply to Howard Chu from comment #8)

> For this particular example, just delete "slapd(8) must be compiled with
> thread support, and "

Sure... this wasn't a question of how to change the text, but a note that we need to take a thorough look through the documentation when making this change.
Comment 10 Quanah Gibson-Mount 2020-05-14 17:08:37 UTC
  • c91bbe6e 
by Quanah Gibson-Mount at 2020-05-14T16:30:17+00:00 
ITS#8614 - slapd must be built threaded
Comment 11 Quanah Gibson-Mount 2020-05-18 20:48:54 UTC
 • 83217b98 
by Quanah Gibson-Mount at 2020-05-18T19:37:47+00:00 
ITS#8614 - documentation updates