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:
parent
5e2d2e78e5
commit
8dd8e2f72e
@ -1157,13 +1157,15 @@ class GossamerForumsImporter < ImportScripts::Base
|
||||
#check if exists, create if not
|
||||
#get children, create -- SELECT post_id, user_id_fk, forum_id_fk, post_root_id, post_subject, post_time, post_message, post_father_id, post_replies FROM gforum_Post WHERE post_root_id = post_id
|
||||
#this parts needs to be synchronously to avoid race conditions
|
||||
|
||||
puts "TIJ AA post_id #{post_id}"
|
||||
# Fetch the post data for the given post_id (this is the first post in the topic)
|
||||
row = execute_query("SELECT post_id, user_id_fk, forum_id_fk, post_root_id, post_subject, post_time, post_message, post_father_id, post_replies FROM gforum_Post WHERE post_id = #{post_id}", mysql_client).first
|
||||
|
||||
puts "TIJ BB post_id #{post_id}"
|
||||
# Early return if the post data is not found
|
||||
return unless row
|
||||
|
||||
puts "TIJ CC post_id #{post_id}"
|
||||
# Extract key values from the fetched row
|
||||
post_id = row['post_id'].to_i
|
||||
puts "Processing post_id #{row['post_id']} post_root_id #{row['post_root_id']} post_subject/title #{row['post_subject']} forum_id_fk/category_id #{row['forum_id_fk']}"
|
||||
@ -1174,6 +1176,7 @@ class GossamerForumsImporter < ImportScripts::Base
|
||||
puts "discourse_user_id #{discourse_user_id} discourse_category_id #{discourse_category_id}"
|
||||
return unless discourse_user_id && discourse_category_id
|
||||
|
||||
puts "TIJ DD post_id #{post_id}"
|
||||
# Ensure the topic title is valid and generate a unique title if needed
|
||||
title = ensure_valid_title(row['post_subject'])
|
||||
unique_title = title
|
||||
@ -1183,6 +1186,7 @@ class GossamerForumsImporter < ImportScripts::Base
|
||||
|
||||
# Check if the topic has already been imported using the custom field 'original_gossamer_id'
|
||||
unless TopicCustomField.exists?(name: 'original_gossamer_id', value: row['post_id'])
|
||||
puts "TIJ EE post_id #{post_id}"
|
||||
ActiveRecord::Base.transaction do
|
||||
# Create the new topic in Discourse
|
||||
begin
|
||||
@ -1191,6 +1195,7 @@ class GossamerForumsImporter < ImportScripts::Base
|
||||
|
||||
while !topic_created
|
||||
begin
|
||||
puts "TIJ FF post_id #{post_id}"
|
||||
puts "CREATE TOPIC unique_title #{unique_title} title #{title} discourse_user_id #{discourse_user_id} category_id #{discourse_category_id}"
|
||||
topic = Topic.create!(
|
||||
title: unique_title,
|
||||
@ -1230,7 +1235,8 @@ class GossamerForumsImporter < ImportScripts::Base
|
||||
# Increment the post count for the topic
|
||||
post_number = fetch_db_topic_post_numbers(topic.id).to_i + 1
|
||||
update_db_topic_post_numbers(topic.id, post_number)
|
||||
|
||||
puts "TIJ GG post_id #{post_id}"
|
||||
|
||||
# Create the initial post in the new topic
|
||||
post = Post.create!(
|
||||
topic_id: topic.id,
|
||||
@ -1247,7 +1253,8 @@ class GossamerForumsImporter < ImportScripts::Base
|
||||
# Increment the post count for the topic and user
|
||||
update_db_topic_post_count(topic.id, fetch_db_topic_post_count(topic.id).to_i + 1)
|
||||
update_db_user_post_count(discourse_user_id, fetch_db_user_post_count(discourse_user_id).to_i + 1)
|
||||
|
||||
|
||||
puts "TIJ HH post_id #{post_id}"
|
||||
# Handle any attachments associated with the post
|
||||
handle_post_attachments(row['post_id'], post, discourse_user_id)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user