DEV: Store details log entries in converter as JSON (#29778)

Plus small DB related fixes
This commit is contained in:
Gerhard Schlager
2024-11-19 23:54:00 +01:00
committed by GitHub
parent 75f4a14568
commit a48af2f120
8 changed files with 42 additions and 21 deletions

View File

@ -1,7 +1,6 @@
# frozen_string_literal: true
require "extralite"
require "lru_redux"
module Migrations::Database
class Connection
@ -11,7 +10,7 @@ module Migrations::Database
def self.open_database(path:)
FileUtils.mkdir_p(File.dirname(path))
db = Extralite::Database.new(path)
db = ::Extralite::Database.new(path)
db.pragma(
busy_timeout: 60_000, # 60 seconds
journal_mode: "wal",
@ -30,8 +29,6 @@ module Migrations::Database
@transaction_batch_size = transaction_batch_size
@db = self.class.open_database(path:)
@statement_counter = 0
# don't cache too many prepared statements
@statement_cache = PreparedStatementCache.new(PREPARED_STATEMENT_CACHE_SIZE)
@fork_hooks = setup_fork_handling
@ -46,7 +43,7 @@ module Migrations::Database
end
def closed?
!@db || @db.closed?
@db.nil? || @db.closed?
end
def insert(sql, parameters = [])
@ -76,7 +73,7 @@ module Migrations::Database
end
def close_connection(keep_path:)
return if !@db
return if @db.nil?
commit_transaction
@statement_cache.clear

View File

@ -1,7 +1,5 @@
# frozen_string_literal: true
require "singleton"
module Migrations::Database
module IntermediateDB
def self.setup(db_connection)

View File

@ -18,7 +18,7 @@ module Migrations::Database::IntermediateDB
type,
message,
exception&.full_message(highlight: false),
details,
::Migrations::Database.to_json(details),
)
end
end

View File

@ -21,12 +21,14 @@ module Migrations::Database
migrate_from_path(@migrations_path, performed_migrations)
@db.close
nil
end
def reset!
[@db_path, "#{@db_path}-wal", "#{@db_path}-shm"].each do |path|
FileUtils.remove_file(path, force: true) if File.exist?(path)
end
nil
end
private

View File

@ -1,5 +1,7 @@
# frozen_string_literal: true
require "lru_redux"
module Migrations::Database
class PreparedStatementCache < LruRedux::Cache
class PreparedStatementHash < Hash