X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Fdbhash.rb;h=3168f208f1a30c6601310ccc54b1bb7577fd3967;hb=1676abaf61c9b6c40714e00d6637e3a73d8b527b;hp=ed5b9e61511f2237dd609148b14a474983b92f1d;hpb=8483e916ca3f1bc5450dc8c6966786b6958c2465;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/dbhash.rb b/lib/rbot/dbhash.rb index ed5b9e61..3168f208 100644 --- a/lib/rbot/dbhash.rb +++ b/lib/rbot/dbhash.rb @@ -10,7 +10,10 @@ end module BDB class CIBtree < Btree def bdb_bt_compare(a, b) - a.downcase <=> b.downcase + if a == nil || b == nil + debug "CIBTree: WARNING: comparing #{a.inspect} (#{self[a].inspect}) with #{b.inspect} (#{self[b].inspect})" + end + (a||'').downcase <=> (b||'').downcase end end end @@ -112,13 +115,14 @@ module Irc return @@env.open_db(BDB::CIBtree, name, nil, "r+", 0600) end - def DBTree.cleanup_env() + def DBTree.cleanup_logs() + begin + debug "DBTree: checkpointing ..." + @@env.checkpoint + rescue => e + debug "Failed: #{e}" + end begin - debug "DBTree: checking transactions ..." - has_active_txn = @@env.txn_stat["st_nactive"] > 0 - if has_active_txn - debug "DBTree: WARNING: not all transactions completed!" - end debug "DBTree: flushing log ..." @@env.log_flush logs = @@env.log_archive(BDB::ARCH_ABS) @@ -126,6 +130,19 @@ module Irc logs.each { |log| File.delete(log) } + rescue => e + debug "Failed: #{e}" + end + end + + def DBTree.cleanup_env() + begin + debug "DBTree: checking transactions ..." + has_active_txn = @@env.txn_stat["st_nactive"] > 0 + if has_active_txn + debug "DBTree: WARNING: not all transactions completed!" + end + DBTree.cleanup_logs debug "DBTree: closing environment #{@@env}" path = @@env.home @@env.close