[Fedora-directory-commits] ldapserver/ldap/servers/plugins/replication cl5_api.c, 1.9, 1.9.2.1 repl5_replica_config.c, 1.6, 1.6.2.1
Noriko Hosoi (nhosoi)
fedora-directory-commits at redhat.com
Fri Jan 11 22:01:46 UTC 2008
Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/plugins/replication
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20667/plugins/replication
Modified Files:
Tag: Directory71RtmBranch
cl5_api.c repl5_replica_config.c
Log Message:
Resolves: #238630
Summary: ns-slapd sometimes fails with SIGSEGV when removing and recreating replica entry
Description: applied the patch to Directory71RtmBranch
Index: cl5_api.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/replication/cl5_api.c,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -r1.9 -r1.9.2.1
--- cl5_api.c 19 Apr 2005 22:07:32 -0000 1.9
+++ cl5_api.c 11 Jan 2008 22:01:44 -0000 1.9.2.1
@@ -6223,19 +6223,23 @@
_cl5WriteRUV (file, PR_FALSE);
}
- /* close file */
+ /* close the db */
if (file->db)
file->db->close(file->db, 0);
if (file->flags & DB_FILE_DELETED)
{
+ int rc = 0;
+ /* We need to use the libdb API to delete the files, otherwise we'll
+ * run into problems when we try to checkpoint transactions later. */
PR_snprintf(fullpathname, MAXPATHLEN, "%s/%s", s_cl5Desc.dbDir, file->name);
- if (PR_Delete(fullpathname) != PR_SUCCESS)
- {
- slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name_cl, "_cl5DBCloseFile: "
- "failed to remove (%s) file; NSPR error - %d\n", file->name, PR_GetError ());
-
- }
+ rc = s_cl5Desc.dbEnv->dbremove(s_cl5Desc.dbEnv, 0, fullpathname, 0, 0);
+ if (rc != 0)
+ {
+ slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name_cl, "_cl5DBCloseFile: "
+ "failed to remove (%s) file; libdb error - %d (%s)\n",
+ fullpathname, rc, db_strerror(rc));
+ }
}
/* slapi_ch_free accepts NULL pointer */
Index: repl5_replica_config.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/replication/repl5_replica_config.c,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -u -r1.6 -r1.6.2.1
--- repl5_replica_config.c 19 Apr 2005 22:07:32 -0000 1.6
+++ repl5_replica_config.c 11 Jan 2008 22:01:44 -0000 1.6.2.1
@@ -455,9 +455,17 @@
if (mtnode_ext->replica)
{
+ char ebuf[BUFSIZ];
+
/* remove object from the hash */
r = (Replica*)object_get_data (mtnode_ext->replica);
PR_ASSERT (r);
+ /* The changelog for this replica is no longer valid, so we should remove it. */
+ slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name, "replica_config_delete: "
+ "Warning: The changelog for replica %s is no longer valid since "
+ "the replica config is being deleted. Removing the changelog.\n",
+ escape_string(slapi_sdn_get_dn(replica_get_root(r)),ebuf));
+ cl5DeleteDBSync(mtnode_ext->replica);
replica_delete_by_name (replica_get_name (r));
object_release (mtnode_ext->replica);
mtnode_ext->replica = NULL;
More information about the Fedora-directory-commits
mailing list