[Ovirt-devel] [PATCH server] Add exception handling to dbomatic
Joey Boggs
jboggs at redhat.com
Thu Mar 19 19:16:35 UTC 2009
I replied last night on this but don't see it anywhere, ack from me
Steve Linabery wrote:
> On Wed, Mar 18, 2009 at 01:58:59PM -0700, Ian Main wrote:
>
>> This adds generic exception handling around the bulk of the code
>> so we'll know why things break when they do.
>>
>> Signed-off-by: Ian Main <imain at redhat.com>
>> ---
>> src/db-omatic/db_omatic.rb | 79 +++++++++++++++++++++++++-------------------
>> 1 files changed, 45 insertions(+), 34 deletions(-)
>>
>> diff --git a/src/db-omatic/db_omatic.rb b/src/db-omatic/db_omatic.rb
>> index 16a0cbf..8409c91 100755
>> --- a/src/db-omatic/db_omatic.rb
>> +++ b/src/db-omatic/db_omatic.rb
>> @@ -75,23 +75,30 @@ class DbOmatic < Qpid::Qmf::Console
>> end
>> @logger.info "dbomatic started."
>>
>> - ensure_credentials
>> -
>> - database_connect
>> -
>> - server, port = nil
>> - sleepy = 5
>> - while true do
>> - server, port = get_srv('qpidd', 'tcp')
>> - break if server
>> - @logger.error "Unable to determine qpid server from DNS SRV record, retrying.." if not server
>> - sleep(sleepy)
>> - sleepy *= 2 if sleepy < 120
>> - end
>> + begin
>> + ensure_credentials
>> +
>> + database_connect
>> +
>> + server, port = nil
>> + sleepy = 5
>> + while true do
>> + server, port = get_srv('qpidd', 'tcp')
>> + break if server
>> + @logger.error "Unable to determine qpid server from DNS SRV record, retrying.." if not server
>> + sleep(sleepy)
>> + sleepy *= 2 if sleepy < 120
>> + end
>>
>> - @logger.info "Connecting to amqp://#{server}:#{port}"
>> - @session = Qpid::Qmf::Session.new(:console => self, :manage_connections => true)
>> - @broker = @session.add_broker("amqp://#{server}:#{port}", :mechanism => 'GSSAPI')
>> + @logger.info "Connecting to amqp://#{server}:#{port}"
>> + @session = Qpid::Qmf::Session.new(:console => self, :manage_connections => true)
>> + @broker = @session.add_broker("amqp://#{server}:#{port}", :mechanism => 'GSSAPI')
>> +
>> + db_init_cleanup
>> + rescue Exception => ex
>> + @logger.error "Error in db-omatic: #{ex}"
>> + @logger.error ex.backtrace
>> + end
>> end
>>
>>
>> @@ -403,30 +410,35 @@ class DbOmatic < Qpid::Qmf::Console
>> # and makes sure all the agents are still reporting. If they aren't they get marked as
>> # down.
>> def check_heartbeats()
>> - while true
>> - sleep(5)
>> + begin
>> + while true
>> + sleep(5)
>>
>> - synchronize do
>> - # Get seconds from the epoch
>> - t = Time.new.to_i
>> + synchronize do
>> + # Get seconds from the epoch
>> + t = Time.new.to_i
>>
>> - @heartbeats.keys.each do | key |
>> - agent, timestamp = @heartbeats[key]
>> + @heartbeats.keys.each do | key |
>> + agent, timestamp = @heartbeats[key]
>>
>> - # Heartbeats from qpid are in microseconds, we just need seconds..
>> - s = timestamp / 1000000000
>> - delta = t - s
>> + # Heartbeats from qpid are in microseconds, we just need seconds..
>> + s = timestamp / 1000000000
>> + delta = t - s
>>
>> - if delta > 30
>> - # No heartbeat for 30 seconds.. deal with dead/disconnected agent.
>> - agent_disconnected(agent)
>> + if delta > 30
>> + # No heartbeat for 30 seconds.. deal with dead/disconnected agent.
>> + agent_disconnected(agent)
>>
>> - @heartbeats.delete(key)
>> - else
>> - agent_connected(agent)
>> + @heartbeats.delete(key)
>> + else
>> + agent_connected(agent)
>> + end
>> end
>> end
>> end
>> + rescue Exception => ex
>> + @logger.error "Error in db-omatic: #{ex}"
>> + @logger.error ex.backtrace
>> end
>> end
>> end
>> @@ -436,10 +448,9 @@ def main()
>>
>> dbsync = DbOmatic.new()
>>
>> - dbsync.db_init_cleanup()
>> -
>> # Call into mainloop..
>> dbsync.check_heartbeats()
>> +
>> end
>>
>> main()
>> --
>> 1.6.0.6
>>
>> _______________________________________________
>> Ovirt-devel mailing list
>> Ovirt-devel at redhat.com
>> https://www.redhat.com/mailman/listinfo/ovirt-devel
>>
>
> Works for me! ACKity-ACK.
>
> Steve
>
> _______________________________________________
> Ovirt-devel mailing list
> Ovirt-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/ovirt-devel
>
More information about the ovirt-devel
mailing list