From 7c644289bd56aaf64e2cda89f73ccfd61b10dbb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Mon, 12 May 2014 13:12:59 +0200 Subject: [PATCH] Bug #2857: Fix boolean column for sqlite, do not report false errors in slave DB (cherry picked from commit b3483aac7f29dd749ce732245a5fd952127d7ec1) --- src/onedb/fsck.rb | 16 ++++++++++------ src/onedb/onedb_backend.rb | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/onedb/fsck.rb b/src/onedb/fsck.rb index e5cd76e5e2..8944bbf159 100644 --- a/src/onedb/fsck.rb +++ b/src/onedb/fsck.rb @@ -268,9 +268,7 @@ EOT end end - if db_version[:is_slave] - log_error("^ User errors need to be fixed in the master OpenNebula") - else + if !db_version[:is_slave] @db.transaction do users_fix.each do |id, user| @db[:user_pool].where(:oid => id).update( @@ -278,6 +276,8 @@ EOT :gid => user[:gid]) end end + elsif !users_fix.empty? + log_error("^ User errors need to be fixed in the master OpenNebula") end log_time() @@ -297,11 +297,14 @@ EOT users_new_elem = doc.create_element("USERS") doc.root.add_child(users_new_elem) + error_found = false + group[gid].each do |id| id_elem = users_elem.at_xpath("ID[.=#{id}]") if id_elem.nil? log_error("User #{id} is missing from Group #{gid} users id list") + error_found = true else id_elem.remove end @@ -311,15 +314,16 @@ EOT users_elem.xpath("ID").each do |id_elem| log_error("User #{id_elem.text} is in Group #{gid} users id list, but it should not") + error_found = true end row[:body] = doc.to_s - if db_version[:is_slave] - log_error("^ Group errors need to be fixed in the master OpenNebula") - else + if !db_version[:is_slave] # commit @db[:group_pool_new].insert(row) + elsif error_found + log_error("^ Group errors need to be fixed in the master OpenNebula") end end end diff --git a/src/onedb/onedb_backend.rb b/src/onedb/onedb_backend.rb index 653cfa4e14..2438ec8939 100644 --- a/src/onedb/onedb_backend.rb +++ b/src/onedb/onedb_backend.rb @@ -327,6 +327,7 @@ class BackEndSQLite < OneDBBacKEnd begin @db = Sequel.sqlite(@sqlite_file) + @db.integer_booleans = true rescue Exception => e raise "Error connecting to DB: " + e.message end