[Ovirt-devel] [PATCH server] Fix taskomatic qpid reconnect
Jason Guiditta
jason.guiditta at gmail.com
Thu Mar 5 18:20:09 UTC 2009
ACK, taskomatic seems to still work fine after this patch
On Tue, Mar 3, 2009 at 6:00 PM, Ian Main <imain at redhat.com> wrote:
> This patch uses the managed connection arrangement in the qpid library
> which uses a separate thread to manage the qpid connection. This is
> the same as was done for dbomatic in the previous patch.
>
> Signed-off-by: Ian Main <imain at redhat.com>
> ---
> src/task-omatic/taskomatic.rb | 58
> +++++++++++++---------------------------
> 1 files changed, 19 insertions(+), 39 deletions(-)
>
> diff --git a/src/task-omatic/taskomatic.rb b/src/task-omatic/taskomatic.rb
> index 8d35692..eb8e2ae 100755
> --- a/src/task-omatic/taskomatic.rb
> +++ b/src/task-omatic/taskomatic.rb
> @@ -60,9 +60,6 @@ class TaskOmatic
> @sleeptime = 2
> @nth_host = 0
>
> - @session = Qpid::Qmf::Session.new()
> - @broker = nil
> -
> do_daemon = true
>
> opts = OptionParser.new do |opts|
> @@ -98,43 +95,31 @@ class TaskOmatic
> @logger = Logger.new(STDERR)
> end
>
> + ensure_credentials
>
> - # this has to be after daemonizing now because it could take a LONG
> time to
> - # actually connect if qpidd isn't running yet etc.
> - qpid_ensure_connected
> -
> - end
> -
> - def qpid_ensure_connected()
> -
> - return if @broker and @broker.connected?
> -
> - sleepy = 2
> -
> - while true do
> - begin
> - server, port = get_srv('qpidd', 'tcp')
> - raise "Unable to determine qpid server from DNS SRV record" if not
> server
> + server, port = nil
> + (1..4).each do
> + server, port = get_srv('qpidd', 'tcp')
> + break if server
> + @logger.error "Unable to determine qpid server from DNS SRV record"
> if not server
> + sleep(10)
> + end
>
> - @broker = @session.add_broker("amqp://#{server}:#{port}",
> :mechanism => 'GSSAPI')
> + @session = Qpid::Qmf::Session.new(:manage_connections => true)
> + @logger.info "Connecting to amqp://#{server}:#{port}"
> + @broker = @session.add_broker("amqp://#{server}:#{port}", :mechanism
> => 'GSSAPI')
>
> - # Connection succeeded, go about our business.
> - @logger.info "Connected to amqp://#{server}:#{port}"
> - return
> + end
>
> - rescue Exception => msg
> - @logger.error "Error connecting to qpidd: #{msg}"
> - @logger.error msg.backtrace
> - end
> - sleep(sleepy)
> - sleepy *= 2
> - sleepy = 120 if sleepy > 120
> + def ensure_credentials()
> + get_credentials('qpidd')
> + get_credentials('libvirt')
>
> - begin
> - # Could also be a credentials problem? Try to get them again..
> + Thread.new do
> + while true do
> + sleep(3600)
> get_credentials('qpidd')
> - rescue Exception => msg
> - @logger.error "Error getting qpidd credentials: #{msg}"
> + get_credentials('libvirt')
> end
> end
> end
> @@ -804,8 +789,6 @@ class TaskOmatic
> end
> end
>
> - qpid_ensure_connected
> -
> tasks.each do |task|
>
> task.time_started = Time.now
> @@ -867,9 +850,6 @@ class TaskOmatic
> end
> end
>
> -get_credentials('libvirt')
> -get_credentials('qpidd')
> -
> taskomatic = TaskOmatic.new()
> taskomatic.mainloop()
>
> --
> 1.6.0.6
>
> _______________________________________________
> Ovirt-devel mailing list
> Ovirt-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/ovirt-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/ovirt-devel/attachments/20090305/15145372/attachment.htm>
More information about the ovirt-devel
mailing list