[Fedora-directory-commits] ldapserver/ldap/servers/plugins/replication cl5_api.c, 1.23, 1.24
Nathan Kinder
nkinder at fedoraproject.org
Fri Nov 14 02:06:37 UTC 2008
- Previous message (by thread): [Fedora-directory-commits] ldapserver/ldap/servers/slapd/back-ldbm ldbm_attrcrypt_config.c, 1.6, 1.7 ldbm_config.c, 1.16, 1.17 ldbm_index_config.c, 1.8, 1.9 ldbm_modrdn.c, 1.9, 1.10
- Next message (by thread): [Fedora-directory-commits] ldapserver/ldap/servers/slapd/tools/ldclt ldapfct.c, 1.8, 1.9 ldclt.c, 1.6, 1.7 ldclt.h, 1.5, 1.6 ldcltU.c, 1.4, 1.5 threadMain.c, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: nkinder
Update of /cvs/dirsec/ldapserver/ldap/servers/plugins/replication
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv25071/ldap/servers/plugins/replication
Modified Files:
cl5_api.c
Log Message:
Resolves: 450046
Summary: Clean-up leftover changelog semaphore at startup.
Index: cl5_api.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/replication/cl5_api.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- cl5_api.c 15 Oct 2008 06:29:58 -0000 1.23
+++ cl5_api.c 14 Nov 2008 02:06:34 -0000 1.24
@@ -6415,17 +6415,35 @@
(*dbFile)->semaName = slapi_ch_smprintf("%s/%s.sema", semadir, replName);
slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name_cl,
"_cl5NewDBFile: semaphore %s\n", (*dbFile)->semaName);
- (*dbFile)->sema = PR_OpenSemaphore((*dbFile)->semaName, PR_SEM_CREATE, 0666, s_cl5Desc.dbConfig.maxConcurrentWrites );
+ (*dbFile)->sema = PR_OpenSemaphore((*dbFile)->semaName,
+ PR_SEM_CREATE | PR_SEM_EXCL, 0666,
+ s_cl5Desc.dbConfig.maxConcurrentWrites );
slapi_log_error (SLAPI_LOG_REPL, repl_plugin_name_cl, "_cl5NewDBFile: maxConcurrentWrites=%d\n", s_cl5Desc.dbConfig.maxConcurrentWrites );
}
if ((*dbFile)->sema == NULL )
{
- slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name_cl,
- "_cl5NewDBFile: failed to create semaphore %s; NSPR error - %d\n",
- (*dbFile)->semaName ? (*dbFile)->semaName : "(nil)", PR_GetError ());
- rc = CL5_SYSTEM_ERROR;
- goto done;
+ /* If the semaphore was left around due
+ * to an unclean exit last time, remove
+ * and re-create it.
+ */
+ if (PR_GetError() == PR_FILE_EXISTS_ERROR) {
+ PR_DeleteSemaphore((*dbFile)->semaName);
+ (*dbFile)->sema = PR_OpenSemaphore((*dbFile)->semaName,
+ PR_SEM_CREATE | PR_SEM_EXCL, 0666,
+ s_cl5Desc.dbConfig.maxConcurrentWrites );
+ }
+
+ /* If we still failed to create the semaphore,
+ * we should just error out. */
+ if ((*dbFile)->sema == NULL )
+ {
+ slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name_cl,
+ "_cl5NewDBFile: failed to create semaphore %s; NSPR error - %d\n",
+ (*dbFile)->semaName ? (*dbFile)->semaName : "(nil)", PR_GetError());
+ rc = CL5_SYSTEM_ERROR;
+ goto done;
+ }
}
/* compute number of entries in the file */
- Previous message (by thread): [Fedora-directory-commits] ldapserver/ldap/servers/slapd/back-ldbm ldbm_attrcrypt_config.c, 1.6, 1.7 ldbm_config.c, 1.16, 1.17 ldbm_index_config.c, 1.8, 1.9 ldbm_modrdn.c, 1.9, 1.10
- Next message (by thread): [Fedora-directory-commits] ldapserver/ldap/servers/slapd/tools/ldclt ldapfct.c, 1.8, 1.9 ldclt.c, 1.6, 1.7 ldclt.h, 1.5, 1.6 ldcltU.c, 1.4, 1.5 threadMain.c, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Fedora-directory-commits
mailing list