v0.41 Further improve FULL concurrency support, for both MySQL/MariaDB _and_ importantly, the PostGreSQL Discourse DB additions and changes with ActiveRecord connection pooling and Mutex

This commit is contained in:
David Sainty 2024-08-17 16:16:53 +10:00
parent 2966e1c9f9
commit 5e2d2e78e5

View File

@ -1110,17 +1110,17 @@ class GossamerForumsImporter < ImportScripts::Base
# Use connection ppoling for PostgreSQL and synchronize access to shared resources # Use connection ppoling for PostgreSQL and synchronize access to shared resources
ActiveRecord::Base.connection_pool.with_connection do ActiveRecord::Base.connection_pool.with_connection do
mutex.synchronize do mutex.synchronize do
begin # begin
puts "Processing post ID: #{post_id}" puts "Processing post ID: #{post_id}"
topic_import_job(post_id, mysql_client) # Import topic and its replies topic_import_job(post_id, mysql_client) # Import topic and its replies
mark_post_as_complete(post_id) # Mark as complete in SQLite table mark_post_as_complete(post_id) # Mark as complete in SQLite table
rescue => e # rescue => e
puts "Error processing post ID #{post_id}: #{e.message}" puts "Error processing post ID #{post_id}: #{e.message}"
mark_post_as_failed(post_id) mark_post_as_failed(post_id)
ensure # ensure
# Ensure the MariaDB connection is closed after processing # Ensure the MariaDB connection is closed after processing
mysql_client.close if mysql_client mysql_client.close if mysql_client
end # end
end end
end end
end end