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

2015-05-25 Thread Fraser Tweedale
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

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code


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

2015-05-24 Thread Jan Cholasta

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

--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code


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

2015-05-22 Thread Petr Vobornik

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
--
Petr Vobornik

--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code


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

2015-05-21 Thread Fraser Tweedale
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

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code