Aggiornamento fallito su db_migrate

Sto cercando di aggiornare la mia istanza di Discourse da 2.9.0.beta10 a 3.2.0.beta1.
Sto riscontrando un errore simile a questo:

Tasks: TOP => db:migrate
(Vedi la traccia completa eseguendo il task con --trace)
I, [2023-09-15T02:32:08.512373 #1]  INFO -- : Compiled js-processor: tmp/js-processor.js
== 20230118020114 AddPublicTopicCountToTags: migrating ========================
-- add_column(:tags, :public_topic_count, :integer, {:default=>0, :null=>false})
   => 0.0021s
-- execute("UPDATE tags t\nSET public_topic_count = x.topic_count\nFROM (\n  SELECT\n    COUNT(topics.id) AS topic_count,\n    tags.id AS tag_id\n  FROM tags\n  INNER JOIN topic_tags ON tags.id = topic_tags.tag_id\n  INNER JOIN topics ON topics.id = topic_tags.topic_id AND topics.deleted_at IS NULL AND topics.archetype != 'private_message'\n  INNER JOIN categories ON categories.id = topics.category_id AND NOT categories.read_restricted\n  GROUP BY tags.id\n) x\nWHERE x.tag_id = t.id\nAND x.topic_count <> t.public_topic_count;\n")

I, [2023-09-15T02:32:08.512848 #1]  INFO -- : Terminating async processes
I, [2023-09-15T02:32:08.512929 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42
I, [2023-09-15T02:32:08.513001 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111
111:signal-handler (2023-09-15 02:32:08.513 UTC [42] LOG:  received fast shutdown request
1694745128) Received SIGTERM scheduling shutdown...
2023-09-15 02:32:08.522 UTC [42] LOG:  aborting any active transactions
2023-09-15 02:32:08.524 UTC [42] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2023-09-15 02:32:08.526 UTC [46] LOG:  shutting down
111:M 15 Sep 2023 02:32:08.532 # User requested shutdown...
111:M 15 Sep 2023 02:32:08.532 * Saving the final RDB snapshot before exiting.
2023-09-15 02:32:08.768 UTC [42] LOG:  database system is shut down
111:M 15 Sep 2023 02:32:11.475 * DB saved on disk
111:M 15 Sep 2023 02:32:11.475 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 787 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}

Qualche idea su cosa c’è che non va?
Ho aggiornato la mia istanza in precedenza senza errori.
Discourse doctor non mi ha fornito indizi da cercare.

Il messaggio sopra si riferisce a questa istruzione SQL?

UPDATE tags t
SET public_topic_count = x.topic_count
FROM (
	SELECT    COUNT(topics.id) AS topic_count,    
	tags.id AS tag_id
	FROM tags
	INNER JOIN topic_tags ON tags.id = topic_tags.tag_id
	INNER JOIN topics ON topics.id = topic_tags.topic_id AND topics.deleted_at IS NULL AND topics.archetype != 'private_message'
	INNER JOIN categories ON categories.id = topics.category_id AND NOT categories.read_restricted
	GROUP BY tags.id
) x
	WHERE x.tag_id = t.id
	AND x.topic_count <> t.public_topic_count;

Perché se eseguo direttamente nel DB solo il codice SELECT non ottengo errori.
Vedo che il job db:migrate prima aggiunge la colonna con
add_column(:tags, :public_topic_count, :integer, {:default=>0, :null=>false})
Non ho idea del perché poi fallisca sulla query sopra?

C’è un messaggio in fondo al log che dice “scorri verso l’alto e cerca messaggi di errore precedenti”? Se sì, stai trovando altri messaggi di errore?

2 Mi Piace

Grazie per il suggerimento, prima c’era un errore. Dovrei davvero smettere di aggiornare i server dopo mezzanotte, le mie risorse sono basse in quel momento.


Comunque per i futuri lettori:
L’errore è stato prodotto perché in qualche modo avevamo nella tabella dei tag più righe con lo stesso valore nella colonna del nome.
Dopo aver eliminato i tag con righe duplicate, l’aggiornamento è andato a buon fine.

3 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.