2e9388
From 08d26c374ae6198b5a1ec59556ca8814329b845f Mon Sep 17 00:00:00 2001
2e9388
From: Fraser Tweedale <ftweedal@redhat.com>
2e9388
Date: Fri, 20 Nov 2015 15:59:11 +1100
2e9388
Subject: [PATCH] Avoid race condition caused by profile delete and recreate
2e9388
2e9388
When importing IPA-managed certificate profiles into Dogtag,
2e9388
profiles with the same name (usually caIPAserviceCert) are removed,
2e9388
then immediately recreated with the new profile data.  This causes a
2e9388
race condition - Dogtag's LDAPProfileSystem profileChangeMonitor
2e9388
thread could observe and process the deletion after the profile was
2e9388
recreated, disappearing it again.
2e9388
2e9388
Update the profile instead of deleting and recreating it to avoid
2e9388
this race condition.
2e9388
2e9388
Fixes: https://fedorahosted.org/freeipa/ticket/5269
2e9388
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
2e9388
---
2e9388
 ipaserver/install/cainstance.py | 3 +--
2e9388
 1 file changed, 1 insertion(+), 2 deletions(-)
2e9388
2e9388
diff --git a/ipaserver/install/cainstance.py b/ipaserver/install/cainstance.py
2e9388
index d230c9bdcab68f02cce32a2aeb89ca3e2143eefe..3e3dce93de2b8ca48a3fe3ea5994ee92a1b0ce49 100644
2e9388
--- a/ipaserver/install/cainstance.py
2e9388
+++ b/ipaserver/install/cainstance.py
2e9388
@@ -1812,8 +1812,7 @@ def _create_dogtag_profile(profile_id, profile_data):
2e9388
                     root_logger.debug(
2e9388
                         "Failed to disable profile '%s' "
2e9388
                         "(it is probably already disabled)")
2e9388
-                profile_api.delete_profile(profile_id)
2e9388
-                profile_api.create_profile(profile_data)
2e9388
+                profile_api.update_profile(profile_id, profile_data)
2e9388
 
2e9388
         # enable the profile
2e9388
         try:
2e9388
-- 
2e9388
2.4.3
2e9388