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

Jan Cholasta jcholast at redhat.com
Mon May 25 06:13:35 UTC 2015


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.

-- 
Jan Cholasta




More information about the Freeipa-devel mailing list