[Freeipa-devel] [PATCH 0259] Server Upgrade: Wait until DS is ready after restart

Martin Basti mbasti at redhat.com
Mon May 25 13:38:39 UTC 2015


On 25/05/15 13:57, Martin Basti wrote:
> On 25/05/15 09:20, Fraser Tweedale wrote:
>> On Mon, May 25, 2015 at 08:13:35AM +0200, Jan Cholasta wrote:
>>> Dne 22.5.2015 v 15:53 Petr Vobornik napsal(a):
>>>> On 05/21/2015 03:16 PM, Fraser Tweedale wrote:
>>>>> On Thu, May 21, 2015 at 01:38:43PM +0200, Martin Basti wrote:
>>>>>> This patch should fix following traceback.
>>>>>>
>>>>>> 2015-05-20T03:50:41Z ERROR Upgrade failed with cannot connect to
>>>>>> 'ldapi://%2fvar%2frun%2fslapd-IPA-LOCAL.socket':
>>>>>> 2015-05-20T03:50:41Z DEBUG Traceback (most recent call last):
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/upgradeinstance.py", 
>>>>>>
>>>>>> line 304, in __upgrade
>>>>>>      ld = ldapupdate.LDAPUpdate(dm_password='', ldapi=True)
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/ldapupdate.py",
>>>>>> line 314, in __init__
>>>>>>      self.create_connection()
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/ldapupdate.py",
>>>>>> line 862, in create_connection
>>>>>>      autobind=self.ldapi)
>>>>>>    File "/usr/lib/python2.7/site-packages/ipalib/backend.py", line
>>>>>> 66, in connect
>>>>>>      conn = self.create_connection(*args, **kw)
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/plugins/ldap2.py", line
>>>>>> 188, in create_connection
>>>>>>      client_controls=clientctrls)
>>>>>>    File "/usr/lib/python2.7/site-packages/ipapython/ipaldap.py", 
>>>>>> line
>>>>>> 1074, in external_bind
>>>>>>      '', auth_tokens, server_controls, client_controls)
>>>>>>    File "/usr/lib64/python2.7/contextlib.py", line 35, in __exit__
>>>>>>      self.gen.throw(type, value, traceback)
>>>>>>    File "/usr/lib/python2.7/site-packages/ipapython/ipaldap.py", 
>>>>>> line
>>>>>> 976, in error_handler
>>>>>>      error=info)
>>>>>> NetworkError: cannot connect to
>>>>>> 'ldapi://%2fvar%2frun%2fslapd-IPA-LOCAL.socket':
>>>>>>
>>>>>> 2015-05-20T03:50:41Z DEBUG Traceback (most recent call last):
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/service.py", 
>>>>>> line
>>>>>> 388, in start_creation
>>>>>>      run_step(full_msg, method)
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/service.py", 
>>>>>> line
>>>>>> 378, in run_step
>>>>>>      method()
>>>>>>    File
>>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/upgradeinstance.py", 
>>>>>>
>>>>>> line 315, in __upgrade
>>>>>>      raise RuntimeError(e)
>>>>>> RuntimeError: cannot connect to
>>>>>> 'ldapi://%2fvar%2frun%2fslapd-IPA-LOCAL.socket':
>>>>>>
>>>>>> Reason was the ipa-server-install tried to connect before DS was 
>>>>>> ready.
>>>>>>
>>>>>> The patch adds waiting until DS is ready.
>>>>>>
>>>>>> Patch attached.
>>>>>>
>>>>>> Fraser can you please check if this fix works? I can't reproduce it.
>>>>>> Thank you, Martin^2.
>>>>>>
>>>>> ACK; fixes the issue for me.
>>>>>
>>>>> One minor comment:
>>>>>
>>>>>> +    def __start(self):
>>>>>> +        super(IPAUpgrade, self).start()
>>>>>>
>>>>>>       def __stop_instance(self):
>>>>>>           """Stop only the main DS instance"""
>>>>>> @@ -187,7 +185,7 @@ class IPAUpgrade(service.Service):
>>>>>>           self.step("saving configuration", self.__save_config)
>>>>>>           self.step("disabling listeners", self.__disable_listeners)
>>>>>>           self.step("enabling DS global lock",
>>>>>> self.__enable_ds_global_write_lock)
>>>>>> -        self.step("starting directory server", self.__start_nowait)
>>>>>> +        self.step("starting directory server", self.__start)
>>>>> I think you can just say `self.start' and remove `__start' function.
>>>>>
>>>>> Cheers,
>>>>> Fraser
>>>>>
>>>> Pushed to master: 3d17bf8e639616893d6937d98662ccc7541d1e23
>>> This semi-breaks ipa-server-install for me:
>>>
>>> Configuring directory server (dirsrv): Estimated time 1 minute
>>>    [1/38]: creating directory server user
>>>    [2/38]: creating directory server instance
>>> ipa         : CRITICAL Failed to restart the directory server 
>>> ([Errno 2] No
>>> such file or directory). See the installation log for details.
>>>    [3/38]: adding default schema
>>>    [4/38]: enabling memberof plugin
>>>
>>> It would be nice to check if the socket exists before waiting for it.
>>>
>> This (non-catastrophic but annoying) regression occurred for me too.
>> I wasn't paying enough attention to ipa-server-install before I
>> ACKed the patch :/
>>
>>> -- 
>>> Jan Cholasta
> Hello,
>
> this patch fixes the issue.
>
>
>
>
>
Updated patch attached

-- 
Martin Basti

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20150525/00f760e7/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-mbasti-0259.2-Fix-use-DS-socket-check-only-for-upgrade.patch
Type: text/x-patch
Size: 4561 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20150525/00f760e7/attachment.bin>


More information about the Freeipa-devel mailing list