ACK, taskomatic seems to still work fine after this patch<br><br><div class="gmail_quote">On Tue, Mar 3, 2009 at 6:00 PM, Ian Main <span dir="ltr"><<a href="mailto:imain@redhat.com">imain@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This patch uses the managed connection arrangement in the qpid library<br>
which uses a separate thread to manage the qpid connection.  This is<br>
the same as was done for dbomatic in the previous patch.<br>
<br>
Signed-off-by: Ian Main <<a href="mailto:imain@redhat.com">imain@redhat.com</a>><br>
---<br>
 src/task-omatic/taskomatic.rb |   58 +++++++++++++---------------------------<br>
 1 files changed, 19 insertions(+), 39 deletions(-)<br>
<br>
diff --git a/src/task-omatic/taskomatic.rb b/src/task-omatic/taskomatic.rb<br>
index 8d35692..eb8e2ae 100755<br>
--- a/src/task-omatic/taskomatic.rb<br>
+++ b/src/task-omatic/taskomatic.rb<br>
@@ -60,9 +60,6 @@ class TaskOmatic<br>
     @sleeptime = 2<br>
     @nth_host = 0<br>
<br>
-    @session = Qpid::Qmf::Session.new()<br>
-    @broker = nil<br>
-<br>
     do_daemon = true<br>
<br>
     opts = OptionParser.new do |opts|<br>
@@ -98,43 +95,31 @@ class TaskOmatic<br>
       @logger = Logger.new(STDERR)<br>
     end<br>
<br>
+    ensure_credentials<br>
<br>
-    # this has to be after daemonizing now because it could take a LONG time to<br>
-    # actually connect if qpidd isn't running yet etc.<br>
-    qpid_ensure_connected<br>
-<br>
-  end<br>
-<br>
-  def qpid_ensure_connected()<br>
-<br>
-    return if @broker and @broker.connected?<br>
-<br>
-    sleepy = 2<br>
-<br>
-    while true do<br>
-      begin<br>
-        server, port = get_srv('qpidd', 'tcp')<br>
-        raise "Unable to determine qpid server from DNS SRV record" if not server<br>
+    server, port = nil<br>
+    (1..4).each do<br>
+      server, port = get_srv('qpidd', 'tcp')<br>
+      break if server<br>
+      @logger.error "Unable to determine qpid server from DNS SRV record" if not server<br>
+      sleep(10)<br>
+    end<br>
<br>
-        @broker = @session.add_broker("amqp://#{server}:#{port}", :mechanism => 'GSSAPI')<br>
+    @session = Qpid::Qmf::Session.new(:manage_connections => true)<br>
+    @<a href="http://logger.info" target="_blank">logger.info</a> "Connecting to amqp://#{server}:#{port}"<br>
+    @broker = @session.add_broker("amqp://#{server}:#{port}", :mechanism => 'GSSAPI')<br>
<br>
-        # Connection succeeded, go about our business.<br>
-        @<a href="http://logger.info" target="_blank">logger.info</a> "Connected to amqp://#{server}:#{port}"<br>
-        return<br>
+  end<br>
<br>
-      rescue Exception => msg<br>
-        @logger.error "Error connecting to qpidd: #{msg}"<br>
-        @logger.error msg.backtrace<br>
-      end<br>
-      sleep(sleepy)<br>
-      sleepy *= 2<br>
-      sleepy = 120 if sleepy > 120<br>
+  def ensure_credentials()<br>
+    get_credentials('qpidd')<br>
+    get_credentials('libvirt')<br>
<br>
-      begin<br>
-        # Could also be a credentials problem?  Try to get them again..<br>
+    Thread.new do<br>
+      while true do<br>
+        sleep(3600)<br>
         get_credentials('qpidd')<br>
-      rescue Exception => msg<br>
-        @logger.error "Error getting qpidd credentials: #{msg}"<br>
+        get_credentials('libvirt')<br>
       end<br>
     end<br>
   end<br>
@@ -804,8 +789,6 @@ class TaskOmatic<br>
         end<br>
       end<br>
<br>
-      qpid_ensure_connected<br>
-<br>
       tasks.each do |task|<br>
<br>
         task.time_started = Time.now<br>
@@ -867,9 +850,6 @@ class TaskOmatic<br>
   end<br>
 end<br>
<br>
-get_credentials('libvirt')<br>
-get_credentials('qpidd')<br>
-<br>
 taskomatic = TaskOmatic.new()<br>
 taskomatic.mainloop()<br>
<font color="#888888"><br>
--<br>
1.6.0.6<br>
<br>
_______________________________________________<br>
Ovirt-devel mailing list<br>
<a href="mailto:Ovirt-devel@redhat.com">Ovirt-devel@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/ovirt-devel" target="_blank">https://www.redhat.com/mailman/listinfo/ovirt-devel</a><br>
</font></blockquote></div><br>