(ITS#5351) Contribution: PIM + text message (SMS) schema
by kari.mattsson@trivore.com
Full_Name: Kari Mattsson
Version: 2.3/2.4
OS: GNU/Linux
URL: http://mysync.fi/contrib/sync4j-sif.schema
Submission from: (NULL) (78.27.90.244)
Sync4j Interchange Formats LDAP schema - sync4j-sif.schema
The URL contains the schema.
Chapter below is from Funambol, creator of SIF format, describing SIF.
My purpose and motivation in creating this schema is to promote OpenLDAP as the
primary data store for any OMA DS mobile device data synchronisation service.
The Sync4j Interchange Format (SIF) is a way to represent PIM data coming from
different clients in a common structure to make it easier information exchange.
SIF format is based on a XML representation of PIM data.
The goal we wanted to achieve with this representation (as opposed to other
standards) is having a simple xml structure representing any possible PIM
properties. The basic idea is that every PIM object (contact, calendar, and so
on) has properties in the form name-value. Therefore, in a SIF document tags
represent properties and tags content represent their values. We have a SIF
representation for each type of PIM data. They are SIF-C for contacts, SIF-E for
events, SIF-T for tasks and SIF-N for notes.
There is also an additional SIF-SMS for text messages. This way text message
data can be stored in LDAP.
This schema is not endorsed/supported/promoted by Funambol, and I'm not
affiliated with them either.
This contribution is the original work of Kari Mattsson kari-dot-mattsson @
trivore-dot-com. This is not subject to any license of Trivore Corp.
15 years, 8 months
Re: (ITS#5332) multimaster replication crash
by ghenry@suretecsystems.com
> # compile openldap
> ./configure
> make
This should be:
./configure
make depend
make
make test (after of course copying you hacked test script).
>
> # prepare tests
> cd tests
> # replace original test
> cp /download/test050-syncrepl-multimaster scripts/
>
> # create input ldifs
> mkdir scripts/data/ldifs/
> cd scripts/data/ldifs
> # this will create several ldif files, each containing 1000 users
> /download/usersldif2.py | split -l 20000 -
> cd -
>
> # now run modified test:
> ./run test050-syncrepl-multimaster
>
> # ... now wait and see ...
> ...
> Start gdb for:
> PIDS: 13801 13814 13824
> Added: xaa in 76.78 s - OK (# of slapds: 3)
> Added: xab in 129.22 s - OK (# of slapds: 3)
> ./scripts/test050-syncrepl-multimaster: line 621: 13824 Segmenation
> fault $SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING >> $LOG3 2>&1 (wd:
> ~/packages/BUILD/openldap-2.4.7/tests/testrun/con2)
> Added: xac in 176.26 s - OK (# of slapds: 2)
> At least one slapd died ... test failed
> ./scripts/test050-syncrepl-multimaster: line 638: kill: (13824) - No
> such process
>
>
> As far as I can see there are 2 possible outcomes:
>
> (At least) one of the slapd processes crashes (see above), or it get's
> caught in an endless loop (using up 100% CPU usage).
>
> Bye,
> Marcel
>
> --
> ----
> Dipl.-Inf. Marcel Ritter
> Linux/Novell
> Regionales Rechenzentrum Erlangen
> Tel: 09131 / 85-27808
> E-Mail: Marcel.Ritter(a)rrze.uni-erlangen.de
> ----
> Unix _IS_ user friendly... It's just selective about who its friends are.
>
>
>
> --------------030505030300050004060200
> Content-Type: text/x-log;
> name="configure.log"
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline;
> filename="configure.log"
>
> Configuring OpenLDAP 2.4.7-Release ...
> checking build system type... x86_64-unknown-linux-gnu
> checking host system type... x86_64-unknown-linux-gnu
> checking target system type... x86_64-unknown-linux-gnu
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking configure arguments... done
> checking for cc... cc
> checking for ar... ar
> checking for style of include used by make... GNU
> checking for C compiler default output file name... a.out
> checking whether the C compiler works... yes
> checking whether we are cross compiling... no
> checking for suffix of executables...
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether cc accepts -g... yes
> checking for cc option to accept ANSI C... none needed
> checking dependency style of cc... none
> checking for a sed that does not truncate output... /usr/bin/sed
> checking for egrep... grep -E
> checking for ld used by cc... /usr/x86_64-suse-linux/bin/ld
> checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes
> checking for /usr/x86_64-suse-linux/bin/ld option to reload object
> files... -r
> checking for BSD-compatible nm... /usr/bin/nm -B
> checking whether ln -s works... yes
> checking how to recognise dependent libraries... pass_all
> checking how to run the C preprocessor... cc -E
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking dlfcn.h usability... yes
> checking dlfcn.h presence... yes
> checking for dlfcn.h... yes
> checking the maximum length of command line arguments... 32768
> checking command to parse /usr/bin/nm -B output from cc object... ok
> checking for objdir... .libs
> checking for ranlib... ranlib
> checking for strip... strip
> checking if cc static flag works... yes
> checking if cc supports -fno-rtti -fno-exceptions... no
> checking for cc option to produce PIC... -fPIC
> checking if cc PIC flag -fPIC works... yes
> checking if cc supports -c -o file.o... yes
> checking whether the cc linker (/usr/x86_64-suse-linux/bin/ld -m
> elf_x86_64) supports shared libraries... yes
> checking whether -lc should be explicitly linked in... no
> checking dynamic linker characteristics... GNU/Linux ld.so
> checking how to hardcode library paths into programs... immediate
> checking whether stripping libraries is possible... yes
> checking for shl_load... no
> checking for shl_load in -ldld... no
> checking for dlopen... no
> checking for dlopen in -ldl... yes
> checking whether a program can dlopen itself... yes
> checking whether a statically linked program can dlopen itself... yes
> checking if libtool supports shared libraries... yes
> checking whether to build shared libraries... yes
> checking whether to build static libraries... yes
> configure: creating libtool
> checking how to run the C preprocessor... cc -E
> checking for be_app in -lbe... no
> checking whether we are using the GNU C compiler... (cached) yes
> checking whether cc accepts -g... (cached) yes
> checking for cc option to accept ANSI C... (cached) none needed
> checking dependency style of cc... (cached) none
> checking for cc depend flag... -M
> checking for afopen in -ls... no
> checking for EBCDIC... no
> checking for ANSI C header files... yes
> checking for dirent.h that defines DIR... yes
> checking for library containing opendir... none required
> checking for sys/wait.h that is POSIX.1 compatible... yes
> checking whether termios.h defines TIOCGWINSZ... no
> checking whether sys/ioctl.h defines TIOCGWINSZ... yes
> checking arpa/inet.h usability... yes
> checking arpa/inet.h presence... yes
> checking for arpa/inet.h... yes
> checking arpa/nameser.h usability... yes
> checking arpa/nameser.h presence... yes
> checking for arpa/nameser.h... yes
> checking assert.h usability... yes
> checking assert.h presence... yes
> checking for assert.h... yes
> checking bits/types.h usability... yes
> checking bits/types.h presence... yes
> checking for bits/types.h... yes
> checking conio.h usability... no
> checking conio.h presence... no
> checking for conio.h... no
> checking crypt.h usability... yes
> checking crypt.h presence... yes
> checking for crypt.h... yes
> checking direct.h usability... no
> checking direct.h presence... no
> checking for direct.h... no
> checking errno.h usability... yes
> checking errno.h presence... yes
> checking for errno.h... yes
> checking fcntl.h usability... yes
> checking fcntl.h presence... yes
> checking for fcntl.h... yes
> checking filio.h usability... no
> checking filio.h presence... no
> checking for filio.h... no
> checking getopt.h usability... yes
> checking getopt.h presence... yes
> checking for getopt.h... yes
> checking grp.h usability... yes
> checking grp.h presence... yes
> checking for grp.h... yes
> checking io.h usability... no
> checking io.h presence... no
> checking for io.h... no
> checking libutil.h usability... no
> checking libutil.h presence... no
> checking for libutil.h... no
> checking limits.h usability... yes
> checking limits.h presence... yes
> checking for limits.h... yes
> checking locale.h usability... yes
> checking locale.h presence... yes
> checking for locale.h... yes
> checking malloc.h usability... yes
> checking malloc.h presence... yes
> checking for malloc.h... yes
> checking for memory.h... (cached) yes
> checking psap.h usability... no
> checking psap.h presence... no
> checking for psap.h... no
> checking pwd.h usability... yes
> checking pwd.h presence... yes
> checking for pwd.h... yes
> checking process.h usability... no
> checking process.h presence... no
> checking for process.h... no
> checking sgtty.h usability... yes
> checking sgtty.h presence... yes
> checking for sgtty.h... yes
> checking shadow.h usability... yes
> checking shadow.h presence... yes
> checking for shadow.h... yes
> checking stddef.h usability... yes
> checking stddef.h presence... yes
> checking for stddef.h... yes
> checking for string.h... (cached) yes
> checking for strings.h... (cached) yes
> checking sysexits.h usability... yes
> checking sysexits.h presence... yes
> checking for sysexits.h... yes
> checking sys/file.h usability... yes
> checking sys/file.h presence... yes
> checking for sys/file.h... yes
> checking sys/filio.h usability... no
> checking sys/filio.h presence... no
> checking for sys/filio.h... no
> checking sys/fstyp.h usability... no
> checking sys/fstyp.h presence... no
> checking for sys/fstyp.h... no
> checking sys/errno.h usability... yes
> checking sys/errno.h presence... yes
> checking for sys/errno.h... yes
> checking sys/ioctl.h usability... yes
> checking sys/ioctl.h presence... yes
> checking for sys/ioctl.h... yes
> checking sys/param.h usability... yes
> checking sys/param.h presence... yes
> checking for sys/param.h... yes
> checking sys/privgrp.h usability... no
> checking sys/privgrp.h presence... no
> checking for sys/privgrp.h... no
> checking sys/resource.h usability... yes
> checking sys/resource.h presence... yes
> checking for sys/resource.h... yes
> checking sys/select.h usability... yes
> checking sys/select.h presence... yes
> checking for sys/select.h... yes
> checking sys/socket.h usability... yes
> checking sys/socket.h presence... yes
> checking for sys/socket.h... yes
> checking for sys/stat.h... (cached) yes
> checking sys/syslog.h usability... yes
> checking sys/syslog.h presence... yes
> checking for sys/syslog.h... yes
> checking sys/time.h usability... yes
> checking sys/time.h presence... yes
> checking for sys/time.h... yes
> checking for sys/types.h... (cached) yes
> checking sys/uio.h usability... yes
> checking sys/uio.h presence... yes
> checking for sys/uio.h... yes
> checking sys/vmount.h usability... no
> checking sys/vmount.h presence... no
> checking for sys/vmount.h... no
> checking syslog.h usability... yes
> checking syslog.h presence... yes
> checking for syslog.h... yes
> checking termios.h usability... yes
> checking termios.h presence... yes
> checking for termios.h... yes
> checking for unistd.h... (cached) yes
> checking utime.h usability... yes
> checking utime.h presence... yes
> checking for utime.h... yes
> checking for resolv.h... yes
> checking for netinet/tcp.h... yes
> checking for sys/ucred.h... no
> checking for sigaction... yes
> checking for sigset... yes
> checking for socket... yes
> checking for select... yes
> checking for sys/select.h... (cached) yes
> checking for sys/socket.h... (cached) yes
> checking types of arguments for select... int,fd_set *,struct timeval *
> checking for poll... yes
> checking poll.h usability... yes
> checking poll.h presence... yes
> checking for poll.h... yes
> checking sys/poll.h usability... yes
> checking sys/poll.h presence... yes
> checking for sys/poll.h... yes
> checking sys/epoll.h usability... yes
> checking sys/epoll.h presence... yes
> checking for sys/epoll.h... yes
> checking for epoll system call... yes
> checking sys/devpoll.h usability... no
> checking sys/devpoll.h presence... no
> checking for sys/devpoll.h... no
> checking declaration of sys_errlist... yes
> checking for strerror... yes
> checking for strerror_r... yes
> checking non-posix strerror_r... no
> checking for regex.h... yes
> checking for library containing regfree... none required
> checking for compatible POSIX regex... yes
> checking sys/uuid.h usability... no
> checking sys/uuid.h presence... no
> checking for sys/uuid.h... no
> checking uuid/uuid.h usability... yes
> checking uuid/uuid.h presence... yes
> checking for uuid/uuid.h... yes
> checking for library containing uuid_generate... -luuid
> checking for resolver link (default)... no
> checking for resolver link (-lresolv)... yes
> checking for hstrerror... yes
> checking for getaddrinfo... yes
> checking for getnameinfo... yes
> checking for gai_strerror... yes
> checking for inet_ntop... yes
> checking INET6_ADDRSTRLEN... yes
> checking struct sockaddr_storage... yes
> checking sys/un.h usability... yes
> checking sys/un.h presence... yes
> checking for sys/un.h... yes
> checking openssl/ssl.h usability... yes
> checking openssl/ssl.h presence... yes
> checking for openssl/ssl.h... yes
> checking for SSL_library_init in -lssl... yes
> checking OpenSSL library version (CRL checking capability)... yes
> checking for _beginthread... no
> checking pthread.h usability... yes
> checking pthread.h presence... yes
> checking for pthread.h... yes
> checking POSIX thread version... 10
> checking for LinuxThreads pthread.h... no
> checking for GNU Pth pthread.h... no
> checking sched.h usability... yes
> checking sched.h presence... yes
> checking for sched.h... yes
> checking for pthread_create in default libraries... no
> checking for pthread link with -kthread... no
> checking for pthread link with -pthread... yes
> checking for sched_yield... yes
> checking for pthread_yield... yes
> checking for thr_yield... no
> checking for pthread_kill... yes
> checking for pthread_rwlock_destroy with <pthread.h>... yes
> checking for pthread_detach with <pthread.h>... yes
> checking for pthread_setconcurrency... yes
> checking for pthread_getconcurrency... yes
> checking for thr_setconcurrency... no
> checking for thr_getconcurrency... no
> checking for pthread_kill_other_threads_np... no
> checking for LinuxThreads implementation... no
> checking for LinuxThreads consistency... no
> checking if pthread_create() works... yes
> checking if select yields when using pthreads... yes
> checking for thread specific errno... yes
> checking for thread specific h_errno... yes
> checking for ctime_r... yes
> checking for gethostbyname_r... yes
> checking for gethostbyaddr_r... yes
> checking number of arguments of ctime_r... 2
> checking number of arguments of gethostbyname_r... 6
> checking number of arguments of gethostbyaddr_r... 8
> checking db.h usability... yes
> checking db.h presence... yes
> checking for db.h... yes
> checking for Berkeley DB major version... 4
> checking for Berkeley DB minor version... 5
> checking for Berkeley DB link (-ldb-4.5)... yes
> checking for Berkeley DB version match... yes
> checking for Berkeley DB thread support... yes
> checking Berkeley DB version for BDB/HDB backends... yes
> checking for openlog... yes
> checking unicode/utypes.h usability... no
> checking unicode/utypes.h presence... no
> checking for unicode/utypes.h... no
> configure: WARNING: ICU not available
> checking sasl/sasl.h usability... yes
> checking sasl/sasl.h presence... yes
> checking for sasl/sasl.h... yes
> checking sasl.h usability... no
> checking sasl.h presence... no
> checking for sasl.h... no
> checking for sasl_client_init in -lsasl2... yes
> checking Cyrus SASL library version... yes
> checking for sasl_version... yes
> checking fetch(3) library... no
> checking for setproctitle... no
> checking for setproctitle in -lutil... no
> checking for mode_t... yes
> checking for off_t... yes
> checking for pid_t... yes
> checking for ssize_t... yes
> checking for caddr_t... yes
> checking for size_t... yes
> checking for long long... yes
> checking for ptrdiff_t... yes
> checking for socklen_t... yes
> checking the type of arg 3 to accept()... socklen_t *
> checking return type of signal handlers... void
> checking for sig_atomic_t... yes
> checking for uid_t in sys/types.h... yes
> checking whether time.h and sys/time.h may both be included... yes
> checking whether struct tm is in sys/time.h or time.h... time.h
> checking for struct stat.st_blksize... yes
> checking for struct passwd.pw_gecos... yes
> checking for struct passwd.pw_passwd... yes
> checking if toupper() requires islower()... no
> checking for an ANSI C-conforming const... yes
> checking if compiler understands volatile... yes
> checking whether byte ordering is bigendian... no
> checking for short... yes
> checking size of short... 2
> checking for int... yes
> checking size of int... 4
> checking for long... yes
> checking size of long... 8
> checking for long long... (cached) yes
> checking size of long long... 8
> checking for wchar_t... yes
> checking size of wchar_t... 4
> checking for working memcmp... yes
> checking for strftime... yes
> checking for inet_aton()... yes
> checking for _spawnlp... no
> checking for _snprintf... no
> checking for _vsnprintf... no
> checking for vprintf... yes
> checking for _doprnt... no
> checking for snprintf... yes
> checking for vsnprintf... yes
> checking for bcopy... yes
> checking for closesocket... no
> checking for chroot... yes
> checking for endgrent... yes
> checking for endpwent... yes
> checking for fcntl... yes
> checking for flock... yes
> checking for fstat... yes
> checking for getdtablesize... yes
> checking for getgrgid... yes
> checking for gethostname... yes
> checking for getpass... yes
> checking for getpassphrase... no
> checking for getpwuid... yes
> checking for getpwnam... yes
> checking for getspnam... yes
> checking for gettimeofday... yes
> checking for initgroups... yes
> checking for inet_ntoa_b... no
> checking for ioctl... yes
> checking for lockf... yes
> checking for memcpy... yes
> checking for memmove... yes
> checking for memrchr... yes
> checking for mkstemp... yes
> checking for mktemp... yes
> checking for pipe... yes
> checking for read... yes
> checking for recv... yes
> checking for recvfrom... yes
> checking for setpwfile... no
> checking for setgid... yes
> checking for setegid... yes
> checking for setsid... yes
> checking for setuid... yes
> checking for seteuid... yes
> checking for signal... yes
> checking for strdup... yes
> checking for strpbrk... yes
> checking for strrchr... yes
> checking for strsep... yes
> checking for strstr... yes
> checking for strtol... yes
> checking for strtoul... yes
> checking for strtoq... yes
> checking for strtouq... yes
> checking for strtoll... yes
> checking for strspn... yes
> checking for sysconf... yes
> checking for waitpid... yes
> checking for wait4... yes
> checking for write... yes
> checking for send... yes
> checking for sendmsg... yes
> checking for sendto... yes
> checking for getopt... yes
> checking for getpeereid... no
> checking for getpeerucred... no
> checking for struct msghdr.msg_accrightslen... no
> checking for struct msghdr.msg_control... yes
> checking for struct stat.st_fstype... no
> checking for struct stat.st_vfstype... no
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: creating doc/Makefile
> config.status: creating doc/man/Makefile
> config.status: creating doc/man/man1/Makefile
> config.status: creating doc/man/man3/Makefile
> config.status: creating doc/man/man5/Makefile
> config.status: creating doc/man/man8/Makefile
> config.status: creating clients/Makefile
> config.status: creating clients/tools/Makefile
> config.status: creating include/Makefile
> config.status: creating libraries/Makefile
> config.status: creating libraries/liblber/Makefile
> config.status: creating libraries/libldap/Makefile
> config.status: creating libraries/libldap_r/Makefile
> config.status: creating libraries/liblunicode/Makefile
> config.status: creating libraries/liblutil/Makefile
> config.status: creating libraries/librewrite/Makefile
> config.status: creating servers/Makefile
> config.status: creating servers/slapd/Makefile
> config.status: creating servers/slapd/back-bdb/Makefile
> config.status: creating servers/slapd/back-dnssrv/Makefile
> config.status: creating servers/slapd/back-hdb/Makefile
> config.status: creating servers/slapd/back-ldap/Makefile
> config.status: creating servers/slapd/back-ldif/Makefile
> config.status: creating servers/slapd/back-meta/Makefile
> config.status: creating servers/slapd/back-monitor/Makefile
> config.status: creating servers/slapd/back-null/Makefile
> config.status: creating servers/slapd/back-passwd/Makefile
> config.status: creating servers/slapd/back-perl/Makefile
> config.status: creating servers/slapd/back-relay/Makefile
> config.status: creating servers/slapd/back-shell/Makefile
> config.status: creating servers/slapd/back-sql/Makefile
> config.status: creating servers/slapd/shell-backends/Makefile
> config.status: creating servers/slapd/slapi/Makefile
> config.status: creating servers/slapd/overlays/Makefile
> config.status: creating tests/Makefile
> config.status: creating tests/run
> config.status: creating tests/progs/Makefile
> config.status: creating include/portable.h
> config.status: creating include/ldap_features.h
> config.status: creating include/lber_types.h
> config.status: executing depfiles commands
> config.status: executing default commands
> Making servers/slapd/backends.c
> Add config ...
> Add ldif ...
> Add monitor ...
> Add bdb ...
> Add hdb ...
> Add relay ...
> Making servers/slapd/overlays/statover.c
> Add seqmod ...
> Add syncprov ...
> Please run "make depend" to build dependencies
>
> --------------030505030300050004060200
> Content-Type: text/x-python;
> name="usersldif2.py"
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline;
> filename="usersldif2.py"
>
> #!/usr/bin/env python
>
> import string
> import sys
>
> uids=[]
>
> for lineno in xrange(0,100000):
>
> print """dn: uid=test%(lineno)s,ou=People,dc=example,dc=com
> objectClass: top
> objectClass: posixAccount
> objectClass: shadowAccount
> objectClass: inetOrgPerson
> cn: User %(lineno)s
> gecos: User %(lineno)s
> gidNumber: %(lineno)s
> homeDirectory: /home/test%(lineno)s
> loginShell: /bin/bash
> shadowInactive: -1
> shadowLastChange: 12570
> shadowMax: 99999
> shadowMin: 0
> shadowWarning: 7
> sn: test%(lineno)s
> uid: test%(lineno)s
> uidNumber: %(lineno)s
> userPassword: {crypt}WNu26PDD.aYC.
> """ % { 'lineno': lineno }
>
> --------------030505030300050004060200
> Content-Type: text/plain;
> name="test050-syncrepl-multimaster"
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline;
> filename="test050-syncrepl-multimaster"
>
> #! /bin/sh
> # $OpenLDAP: pkg/ldap/tests/scripts/test050-syncrepl-multimaster,v 1.7
> 2008/01/07 23:20:17 kurt Exp $
> ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
> ##
> ## Copyright 1998-2008 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
>
> if test $SYNCPROV = syncprovno; then
> echo "Syncrepl provider overlay not available, test skipped"
> exit 0
> fi
>
> PRODIR=$TESTDIR/pro
> CONDIR=$TESTDIR/con
> CONDIR2=$TESTDIR/con2
> DBPRO=$PRODIR/db
> DBCON=$CONDIR/db
> DBCON2=$CONDIR2/db
> CFPRO=$PRODIR/slapd.d
> CFCON=$CONDIR/slapd.d
> CFCON2=$CONDIR2/slapd.d
>
> mkdir -p $TESTDIR $PRODIR $CONDIR $CONDIR2 $DBPRO $DBCON $DBCON2 $CFPRO
> $CFCON $CFCON2
>
> $SLAPPASSWD -g -n >$CONFIGPWF
>
> #
> # Test replication of dynamic config:
> # - start producer
> # - start consumer
> # - start consumer2
> # - configure over ldap
> # - populate over ldap
> # - configure syncrepl over ldap
> # - retrieve database over ldap and compare against expected results
> #
>
> echo "Initializing server configurations..."
> $SLAPADD -F $CFCON2 -n 0 <<EOF
> dn: cn=config
> objectClass: olcGlobal
> cn: config
> olcServerID: 3
>
> dn: olcDatabase={0}config,cn=config
> objectClass: olcDatabaseConfig
> olcDatabase: {0}config
> olcRootPW:< file://$CONFIGPWF
> EOF
>
> $SLAPADD -F $CFCON -n 0 <<EOF
> dn: cn=config
> objectClass: olcGlobal
> cn: config
> olcServerID: 2
>
> dn: olcDatabase={0}config,cn=config
> objectClass: olcDatabaseConfig
> olcDatabase: {0}config
> olcRootPW:< file://$CONFIGPWF
> EOF
>
> $SLAPADD -F $CFPRO -n 0 <<EOF
> dn: cn=config
> objectClass: olcGlobal
> cn: config
> olcServerID: 1
>
> dn: olcDatabase={0}config,cn=config
> objectClass: olcDatabaseConfig
> olcDatabase: {0}config
> olcRootPW:< file://$CONFIGPWF
> EOF
>
> echo "Starting producer slapd on TCP/IP port $PORT1..."
> cd $PRODIR
> $SLAPD -F slapd.d -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
> PID=$!
> if test $WAIT != 0 ; then
> echo PID $PID
> read foo
> fi
> KILLPIDS="$PID"
> cd $TESTWD
>
> sleep 1
>
> echo "Using ldapsearch to check that producer slapd is running..."
> for i in 0 1 2 3 4 5; do
> $LDAPSEARCH -s base -b "" -H $URI1 \
> 'objectclass=*' > /dev/null 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 "Inserting syncprov overlay on producer..."
> if [ "$SYNCPROV" = syncprovmod ]; then
> $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1
> dn: cn=module,cn=config
> objectClass: olcModuleList
> cn: module
> olcModulePath: ../../../servers/slapd/overlays
> olcModuleLoad: syncprov.la
> EOF
> RC=$?
> if test $RC != 0 ; then
> echo "ldapadd failed for moduleLoad ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
> fi
> #
> # Note that we configure a timeout here; it's possible for both
> # servers to attempt to bind to each other while a modify to
> # cn=config is in progress. When the modify pauses the thread pool
> # neither server will progress. The timeout will drop the syncrepl
> # attempt and allow the modifies to complete.
> #
> read CONFIGPW < $CONFIGPWF
> $LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >> $TESTOUT 2>&1
> dn: cn=config
> changetype: modify
> replace: olcServerID
> olcServerID: 1 $URI1
> olcServerID: 2 $URI2
> olcServerID: 3 $URI3
>
> dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
> changetype: add
> objectClass: olcOverlayConfig
> objectClass: olcSyncProvConfig
> olcOverlay: syncprov
>
> dn: olcDatabase={0}config,cn=config
> changetype: modify
> add: olcSyncRepl
> olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> -
> add: olcMirrorMode
> olcMirrorMode: TRUE
> EOF
> RC=$?
> if test $RC != 0 ; then
> echo "ldapmodify failed for syncrepl config ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Starting consumer slapd on TCP/IP port $PORT2..."
> cd $CONDIR
> $SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
> SLAVEPID=$!
> if test $WAIT != 0 ; then
> echo SLAVEPID $SLAVEPID
> read foo
> fi
> KILLPIDS="$KILLPIDS $SLAVEPID"
> cd $TESTWD
>
> sleep 1
>
> echo "Using ldapsearch to check that consumer slapd is running..."
> for i in 0 1 2 3 4 5; do
> $LDAPSEARCH -s base -b "" -H $URI2 \
> 'objectclass=*' > /dev/null 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 "Configuring syncrepl on consumer..."
> $LDAPMODIFY -D cn=config -H $URI2 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
> dn: olcDatabase={0}config,cn=config
> changetype: modify
> add: olcSyncRepl
> olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> -
> add: olcMirrorMode
> olcMirrorMode: TRUE
> EOF
>
> echo "Starting consumer2 slapd on TCP/IP port $PORT3..."
> cd $CONDIR2
> $SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING > $LOG3 2>&1 &
> SLAVE2PID=$!
> if test $WAIT != 0 ; then
> echo SLAVE2PID $SLAVE2PID
> read foo
> fi
> KILLPIDS="$KILLPIDS $SLAVE2PID"
> cd $TESTWD
>
> sleep 1
>
> echo "Using ldapsearch to check that consumer2 slapd is running..."
> for i in 0 1 2 3 4 5; do
> $LDAPSEARCH -s base -b "" -H $URI3 \
> 'objectclass=*' > /dev/null 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 "Configuring syncrepl on consumer2..."
> $LDAPMODIFY -D cn=config -H $URI3 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
> dn: olcDatabase={0}config,cn=config
> changetype: modify
> add: olcSyncRepl
> olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
> credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
> retry="5 5 300 5" timeout=1
> -
> add: olcMirrorMode
> olcMirrorMode: TRUE
> EOF
>
> echo "Adding schema and databases on producer..."
> $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
> include: file://$ABS_SCHEMADIR/core.ldif
>
> include: file://$ABS_SCHEMADIR/cosine.ldif
>
> include: file://$ABS_SCHEMADIR/inetorgperson.ldif
>
> include: file://$ABS_SCHEMADIR/openldap.ldif
>
> include: file://$ABS_SCHEMADIR/nis.ldif
> EOF
> RC=$?
> if test $RC != 0 ; then
> echo "ldapadd failed for schema config ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> if [ "$BACKENDTYPE" = mod ]; then
> $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
> dn: cn=module,cn=config
> objectClass: olcModuleList
> cn: module
> olcModulePath: ../../../servers/slapd/back-$BACKEND
> olcModuleLoad: back_$BACKEND.la
> EOF
> RC=$?
> if test $RC != 0 ; then
> echo "ldapadd failed for backend config ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
> fi
>
> $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
> dn: olcDatabase={1}$BACKEND,cn=config
> objectClass: olcDatabaseConfig
> objectClass: olc${BACKEND}Config
> olcDatabase: {1}$BACKEND
> olcSuffix: $BASEDN
> olcDbDirectory: ./db
> olcRootDN: $MANAGERDN
> olcRootPW: $PASSWD
> olcSyncRepl: rid=004 provider=$URI1 binddn="$MANAGERDN" bindmethod=simple
> credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
> interval=00:00:00:10 retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=005 provider=$URI2 binddn="$MANAGERDN" bindmethod=simple
> credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
> interval=00:00:00:10 retry="5 5 300 5" timeout=1
> olcSyncRepl: rid=006 provider=$URI3 binddn="$MANAGERDN" bindmethod=simple
> credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
> interval=00:00:00:10 retry="5 5 300 5" timeout=1
> olcMirrorMode: TRUE
>
> dn: olcOverlay=syncprov,olcDatabase={1}${BACKEND},cn=config
> changetype: add
> objectClass: olcOverlayConfig
> objectClass: olcSyncProvConfig
> olcOverlay: syncprov
> EOF
> RC=$?
> if test $RC != 0 ; then
> echo "ldapadd failed for database config ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapadd to populate producer..."
> $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFORDERED \
> >> $TESTOUT 2>&1
> RC=$?
> if test $RC != 0 ; then
> echo "ldapadd failed for database config ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> SLEEP=20
> echo "Waiting $SLEEP seconds for syncrepl to receive changes..."
> sleep $SLEEP
>
> echo "Using ldapsearch to check that syncrepl received database
> changes..."
> RC=32
> for i in 0 1 2 3 4 5; do
> RESULT=`$LDAPSEARCH -H $URI2 \
> -s base -b "cn=Ursula Hampster,ou=Alumni
> Association,ou=People,dc=example,dc=com" \
> '(objectClass=*)' 2>&1 | awk '/^dn:/ {print "OK"}'`
> if test "x$RESULT" = "xOK" ; then
> RC=0
> break
> fi
> echo "Waiting 5 seconds for syncrepl to receive changes..."
> sleep 5
> done
>
> if test $RC != 0 ; then
> echo "ldapsearch failed ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapsearch to check that syncrepl received database changes on
> consumer2..."
> RC=32
> for i in 0 1 2 3 4 5; do
> RESULT=`$LDAPSEARCH -H $URI3 \
> -s base -b "cn=Ursula Hampster,ou=Alumni
> Association,ou=People,dc=example,dc=com" \
> '(objectClass=*)' 2>&1 | awk '/^dn:/ {print "OK"}'`
> if test "x$RESULT" = "xOK" ; then
> RC=0
> break
> fi
> echo "Waiting 5 seconds for syncrepl to receive changes..."
> sleep 5
> done
>
> if test $RC != 0 ; then
> echo "ldapsearch failed ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapsearch to read config from the producer..."
> $LDAPSEARCH -b cn=config -D cn=config -H $URI1 -y $CONFIGPWF \
> 'objectclass=*' > $MASTEROUT 2>&1
> RC=$?
>
> if test $RC != 0 ; then
> echo "ldapsearch failed at producer ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapsearch to read config from the consumer..."
> $LDAPSEARCH -b cn=config -D cn=config -H $URI2 -y $CONFIGPWF \
> 'objectclass=*' > $SLAVEOUT 2>&1
> RC=$?
>
> if test $RC != 0 ; then
> echo "ldapsearch failed at consumer ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapsearch to read config from consumer2..."
> $LDAPSEARCH -b cn=config -D cn=config -H $URI3 -y $CONFIGPWF \
> 'objectclass=*' > $SLAVE2OUT 2>&1
> RC=$?
>
> if test $RC != 0 ; then
> echo "ldapsearch failed at consumer2 ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Filtering producer results..."
> . $LDIFFILTER < $MASTEROUT > $MASTERFLT
> echo "Filtering consumer results..."
> . $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
> echo "Filtering consumer2 results..."
> . $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
>
> echo "Comparing retrieved configs from producer and consumer..."
> $CMP $MASTERFLT $SLAVEFLT > $CMPOUT
>
> if test $? != 0 ; then
> echo "test failed - producer and consumer configs differ"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit 1
> fi
>
> echo "Comparing retrieved configs from producer and consumer2..."
> $CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
>
> if test $? != 0 ; then
> echo "test failed - producer and consumer2 configs differ"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit 1
> fi
>
> echo "Using ldapsearch to read all the entries from the producer..."
> $LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD \
> 'objectclass=*' > $MASTEROUT 2>&1
> RC=$?
>
> if test $RC != 0 ; then
> echo "ldapsearch failed at producer ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapsearch to read all the entries from the consumer..."
> $LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD \
> 'objectclass=*' > $SLAVEOUT 2>&1
> RC=$?
>
> if test $RC != 0 ; then
> echo "ldapsearch failed at consumer ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
> echo "Using ldapsearch to read all the entries from the consumer2..."
> $LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD \
> 'objectclass=*' > $SLAVE2OUT 2>&1
> RC=$?
>
> if test $RC != 0 ; then
> echo "ldapsearch failed at consumer2 ($RC)!"
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
> exit $RC
> fi
>
>
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
>
> echo "Filtering producer results..."
> . $LDIFFILTER < $MASTEROUT > $MASTERFLT
> echo "Filtering consumer results..."
> . $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
> echo "Filtering consumer2 results..."
> . $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
>
> echo "Comparing retrieved entries from producer and consumer..."
> $CMP $MASTERFLT $SLAVEFLT > $CMPOUT
>
> if test $? != 0 ; then
> echo "test failed - producer and consumer databases differ"
> exit 1
> fi
>
> echo "Comparing retrieved entries from producer and consumer2..."
> $CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
>
> if test $? != 0 ; then
> echo "test failed - producer and consumer2 databases differ"
> exit 1
> fi
>
> test $KILLSERVERS != no && wait
>
> echo "Restarting servers..."
> echo "Starting producer slapd on TCP/IP port $PORT1..."
> cd $PRODIR
> echo "======================= RESTART =======================" >> $LOG1
> $SLAPD -F ./slapd.d -h $URI1 -d $LVL $TIMING >> $LOG1 2>&1 &
> PID=$!
> if test $WAIT != 0 ; then
> echo PID $PID
> read foo
> fi
> KILLPIDS="$PID"
> cd $TESTWD
> echo "Using ldapsearch to check that producer slapd is running..."
> for i in 0 1 2 3 4 5; do
> $LDAPSEARCH -s base -b "" -H $URI1 \
> 'objectclass=*' > /dev/null 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
> #exit 0
> echo "Starting consumer slapd on TCP/IP port $PORT2..."
> cd $CONDIR
> echo "======================= RESTART =======================" >> $LOG2
> $SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING >> $LOG2 2>&1 &
> SLAVEPID=$!
> if test $WAIT != 0 ; then
> echo SLAVEPID $SLAVEPID
> read foo
> fi
> KILLPIDS="$KILLPIDS $SLAVEPID"
> cd $TESTWD
>
> sleep 1
>
> echo "Using ldapsearch to check that consumer slapd is running..."
> for i in 0 1 2 3 4 5; do
> $LDAPSEARCH -s base -b "" -H $URI2 \
> 'objectclass=*' > /dev/null 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 "Starting consumer2 slapd on TCP/IP port $PORT3..."
> cd $CONDIR2
> echo "======================= RESTART =======================" >> $LOG3
> $SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING >> $LOG3 2>&1 &
> SLAVE2PID=$!
> if test $WAIT != 0 ; then
> echo SLAVE2PID $SLAVE2PID
> read foo
> fi
> KILLPIDS="$KILLPIDS $SLAVE2PID"
> cd $TESTWD
>
> sleep 1
>
> echo "Using ldapsearch to check that consumer2 slapd is running..."
> for i in 0 1 2 3 4 5; do
> $LDAPSEARCH -s base -b "" -H $URI3 \
> 'objectclass=*' > /dev/null 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
>
> # Insert modifications and more tests here.
> SLEEP=10
> echo "Waiting $SLEEP seconds for servers to resync..."
> sleep $SLEEP
>
> echo "Start gdb for:"
> echo "PIDS: $KILLPIDS"
>
> for LDIFORDERED in $PWD/data/ldifs/*; do
> /usr/bin/time -f "%e" -o time -- $LDAPADD -D "$MANAGERDN" -H $URI1 -w
> $PASSWD -f $LDIFORDERED >> ldif.log 2>&1
> RC=$?
> SLAPDS=$(pidof slapd | wc -w)
> TOOK=$(cat time)
> if [ "x$RC" = "x0" ]; then
> echo "Added: $(basename $LDIFORDERED) in $TOOK s - OK (# of slapds:
> $SLAPDS)"
> else
> echo "Added: $(basename $LDIFORDERED) in $TOOK s - Failed (# of
> slapds: $SLAPDS)"
> fi
> sleep 1
> if [ "x$SLAPDS" != "x3" ]; then
> echo "At least one slapd died ... test failed"
> break
> fi
> done
>
> test $KILLSERVERS != no && kill -HUP $KILLPIDS
>
> echo ">>>>> Test succeeded"
>
> test $KILLSERVERS != no && wait
>
> exit 0
>
> --------------030505030300050004060200--
>
>
>
15 years, 8 months
Re: (ITS#5332) multimaster replication crash
by Marcel.Ritter@rrze.uni-erlangen.de
This is a multi-part message in MIME format.
--------------030505030300050004060200
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit
Attached the ./configure output (if you really need config.log - which
is quite big please let me know).
There's not much to say about the config: I'm simply using the config from
tests/scripts/test050-syncrepl-multimaster and a modified version of this
script (the only change is, to add quite a lot of users to the ldap database
at the very end)
# compile openldap
./configure
make
# prepare tests
cd tests
# replace original test
cp /download/test050-syncrepl-multimaster scripts/
# create input ldifs
mkdir scripts/data/ldifs/
cd scripts/data/ldifs
# this will create several ldif files, each containing 1000 users
/download/usersldif2.py | split -l 20000 -
cd -
# now run modified test:
./run test050-syncrepl-multimaster
# ... now wait and see ...
...
Start gdb for:
PIDS: 13801 13814 13824
Added: xaa in 76.78 s - OK (# of slapds: 3)
Added: xab in 129.22 s - OK (# of slapds: 3)
./scripts/test050-syncrepl-multimaster: line 621: 13824 Segmenation
fault $SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING >> $LOG3 2>&1 (wd:
~/packages/BUILD/openldap-2.4.7/tests/testrun/con2)
Added: xac in 176.26 s - OK (# of slapds: 2)
At least one slapd died ... test failed
./scripts/test050-syncrepl-multimaster: line 638: kill: (13824) - No
such process
As far as I can see there are 2 possible outcomes:
(At least) one of the slapd processes crashes (see above), or it get's
caught in an endless loop (using up 100% CPU usage).
Bye,
Marcel
--
----
Dipl.-Inf. Marcel Ritter
Linux/Novell
Regionales Rechenzentrum Erlangen
Tel: 09131 / 85-27808
E-Mail: Marcel.Ritter(a)rrze.uni-erlangen.de
----
Unix _IS_ user friendly... It's just selective about who its friends are.
--------------030505030300050004060200
Content-Type: text/x-log;
name="configure.log"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="configure.log"
Configuring OpenLDAP 2.4.7-Release ...
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking configure arguments... done
checking for cc... cc
checking for ar... ar
checking for style of include used by make... GNU
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ANSI C... none needed
checking dependency style of cc... none
checking for a sed that does not truncate output... /usr/bin/sed
checking for egrep... grep -E
checking for ld used by cc... /usr/x86_64-suse-linux/bin/ld
checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes
checking for /usr/x86_64-suse-linux/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... cc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from cc object... ok
checking for objdir... .libs
checking for ranlib... ranlib
checking for strip... strip
checking if cc static flag works... yes
checking if cc supports -fno-rtti -fno-exceptions... no
checking for cc option to produce PIC... -fPIC
checking if cc PIC flag -fPIC works... yes
checking if cc supports -c -o file.o... yes
checking whether the cc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
checking how to run the C preprocessor... cc -E
checking for be_app in -lbe... no
checking whether we are using the GNU C compiler... (cached) yes
checking whether cc accepts -g... (cached) yes
checking for cc option to accept ANSI C... (cached) none needed
checking dependency style of cc... (cached) none
checking for cc depend flag... -M
checking for afopen in -ls... no
checking for EBCDIC... no
checking for ANSI C header files... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether termios.h defines TIOCGWINSZ... no
checking whether sys/ioctl.h defines TIOCGWINSZ... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking arpa/nameser.h usability... yes
checking arpa/nameser.h presence... yes
checking for arpa/nameser.h... yes
checking assert.h usability... yes
checking assert.h presence... yes
checking for assert.h... yes
checking bits/types.h usability... yes
checking bits/types.h presence... yes
checking for bits/types.h... yes
checking conio.h usability... no
checking conio.h presence... no
checking for conio.h... no
checking crypt.h usability... yes
checking crypt.h presence... yes
checking for crypt.h... yes
checking direct.h usability... no
checking direct.h presence... no
checking for direct.h... no
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking filio.h usability... no
checking filio.h presence... no
checking for filio.h... no
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking grp.h usability... yes
checking grp.h presence... yes
checking for grp.h... yes
checking io.h usability... no
checking io.h presence... no
checking for io.h... no
checking libutil.h usability... no
checking libutil.h presence... no
checking for libutil.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for memory.h... (cached) yes
checking psap.h usability... no
checking psap.h presence... no
checking for psap.h... no
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking process.h usability... no
checking process.h presence... no
checking for process.h... no
checking sgtty.h usability... yes
checking sgtty.h presence... yes
checking for sgtty.h... yes
checking shadow.h usability... yes
checking shadow.h presence... yes
checking for shadow.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking sysexits.h usability... yes
checking sysexits.h presence... yes
checking for sysexits.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/filio.h usability... no
checking sys/filio.h presence... no
checking for sys/filio.h... no
checking sys/fstyp.h usability... no
checking sys/fstyp.h presence... no
checking for sys/fstyp.h... no
checking sys/errno.h usability... yes
checking sys/errno.h presence... yes
checking for sys/errno.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/privgrp.h usability... no
checking sys/privgrp.h presence... no
checking for sys/privgrp.h... no
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for sys/stat.h... (cached) yes
checking sys/syslog.h usability... yes
checking sys/syslog.h presence... yes
checking for sys/syslog.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for sys/types.h... (cached) yes
checking sys/uio.h usability... yes
checking sys/uio.h presence... yes
checking for sys/uio.h... yes
checking sys/vmount.h usability... no
checking sys/vmount.h presence... no
checking for sys/vmount.h... no
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking for resolv.h... yes
checking for netinet/tcp.h... yes
checking for sys/ucred.h... no
checking for sigaction... yes
checking for sigset... yes
checking for socket... yes
checking for select... yes
checking for sys/select.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking for poll... yes
checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking sys/poll.h usability... yes
checking sys/poll.h presence... yes
checking for sys/poll.h... yes
checking sys/epoll.h usability... yes
checking sys/epoll.h presence... yes
checking for sys/epoll.h... yes
checking for epoll system call... yes
checking sys/devpoll.h usability... no
checking sys/devpoll.h presence... no
checking for sys/devpoll.h... no
checking declaration of sys_errlist... yes
checking for strerror... yes
checking for strerror_r... yes
checking non-posix strerror_r... no
checking for regex.h... yes
checking for library containing regfree... none required
checking for compatible POSIX regex... yes
checking sys/uuid.h usability... no
checking sys/uuid.h presence... no
checking for sys/uuid.h... no
checking uuid/uuid.h usability... yes
checking uuid/uuid.h presence... yes
checking for uuid/uuid.h... yes
checking for library containing uuid_generate... -luuid
checking for resolver link (default)... no
checking for resolver link (-lresolv)... yes
checking for hstrerror... yes
checking for getaddrinfo... yes
checking for getnameinfo... yes
checking for gai_strerror... yes
checking for inet_ntop... yes
checking INET6_ADDRSTRLEN... yes
checking struct sockaddr_storage... yes
checking sys/un.h usability... yes
checking sys/un.h presence... yes
checking for sys/un.h... yes
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
checking for SSL_library_init in -lssl... yes
checking OpenSSL library version (CRL checking capability)... yes
checking for _beginthread... no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking POSIX thread version... 10
checking for LinuxThreads pthread.h... no
checking for GNU Pth pthread.h... no
checking sched.h usability... yes
checking sched.h presence... yes
checking for sched.h... yes
checking for pthread_create in default libraries... no
checking for pthread link with -kthread... no
checking for pthread link with -pthread... yes
checking for sched_yield... yes
checking for pthread_yield... yes
checking for thr_yield... no
checking for pthread_kill... yes
checking for pthread_rwlock_destroy with <pthread.h>... yes
checking for pthread_detach with <pthread.h>... yes
checking for pthread_setconcurrency... yes
checking for pthread_getconcurrency... yes
checking for thr_setconcurrency... no
checking for thr_getconcurrency... no
checking for pthread_kill_other_threads_np... no
checking for LinuxThreads implementation... no
checking for LinuxThreads consistency... no
checking if pthread_create() works... yes
checking if select yields when using pthreads... yes
checking for thread specific errno... yes
checking for thread specific h_errno... yes
checking for ctime_r... yes
checking for gethostbyname_r... yes
checking for gethostbyaddr_r... yes
checking number of arguments of ctime_r... 2
checking number of arguments of gethostbyname_r... 6
checking number of arguments of gethostbyaddr_r... 8
checking db.h usability... yes
checking db.h presence... yes
checking for db.h... yes
checking for Berkeley DB major version... 4
checking for Berkeley DB minor version... 5
checking for Berkeley DB link (-ldb-4.5)... yes
checking for Berkeley DB version match... yes
checking for Berkeley DB thread support... yes
checking Berkeley DB version for BDB/HDB backends... yes
checking for openlog... yes
checking unicode/utypes.h usability... no
checking unicode/utypes.h presence... no
checking for unicode/utypes.h... no
configure: WARNING: ICU not available
checking sasl/sasl.h usability... yes
checking sasl/sasl.h presence... yes
checking for sasl/sasl.h... yes
checking sasl.h usability... no
checking sasl.h presence... no
checking for sasl.h... no
checking for sasl_client_init in -lsasl2... yes
checking Cyrus SASL library version... yes
checking for sasl_version... yes
checking fetch(3) library... no
checking for setproctitle... no
checking for setproctitle in -lutil... no
checking for mode_t... yes
checking for off_t... yes
checking for pid_t... yes
checking for ssize_t... yes
checking for caddr_t... yes
checking for size_t... yes
checking for long long... yes
checking for ptrdiff_t... yes
checking for socklen_t... yes
checking the type of arg 3 to accept()... socklen_t *
checking return type of signal handlers... void
checking for sig_atomic_t... yes
checking for uid_t in sys/types.h... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct stat.st_blksize... yes
checking for struct passwd.pw_gecos... yes
checking for struct passwd.pw_passwd... yes
checking if toupper() requires islower()... no
checking for an ANSI C-conforming const... yes
checking if compiler understands volatile... yes
checking whether byte ordering is bigendian... no
checking for short... yes
checking size of short... 2
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 8
checking for long long... (cached) yes
checking size of long long... 8
checking for wchar_t... yes
checking size of wchar_t... 4
checking for working memcmp... yes
checking for strftime... yes
checking for inet_aton()... yes
checking for _spawnlp... no
checking for _snprintf... no
checking for _vsnprintf... no
checking for vprintf... yes
checking for _doprnt... no
checking for snprintf... yes
checking for vsnprintf... yes
checking for bcopy... yes
checking for closesocket... no
checking for chroot... yes
checking for endgrent... yes
checking for endpwent... yes
checking for fcntl... yes
checking for flock... yes
checking for fstat... yes
checking for getdtablesize... yes
checking for getgrgid... yes
checking for gethostname... yes
checking for getpass... yes
checking for getpassphrase... no
checking for getpwuid... yes
checking for getpwnam... yes
checking for getspnam... yes
checking for gettimeofday... yes
checking for initgroups... yes
checking for inet_ntoa_b... no
checking for ioctl... yes
checking for lockf... yes
checking for memcpy... yes
checking for memmove... yes
checking for memrchr... yes
checking for mkstemp... yes
checking for mktemp... yes
checking for pipe... yes
checking for read... yes
checking for recv... yes
checking for recvfrom... yes
checking for setpwfile... no
checking for setgid... yes
checking for setegid... yes
checking for setsid... yes
checking for setuid... yes
checking for seteuid... yes
checking for signal... yes
checking for strdup... yes
checking for strpbrk... yes
checking for strrchr... yes
checking for strsep... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking for strtoq... yes
checking for strtouq... yes
checking for strtoll... yes
checking for strspn... yes
checking for sysconf... yes
checking for waitpid... yes
checking for wait4... yes
checking for write... yes
checking for send... yes
checking for sendmsg... yes
checking for sendto... yes
checking for getopt... yes
checking for getpeereid... no
checking for getpeerucred... no
checking for struct msghdr.msg_accrightslen... no
checking for struct msghdr.msg_control... yes
checking for struct stat.st_fstype... no
checking for struct stat.st_vfstype... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating doc/man/Makefile
config.status: creating doc/man/man1/Makefile
config.status: creating doc/man/man3/Makefile
config.status: creating doc/man/man5/Makefile
config.status: creating doc/man/man8/Makefile
config.status: creating clients/Makefile
config.status: creating clients/tools/Makefile
config.status: creating include/Makefile
config.status: creating libraries/Makefile
config.status: creating libraries/liblber/Makefile
config.status: creating libraries/libldap/Makefile
config.status: creating libraries/libldap_r/Makefile
config.status: creating libraries/liblunicode/Makefile
config.status: creating libraries/liblutil/Makefile
config.status: creating libraries/librewrite/Makefile
config.status: creating servers/Makefile
config.status: creating servers/slapd/Makefile
config.status: creating servers/slapd/back-bdb/Makefile
config.status: creating servers/slapd/back-dnssrv/Makefile
config.status: creating servers/slapd/back-hdb/Makefile
config.status: creating servers/slapd/back-ldap/Makefile
config.status: creating servers/slapd/back-ldif/Makefile
config.status: creating servers/slapd/back-meta/Makefile
config.status: creating servers/slapd/back-monitor/Makefile
config.status: creating servers/slapd/back-null/Makefile
config.status: creating servers/slapd/back-passwd/Makefile
config.status: creating servers/slapd/back-perl/Makefile
config.status: creating servers/slapd/back-relay/Makefile
config.status: creating servers/slapd/back-shell/Makefile
config.status: creating servers/slapd/back-sql/Makefile
config.status: creating servers/slapd/shell-backends/Makefile
config.status: creating servers/slapd/slapi/Makefile
config.status: creating servers/slapd/overlays/Makefile
config.status: creating tests/Makefile
config.status: creating tests/run
config.status: creating tests/progs/Makefile
config.status: creating include/portable.h
config.status: creating include/ldap_features.h
config.status: creating include/lber_types.h
config.status: executing depfiles commands
config.status: executing default commands
Making servers/slapd/backends.c
Add config ...
Add ldif ...
Add monitor ...
Add bdb ...
Add hdb ...
Add relay ...
Making servers/slapd/overlays/statover.c
Add seqmod ...
Add syncprov ...
Please run "make depend" to build dependencies
--------------030505030300050004060200
Content-Type: text/x-python;
name="usersldif2.py"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="usersldif2.py"
#!/usr/bin/env python
import string
import sys
uids=[]
for lineno in xrange(0,100000):
print """dn: uid=test%(lineno)s,ou=People,dc=example,dc=com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: User %(lineno)s
gecos: User %(lineno)s
gidNumber: %(lineno)s
homeDirectory: /home/test%(lineno)s
loginShell: /bin/bash
shadowInactive: -1
shadowLastChange: 12570
shadowMax: 99999
shadowMin: 0
shadowWarning: 7
sn: test%(lineno)s
uid: test%(lineno)s
uidNumber: %(lineno)s
userPassword: {crypt}WNu26PDD.aYC.
""" % { 'lineno': lineno }
--------------030505030300050004060200
Content-Type: text/plain;
name="test050-syncrepl-multimaster"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="test050-syncrepl-multimaster"
#! /bin/sh
# $OpenLDAP: pkg/ldap/tests/scripts/test050-syncrepl-multimaster,v 1.7 2008/01/07 23:20:17 kurt Exp $
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2008 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
if test $SYNCPROV = syncprovno; then
echo "Syncrepl provider overlay not available, test skipped"
exit 0
fi
PRODIR=$TESTDIR/pro
CONDIR=$TESTDIR/con
CONDIR2=$TESTDIR/con2
DBPRO=$PRODIR/db
DBCON=$CONDIR/db
DBCON2=$CONDIR2/db
CFPRO=$PRODIR/slapd.d
CFCON=$CONDIR/slapd.d
CFCON2=$CONDIR2/slapd.d
mkdir -p $TESTDIR $PRODIR $CONDIR $CONDIR2 $DBPRO $DBCON $DBCON2 $CFPRO $CFCON $CFCON2
$SLAPPASSWD -g -n >$CONFIGPWF
#
# Test replication of dynamic config:
# - start producer
# - start consumer
# - start consumer2
# - configure over ldap
# - populate over ldap
# - configure syncrepl over ldap
# - retrieve database over ldap and compare against expected results
#
echo "Initializing server configurations..."
$SLAPADD -F $CFCON2 -n 0 <<EOF
dn: cn=config
objectClass: olcGlobal
cn: config
olcServerID: 3
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcRootPW:< file://$CONFIGPWF
EOF
$SLAPADD -F $CFCON -n 0 <<EOF
dn: cn=config
objectClass: olcGlobal
cn: config
olcServerID: 2
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcRootPW:< file://$CONFIGPWF
EOF
$SLAPADD -F $CFPRO -n 0 <<EOF
dn: cn=config
objectClass: olcGlobal
cn: config
olcServerID: 1
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcRootPW:< file://$CONFIGPWF
EOF
echo "Starting producer slapd on TCP/IP port $PORT1..."
cd $PRODIR
$SLAPD -F slapd.d -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
PID=$!
if test $WAIT != 0 ; then
echo PID $PID
read foo
fi
KILLPIDS="$PID"
cd $TESTWD
sleep 1
echo "Using ldapsearch to check that producer slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "" -H $URI1 \
'objectclass=*' > /dev/null 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 "Inserting syncprov overlay on producer..."
if [ "$SYNCPROV" = syncprovmod ]; then
$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: ../../../servers/slapd/overlays
olcModuleLoad: syncprov.la
EOF
RC=$?
if test $RC != 0 ; then
echo "ldapadd failed for moduleLoad ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
fi
#
# Note that we configure a timeout here; it's possible for both
# servers to attempt to bind to each other while a modify to
# cn=config is in progress. When the modify pauses the thread pool
# neither server will progress. The timeout will drop the syncrepl
# attempt and allow the modifies to complete.
#
read CONFIGPW < $CONFIGPWF
$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >> $TESTOUT 2>&1
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 $URI1
olcServerID: 2 $URI2
olcServerID: 3 $URI3
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE
EOF
RC=$?
if test $RC != 0 ; then
echo "ldapmodify failed for syncrepl config ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Starting consumer slapd on TCP/IP port $PORT2..."
cd $CONDIR
$SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
SLAVEPID=$!
if test $WAIT != 0 ; then
echo SLAVEPID $SLAVEPID
read foo
fi
KILLPIDS="$KILLPIDS $SLAVEPID"
cd $TESTWD
sleep 1
echo "Using ldapsearch to check that consumer slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "" -H $URI2 \
'objectclass=*' > /dev/null 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 "Configuring syncrepl on consumer..."
$LDAPMODIFY -D cn=config -H $URI2 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE
EOF
echo "Starting consumer2 slapd on TCP/IP port $PORT3..."
cd $CONDIR2
$SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING > $LOG3 2>&1 &
SLAVE2PID=$!
if test $WAIT != 0 ; then
echo SLAVE2PID $SLAVE2PID
read foo
fi
KILLPIDS="$KILLPIDS $SLAVE2PID"
cd $TESTWD
sleep 1
echo "Using ldapsearch to check that consumer2 slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "" -H $URI3 \
'objectclass=*' > /dev/null 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 "Configuring syncrepl on consumer2..."
$LDAPMODIFY -D cn=config -H $URI3 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE
EOF
echo "Adding schema and databases on producer..."
$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
include: file://$ABS_SCHEMADIR/core.ldif
include: file://$ABS_SCHEMADIR/cosine.ldif
include: file://$ABS_SCHEMADIR/inetorgperson.ldif
include: file://$ABS_SCHEMADIR/openldap.ldif
include: file://$ABS_SCHEMADIR/nis.ldif
EOF
RC=$?
if test $RC != 0 ; then
echo "ldapadd failed for schema config ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
if [ "$BACKENDTYPE" = mod ]; then
$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: ../../../servers/slapd/back-$BACKEND
olcModuleLoad: back_$BACKEND.la
EOF
RC=$?
if test $RC != 0 ; then
echo "ldapadd failed for backend config ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
fi
$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
dn: olcDatabase={1}$BACKEND,cn=config
objectClass: olcDatabaseConfig
objectClass: olc${BACKEND}Config
olcDatabase: {1}$BACKEND
olcSuffix: $BASEDN
olcDbDirectory: ./db
olcRootDN: $MANAGERDN
olcRootPW: $PASSWD
olcSyncRepl: rid=004 provider=$URI1 binddn="$MANAGERDN" bindmethod=simple
credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=005 provider=$URI2 binddn="$MANAGERDN" bindmethod=simple
credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=006 provider=$URI3 binddn="$MANAGERDN" bindmethod=simple
credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={1}${BACKEND},cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
EOF
RC=$?
if test $RC != 0 ; then
echo "ldapadd failed for database config ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapadd to populate producer..."
$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFORDERED \
>> $TESTOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapadd failed for database config ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
SLEEP=20
echo "Waiting $SLEEP seconds for syncrepl to receive changes..."
sleep $SLEEP
echo "Using ldapsearch to check that syncrepl received database changes..."
RC=32
for i in 0 1 2 3 4 5; do
RESULT=`$LDAPSEARCH -H $URI2 \
-s base -b "cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com" \
'(objectClass=*)' 2>&1 | awk '/^dn:/ {print "OK"}'`
if test "x$RESULT" = "xOK" ; then
RC=0
break
fi
echo "Waiting 5 seconds for syncrepl to receive changes..."
sleep 5
done
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapsearch to check that syncrepl received database changes on consumer2..."
RC=32
for i in 0 1 2 3 4 5; do
RESULT=`$LDAPSEARCH -H $URI3 \
-s base -b "cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com" \
'(objectClass=*)' 2>&1 | awk '/^dn:/ {print "OK"}'`
if test "x$RESULT" = "xOK" ; then
RC=0
break
fi
echo "Waiting 5 seconds for syncrepl to receive changes..."
sleep 5
done
if test $RC != 0 ; then
echo "ldapsearch failed ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapsearch to read config from the producer..."
$LDAPSEARCH -b cn=config -D cn=config -H $URI1 -y $CONFIGPWF \
'objectclass=*' > $MASTEROUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed at producer ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapsearch to read config from the consumer..."
$LDAPSEARCH -b cn=config -D cn=config -H $URI2 -y $CONFIGPWF \
'objectclass=*' > $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed at consumer ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapsearch to read config from consumer2..."
$LDAPSEARCH -b cn=config -D cn=config -H $URI3 -y $CONFIGPWF \
'objectclass=*' > $SLAVE2OUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed at consumer2 ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Filtering producer results..."
. $LDIFFILTER < $MASTEROUT > $MASTERFLT
echo "Filtering consumer results..."
. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
echo "Filtering consumer2 results..."
. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
echo "Comparing retrieved configs from producer and consumer..."
$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
if test $? != 0 ; then
echo "test failed - producer and consumer configs differ"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit 1
fi
echo "Comparing retrieved configs from producer and consumer2..."
$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
if test $? != 0 ; then
echo "test failed - producer and consumer2 configs differ"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit 1
fi
echo "Using ldapsearch to read all the entries from the producer..."
$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD \
'objectclass=*' > $MASTEROUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed at producer ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapsearch to read all the entries from the consumer..."
$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD \
'objectclass=*' > $SLAVEOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed at consumer ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
echo "Using ldapsearch to read all the entries from the consumer2..."
$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD \
'objectclass=*' > $SLAVE2OUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed at consumer2 ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
test $KILLSERVERS != no && kill -HUP $KILLPIDS
echo "Filtering producer results..."
. $LDIFFILTER < $MASTEROUT > $MASTERFLT
echo "Filtering consumer results..."
. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
echo "Filtering consumer2 results..."
. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
echo "Comparing retrieved entries from producer and consumer..."
$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
if test $? != 0 ; then
echo "test failed - producer and consumer databases differ"
exit 1
fi
echo "Comparing retrieved entries from producer and consumer2..."
$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
if test $? != 0 ; then
echo "test failed - producer and consumer2 databases differ"
exit 1
fi
test $KILLSERVERS != no && wait
echo "Restarting servers..."
echo "Starting producer slapd on TCP/IP port $PORT1..."
cd $PRODIR
echo "======================= RESTART =======================" >> $LOG1
$SLAPD -F ./slapd.d -h $URI1 -d $LVL $TIMING >> $LOG1 2>&1 &
PID=$!
if test $WAIT != 0 ; then
echo PID $PID
read foo
fi
KILLPIDS="$PID"
cd $TESTWD
echo "Using ldapsearch to check that producer slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "" -H $URI1 \
'objectclass=*' > /dev/null 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
#exit 0
echo "Starting consumer slapd on TCP/IP port $PORT2..."
cd $CONDIR
echo "======================= RESTART =======================" >> $LOG2
$SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING >> $LOG2 2>&1 &
SLAVEPID=$!
if test $WAIT != 0 ; then
echo SLAVEPID $SLAVEPID
read foo
fi
KILLPIDS="$KILLPIDS $SLAVEPID"
cd $TESTWD
sleep 1
echo "Using ldapsearch to check that consumer slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "" -H $URI2 \
'objectclass=*' > /dev/null 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 "Starting consumer2 slapd on TCP/IP port $PORT3..."
cd $CONDIR2
echo "======================= RESTART =======================" >> $LOG3
$SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING >> $LOG3 2>&1 &
SLAVE2PID=$!
if test $WAIT != 0 ; then
echo SLAVE2PID $SLAVE2PID
read foo
fi
KILLPIDS="$KILLPIDS $SLAVE2PID"
cd $TESTWD
sleep 1
echo "Using ldapsearch to check that consumer2 slapd is running..."
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "" -H $URI3 \
'objectclass=*' > /dev/null 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
# Insert modifications and more tests here.
SLEEP=10
echo "Waiting $SLEEP seconds for servers to resync..."
sleep $SLEEP
echo "Start gdb for:"
echo "PIDS: $KILLPIDS"
for LDIFORDERED in $PWD/data/ldifs/*; do
/usr/bin/time -f "%e" -o time -- $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFORDERED >> ldif.log 2>&1
RC=$?
SLAPDS=$(pidof slapd | wc -w)
TOOK=$(cat time)
if [ "x$RC" = "x0" ]; then
echo "Added: $(basename $LDIFORDERED) in $TOOK s - OK (# of slapds: $SLAPDS)"
else
echo "Added: $(basename $LDIFORDERED) in $TOOK s - Failed (# of slapds: $SLAPDS)"
fi
sleep 1
if [ "x$SLAPDS" != "x3" ]; then
echo "At least one slapd died ... test failed"
break
fi
done
test $KILLSERVERS != no && kill -HUP $KILLPIDS
echo ">>>>> Test succeeded"
test $KILLSERVERS != no && wait
exit 0
--------------030505030300050004060200--
15 years, 8 months
Re: (ITS#5343) cn=config crash when deleting attrs
by h.b.furuseth@usit.uio.no
Ralf Haferkamp writes:
>> I am currently testing the 3rd approach, the attributes will be
>> created even when starting with -f only. I'll commit it as soon as
>> make test finishes.
>
> Done. Please test.
Works fine, and passes "make test".
One quirk, don't know if it's worth bothering with:
If I define "attributeOptions foo" in slapd.conf and delete
olcAttributeOptions with ldapmodify, the slapd log gets a line
slapd: line 0: option "foo" is already defined
The message disapperas if I have no "attributeOptions" in slapd.conf,
which means cn=config gets the default "olcAttributeOptions: lang-".
slapd.conf:
include servers/slapd/schema/core.schema
attributeOptions foo
database config
rootdn cn=config
rootpw secret
ldapmodify:
dn: cn=config
changetype: modify
delete: olcAttributeOptions
-
output:
conn=2 op=1 MOD dn="cn=config"
conn=1 op=1 MOD attr=olcAttributeOptions
slapd: line 0: option "foo" is already defined
conn=1 op=1 RESULT tag=103 err=80 text=
--
Hallvard
15 years, 8 months
Re: (ITS#5332) multimaster replication crash
by ghenry@suretecsystems.com
<quote who="Marcel Ritter">
> Gavin Henry schrieb:
>> Marcel.Ritter(a)rrze.uni-erlangen.de wrote:
>>> Full_Name: Marcel Ritter
>>> Version: HEAD
>>> OS: Linux (openSUSE 10.3)
>>> URL: ftp://ftp.openldap.org/incoming/
>>> Submission from: (NULL) (131.188.78.179)
>>>
>>>
>>> When using multimaster replication slapd dies (on x86_64).
>>>
>>> I've used the scripts/test050-syncrepl-multimaster with one simple
>>> modification: I added one ldapadd command at the end of the script,
>>> trying to add some 20000 entries.
>>>
>>
>> Have you tried this on a release, i.e. 2.4.7, not HEAD?
> Yes - I tried with 2.4.7 first. Then I asked Ralf Haferkamp from
> SuSE/Novell
> (he build's openldap 2.4 packages on the openSUSE Build Service) wether
> he had run some tests on this topic, but he declined and suggested to test
> with HEAD version.
>
> I tried this too, but to the same result.
>
> I've run my tests both on SuSE Linux Enterprise Server 10 and openSUSE
> 10.3.
> As far as I tested, this occurs only on x86_64 systems (i386 seems to
> get into
> an endless loop instead - but this may be for a different reason ...)
> Please let me know if you need a login on a test system, the sample ldif
> or if I can
> test something for you.
>
If you can upload a tar of all config etc. that would be good:
http://www.openldap.org/doc/admin24/troubleshooting.html#OpenLDAP%20Bugs
Gavin.
15 years, 8 months
Re: (ITS#5332) multimaster replication crash
by Marcel.Ritter@rrze.uni-erlangen.de
Gavin Henry schrieb:
> Marcel.Ritter(a)rrze.uni-erlangen.de wrote:
>> Full_Name: Marcel Ritter
>> Version: HEAD
>> OS: Linux (openSUSE 10.3)
>> URL: ftp://ftp.openldap.org/incoming/
>> Submission from: (NULL) (131.188.78.179)
>>
>>
>> When using multimaster replication slapd dies (on x86_64).
>>
>> I've used the scripts/test050-syncrepl-multimaster with one simple
>> modification: I added one ldapadd command at the end of the script,
>> trying to add some 20000 entries.
>>
>
> Have you tried this on a release, i.e. 2.4.7, not HEAD?
Yes - I tried with 2.4.7 first. Then I asked Ralf Haferkamp from SuSE/Novell
(he build's openldap 2.4 packages on the openSUSE Build Service) wether
he had run some tests on this topic, but he declined and suggested to test
with HEAD version.
I tried this too, but to the same result.
I've run my tests both on SuSE Linux Enterprise Server 10 and openSUSE 10.3.
As far as I tested, this occurs only on x86_64 systems (i386 seems to
get into
an endless loop instead - but this may be for a different reason ...)
Please let me know if you need a login on a test system, the sample ldif
or if I can
test something for you.
Bye,
Marcel
--
----
Dipl.-Inf. Marcel Ritter
Linux/Novell
Regionales Rechenzentrum Erlangen
Tel: 09131 / 85-27808
E-Mail: Marcel.Ritter(a)rrze.uni-erlangen.de
----
Unix _IS_ user friendly... It's just selective about who its friends are.
15 years, 8 months
Re: (ITS#5348) slapcat on 2.3.38 to slapadd on 2.4.7 causes abort.
by ando@sys-net.it
hachi wrote:
> This is the direct output from slapcat on my 2.3.38 openldap setup, I
> haven't changed it in any way (apart from cutting off later entries so
> that I'm not supplying you with a few thousand examples)
Please try the patch resulting from diffing
cvs diff -u -r 1.440 -r 1.442 servers/slapd/schema_init.c
it should apply straightforwardly to 2.4.7. It prevents slapd from
assert'ing in case of unrecognized input, and tolerates OpenLDAP 2.1 CSN
syntax. Note that a slapcat | slapadd with (patched) 2.4.7 will
re-format CSN values according to the current format.
p.
Ing. Pierangelo Masarati
OpenLDAP Core Team
SysNet s.r.l.
via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
---------------------------------------
Office: +39 02 23998309
Mobile: +39 333 4963172
Email: pierangelo.masarati(a)sys-net.it
---------------------------------------
15 years, 8 months
Re: (ITS#5348) slapcat on 2.3.38 to slapadd on 2.4.7 causes abort.
by hyc@symas.com
ando(a)sys-net.it wrote:
> hachi wrote:
>> This is the direct output from slapcat on my 2.3.38 openldap setup, I
>> haven't changed it in any way (apart from cutting off later entries so
>> that I'm not supplying you with a few thousand examples)
>
> I trust you. But I believe that specific data was either generated by a
> much earlier version, or came from somewhere else.
>> dn: ou=People,dc=kuiki,dc=net
>> objectClass: organizationalUnit
>> ou: People
>> structuralObjectClass: organizationalUnit
>> entryUUID: 031994e2-301a-1027-968d-e97431722845
>> creatorsName: cn=anonymous
>> modifiersName: cn=anonymous
>> createTimestamp: 20030611053344Z
>> modifyTimestamp: 20030611053344Z
>> entryCSN: 2003061105:33:44Z#0x0003#0#0000
>
> ^^^ this is nonsense to me; note it was generated in 2003, and 2.3.38
> did not exist at that time (but, apparently, it allows bulk loading of
> this CSN form).
That's OpenLDAP 2.1's format. Which fits the 2003 timeframe.
--
-- Howard Chu
Chief Architect, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
15 years, 8 months
Re: (ITS#5348) slapcat on 2.3.38 to slapadd on 2.4.7 causes abort.
by ando@sys-net.it
hachi wrote:
> This is the direct output from slapcat on my 2.3.38 openldap setup, I
> haven't changed it in any way (apart from cutting off later entries so
> that I'm not supplying you with a few thousand examples)
I trust you. But I believe that specific data was either generated by a
much earlier version, or came from somewhere else. If you look at your
original posting,> dn: dc=kuiki,dc=net
> objectClass: dcObject
> objectClass: organization
> dc: kuiki
> o: kuiki.net
> structuralObjectClass: organization
> entryUUID: 03182abc-301a-1027-968b-e97431722845
> creatorsName: cn=anonymous
> createTimestamp: 20030611053344Z
> entryCSN: 20060925002534Z#000000#00#000000
> modifiersName: cn=admin,dc=kuiki,dc=net
> modifyTimestamp: 20060925002534Z
> contextCSN: 20071231014551Z#000000#00#000000
^^^ this is an "old" OpenLDAP format (no fractions of seconds, 2-digit
SID); note the entryCSN was generated in 2006 and the contextCSN in 2007
>
> dn: ou=People,dc=kuiki,dc=net
> objectClass: organizationalUnit
> ou: People
> structuralObjectClass: organizationalUnit
> entryUUID: 031994e2-301a-1027-968d-e97431722845
> creatorsName: cn=anonymous
> modifiersName: cn=anonymous
> createTimestamp: 20030611053344Z
> modifyTimestamp: 20030611053344Z
> entryCSN: 2003061105:33:44Z#0x0003#0#0000
^^^ this is nonsense to me; note it was generated in 2003, and 2.3.38
did not exist at that time (but, apparently, it allows bulk loading of
this CSN form).
p.
Ing. Pierangelo Masarati
OpenLDAP Core Team
SysNet s.r.l.
via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
---------------------------------------
Office: +39 02 23998309
Mobile: +39 333 4963172
Email: pierangelo.masarati(a)sys-net.it
---------------------------------------
15 years, 8 months
Re: (ITS#5348) slapcat on 2.3.38 to slapadd on 2.4.7 causes abort.
by hachi@kuiki.net
This is the direct output from slapcat on my 2.3.38 openldap setup, I
haven't changed it in any way (apart from cutting off later entries so
that I'm not supplying you with a few thousand examples)
Pierangelo Masarati wrote:
> hachi(a)kuiki.net wrote:
>
>> Tested against both HEAD and OPENLDAP_REL_ENG_2_4, same error:
>>
>> slapadd: schema_init.c:3669: csnNormalize: Assertion `val->bv_len ==
>> (sizeof("YYYYmmddHHMMSS.uuuuuuZ#SSSSSS#SID#ssssss")-1)' failed.
>>
>
> That assert() was added to trap incorrect values, since they should
> never happen run-time. Of course, this is not the case when
> slapadd'ing, since bulk loading can (and must be able to) include
> operational attrs like entryCSN. In any case, the value you're trying
> to slapadd, "2003061105:33:44Z#0x0003#0#0000", is invalid, and
> (probably, AFAIK) has never been in use with OpenLDAP software. When
> bulk-adding data, you should make sure it is reasonably acceptable.
>
> p.
>
>
>
> Ing. Pierangelo Masarati
> OpenLDAP Core Team
>
> SysNet s.r.l.
> via Dossi, 8 - 27100 Pavia - ITALIA
> http://www.sys-net.it
> ---------------------------------------
> Office: +39 02 23998309
> Mobile: +39 333 4963172
> Email: pierangelo.masarati(a)sys-net.it
> ---------------------------------------
>
>
>
15 years, 8 months