# File lib/moneta/adapters/sequel.rb, line 69 def increment(key, amount = 1, options = {}) @backend.transaction do locked_table = @table.for_update if record = locked_table[:k => key] value = Utils.to_int(record[:v]) + amount locked_table.where(:k => key).update(:v => blob(value.to_s)) value else locked_table.insert(:k => key, :v => blob(amount.to_s)) amount end end rescue ::Sequel::DatabaseError # Concurrent modification might throw a bunch of different errors tries ||= 0 (tries += 1) < 10 ? retry : raise end