Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
00ea1d19
Commit
00ea1d19
authored
Jan 26, 2011
by
Quanah Gibson-Mount
Browse files
ITS#6794
parent
a461369b
Changes
4
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
00ea1d19
...
...
@@ -60,6 +60,7 @@ OpenLDAP 2.4.24 Engineering
Fixed slapd-bdb entry cache delete failure (ITS#6577)
Fixed slapd-bdb entry cache leak on multi-core systems (ITS#6660)
Fixed slapd-bdb error propagation to overlays (ITS#6633)
Fixed slapd-bdb slapadd -q with glued dbs (ITS#6794)
Fixed slapd-ldap debug output of timeout (ITS#6721)
Fixed slapd-ldap DNSSRV referral chaining (ITS#6565)
Fixed slapd-ldap chaining with bind failures (ITS#6607)
...
...
servers/slapd/back-bdb/tools.c
View file @
00ea1d19
...
...
@@ -163,9 +163,28 @@ int bdb_tool_entry_close(
ldap_pvt_thread_mutex_unlock
(
&
bdb_tool_trickle_mutex
);
#endif
ldap_pvt_thread_mutex_lock
(
&
bdb_tool_index_mutex
);
/* There might still be some threads starting */
while
(
bdb_tool_index_tcount
)
{
ldap_pvt_thread_cond_wait
(
&
bdb_tool_index_cond_main
,
&
bdb_tool_index_mutex
);
}
bdb_tool_index_tcount
=
slap_tool_thread_max
-
1
;
ldap_pvt_thread_cond_broadcast
(
&
bdb_tool_index_cond_work
);
/* Make sure all threads are stopped */
while
(
bdb_tool_index_tcount
)
{
ldap_pvt_thread_cond_wait
(
&
bdb_tool_index_cond_main
,
&
bdb_tool_index_mutex
);
}
ldap_pvt_thread_mutex_unlock
(
&
bdb_tool_index_mutex
);
bdb_tool_info
=
NULL
;
slapd_shutdown
=
0
;
ch_free
(
bdb_tool_index_threads
);
ch_free
(
bdb_tool_index_rec
);
bdb_tool_index_tcount
=
slap_tool_thread_max
-
1
;
}
if
(
eh
.
bv
.
bv_val
)
{
...
...
@@ -1256,9 +1275,14 @@ bdb_tool_index_task( void *ctx, void *ptr )
ldap_pvt_thread_cond_signal
(
&
bdb_tool_index_cond_main
);
ldap_pvt_thread_cond_wait
(
&
bdb_tool_index_cond_work
,
&
bdb_tool_index_mutex
);
ldap_pvt_thread_mutex_unlock
(
&
bdb_tool_index_mutex
);
if
(
slapd_shutdown
)
if
(
slapd_shutdown
)
{
bdb_tool_index_tcount
--
;
if
(
!
bdb_tool_index_tcount
)
ldap_pvt_thread_cond_signal
(
&
bdb_tool_index_cond_main
);
ldap_pvt_thread_mutex_unlock
(
&
bdb_tool_index_mutex
);
break
;
}
ldap_pvt_thread_mutex_unlock
(
&
bdb_tool_index_mutex
);
bdb_tool_index_threads
[
base
]
=
bdb_index_recrun
(
bdb_tool_ix_op
,
bdb_tool_info
,
bdb_tool_index_rec
,
bdb_tool_ix_id
,
base
);
...
...
tests/data/regressions/its6794/its6794
0 → 100755
View file @
00ea1d19
#! /bin/sh
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2011 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
echo
"running defines.sh"
.
$SRCDIR
/scripts/defines.sh
rm
-rf
$TESTDIR
mkdir
-p
$TESTDIR
$DBDIR1A
$DBDIR1B
$DBDIR1C
ITS
=
6794
ITSDIR
=
$DATADIR
/regressions/its
$ITS
ITSCONF
=
$ITSDIR
/slapd-glue.conf
echo
"Running multi-threaded slapadd in quick mode to build glued slapd databases..."
.
$CONFFILTER
$BACKEND
$MONITORDB
<
$ITSCONF
>
$CONF1
$SLAPADD
-q
-d
$LVL
-f
$CONF1
-l
$LDIFORDERED
>
$SLAPADDLOG1
2>&1
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"slapadd failed (
$RC
)!"
exit
$RC
fi
echo
"Starting slapd on TCP/IP port
$PORT1
..."
$SLAPD
-f
$CONF1
-h
$URI1
-d
$LVL
$TIMING
>
$LOG1
2>&1 &
PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$PID
read
foo
fi
KILLPIDS
=
"
$PID
"
sleep
1
echo
"Using ldapsearch to retrieve all the entries..."
for
i
in
0 1 2 3 4 5
;
do
$LDAPSEARCH
-b
"
$BASEDN
"
-h
$LOCALHOST
-p
$PORT1
>
$SEARCHOUT
2>&1
RC
=
$?
if
test
$RC
=
0
;
then
break
fi
echo
"Waiting 5 seconds for slapd to start..."
sleep
5
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Filtering ldapsearch results..."
$LDIFFILTER
-s
ldif
=
e <
$SEARCHOUT
>
$SEARCHFLT
echo
"Filtering original ldif used to create database..."
$LDIFFILTER
-s
ldif
=
e <
$LDIFGLUED
>
$LDIFFLT
echo
"Comparing filter output..."
$CMP
$SEARCHFLT
$LDIFFLT
>
$CMPOUT
if
test
$?
!=
0
;
then
echo
"comparison failed - database was not created correctly"
echo
$SEARCHFLT
$LDIFFLT
$DIFF
$SEARCHFLT
$LDIFFLT
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
1
fi
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
echo
">>>>> Test succeeded"
test
$KILLSERVERS
!=
no
&&
wait
exit
0
tests/data/regressions/its6794/slapd-glue.conf
0 → 100644
View file @
00ea1d19
# stand-alone slapd config -- for backglue testing (with indexing)
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2011 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
include
@
SCHEMADIR
@/
core
.
schema
include
@
SCHEMADIR
@/
cosine
.
schema
include
@
SCHEMADIR
@/
inetorgperson
.
schema
include
@
SCHEMADIR
@/
openldap
.
schema
include
@
SCHEMADIR
@/
nis
.
schema
pidfile
@
TESTDIR
@/
slapd
.
1
.
pid
argsfile
@
TESTDIR
@/
slapd
.
1
.
args
#mod#modulepath ../servers/slapd/back-@BACKEND@/
#mod#moduleload back_@BACKEND@.la
#monitormod#modulepath ../servers/slapd/back-monitor/
#monitormod#moduleload back_monitor.la
tool
-
threads
4
#######################################################################
# database definitions
#######################################################################
database
@
BACKEND
@
suffix
"ou=Information Technology Division,ou=People,dc=example,dc=com"
subordinate
rootdn
"cn=Manager, dc=example,dc=com"
#~null~#directory @TESTDIR@/db.1.a
#bdb#index objectclass eq
#bdb#index uid pres,eq,sub
#bdb#index cn,sn pres,eq,sub,subany
#hdb#index objectclass eq
#hdb#index uid pres,eq,sub
#hdb#index cn,sn pres,eq,sub,subany
#ndb#dbname db_1
#ndb#include @DATADIR@/ndb.conf
database
@
BACKEND
@
suffix
"ou=Groups,dc=example,dc=com"
subordinate
rootdn
"cn=Manager, dc=example,dc=com"
#~null~#directory @TESTDIR@/db.1.b
#bdb#index objectclass eq
#bdb#index uid pres,eq,sub
#bdb#index cn,sn pres,eq,sub,subany
#hdb#index objectclass eq
#hdb#index uid pres,eq,sub
#hdb#index cn,sn pres,eq,sub,subany
#ndb#dbname db_2
#ndb#include @DATADIR@/ndb.conf
database
@
BACKEND
@
suffix
"dc=example,dc=com"
rootdn
"cn=Manager, dc=example,dc=com"
rootpw
secret
#~null~#directory @TESTDIR@/db.1.c
#bdb#index objectclass eq
#bdb#index uid pres,eq,sub
#bdb#index cn pres,eq,sub,subany
#hdb#index objectclass eq
#hdb#index uid pres,eq,sub
#hdb#index cn pres,eq,sub,subany
#ndb#dbname db_3
#ndb#include @DATADIR@/ndb.conf
#monitor#database monitor
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment