Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

Dopo aver installato Discourse con “Docker version 20.10.5, build 55c4c8” su CentOS 8, il sito è in esecuzione, ma le chiamate DELETE a /draft.json vanno sempre in timeout.

Ho Apache in esecuzione e ho provato sia con un reverse proxy Apache che con HAProxy; il comportamento è lo stesso.

Non so se sia in qualche modo correlato, ma trovo molti di questi errori in unicorn.stdout.log:

==> ./shared/standalone/log/rails/unicorn.stdout.log <==

2021-03-18T10:02:25.138Z pid=108 tid=ocs ERROR: Errore durante il recupero del job: Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

Avvio di 1 sidekiq supervisionato

Caricamento di Sidekiq nel processo id 119

2021-03-18T10:40:09.682Z pid=119 tid=orn ERROR: Errore durante il recupero del job: Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.684Z pid=119 tid=ohf ERROR: Errore durante il recupero del job: Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.685Z pid=119 tid=owv ERROR: Errore durante il recupero del job: Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.683Z pid=119 tid=oob ERROR: Errore durante il recupero del job: Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.683Z pid=119 tid=omr ERROR: Errore durante il recupero del job: Errore di connessione a Redis su localhost:6379 (Errno::EADDRNOTAVAIL)

Avvio di 1 sidekiq supervisionato

Caricamento di Sidekiq nel processo id 121

Redis registra errori in /var/discourse/shared/standalone/log/var-log/redis?

Questo è il contenuto di “current”:

53:M 18 Mar 2021 17:07:05.076 * 10 modifiche in 300 secondi. Salvataggio in corso...
53:M 18 Mar 2021 17:07:05.076 * Salvataggio in background avviato dal processo 25018
25018:C 18 Mar 2021 17:07:05.126 * Database salvato su disco
25018:C 18 Mar 2021 17:07:05.127 * RDB: 2 MB di memoria utilizzati da copy-on-write
53:M 18 Mar 2021 17:07:05.177 * Salvataggio in background terminato con successo
53:M 18 Mar 2021 17:12:06.097 * 10 modifiche in 300 secondi. Salvataggio in corso...
53:M 18 Mar 2021 17:12:06.098 * Salvataggio in background avviato dal processo 25337
25337:C 18 Mar 2021 17:12:06.145 * Database salvato su disco
25337:C 18 Mar 2021 17:12:06.145 * RDB: 2 MB di memoria utilizzati da copy-on-write
53:M 18 Mar 2021 17:12:06.198 * Salvataggio in background terminato con successo

Questi log mi sembrano corretti. Hai ancora problemi mentre navighi nella tua istanza di Discourse?

Non riesco ancora a eliminare post, inviti e modifiche ai post annullati.

Sembra esserci un problema in tutte le chiamate che utilizzano il metodo HTTP DELETE. Posso suggerire a Discourse di utilizzare POST invece di DELETE? Sembra di sì, come discusso qui: How can Discourse make POST instead of DELETE for "smart" CDN?. Tuttavia, non sto utilizzando alcuna CDN; ho solo un server virtuale standard con CentOS e Docker, installato seguendo le istruzioni del sito di Discourse.

Parte del log di Haproxy con errori 408 su HTTP DELETE. Cosa potrebbe causare l’abbandono delle richieste DELETE @codinghorror? Se queste richieste DELETE raggiungono Haproxy, dovrebbero anche raggiungere il software all’interno di Docker. C’è qualcosa lì dentro che potrebbe essere “responsabile” del problema?

Mar 20 01:47:46 id22302.example.com haproxy[43043]: 176.243.177.232:61760 [20/Mar/2021:01:47:16.622] http-in discourse_socket/server3 0/0/0/30004/30034 408 71 - - CD-- 3/3/2/2/0 0/0 "DELETE /draft.json HTTP/1.1"

Mar 20 01:47:46 id22302.example.com haproxy[43043]: 176.243.177.232:61760 [20/Mar/2021:01:47:16.622] http-in discourse_socket/server3 0/0/0/30004/30034 408 71 - - CD-- 3/3/2/2/0 0/0 "DELETE /draft.json HTTP/1.1"

Mar 20 01:48:09 id22302.example.com haproxy[43043]: 176.243.177.232:61505 [20/Mar/2021:01:47:43.921] http-in discourse_socket/server3 0/0/0/25081/25081 200 396 - - ---- 2/2/1/1/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll HTTP/1.1"

Mar 20 01:48:09 id22302.example.com haproxy[43043]: 176.243.177.232:61505 [20/Mar/2021:01:47:43.921] http-in discourse_socket/server3 0/0/0/25081/25081 200 396 - - ---- 2/2/1/1/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll HTTP/1.1"

Mar 20 01:48:12 id22302.example.com haproxy[43043]: 176.243.177.232:61887 [20/Mar/2021:01:47:42.886] http-in discourse_socket/server3 0/0/0/30007/30037 408 71 - - CD-- 2/2/1/1/0 0/0 "DELETE /draft.json HTTP/1.1"

Mar 20 01:48:12 id22302.example.com haproxy[43043]: 176.243.177.232:61887 [20/Mar/2021:01:47:42.886] http-in discourse_socket/server3 0/0/0/30007/30037 408 71 - - CD-- 2/2/1/1/0 0/0 "DELETE /draft.json HTTP/1.1"

Mar 20 01:48:25 id22302.example.com haproxy[43043]: 176.243.177.232:62083 [20/Mar/2021:01:48:25.863] http-in discourse_socket/server3 0/0/0/122/122 200 404 - - ---- 2/2/1/1/0 0/0 "POST /topics/timings HTTP/1.1"

Mar 20 01:48:25 id22302.example.com haproxy[43043]: 176.243.177.232:62083 [20/Mar/2021:01:48:25.863] http-in discourse_socket/server3 0/0/0/122/122 200 404 - - ---- 2/2/1/1/0 0/0 "POST /topics/timings HTTP/1.1"

Mar 20 01:48:34 id22302.example.com haproxy[43043]: 176.243.177.232:61505 [20/Mar/2021:01:48:09.193] http-in discourse_socket/server3 0/0/0/25044/25044 200 396 - - ---- 2/2/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll HTTP/1.1"

Mar 20 01:48:34 id22302.example.com haproxy[43043]: 176.243.177.232:61505 [20/Mar/2021:01:48:09.193] http-in discourse_socket/server3 0/0/0/25044/25044 200 396 - - ---- 2/2/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll HTTP/1.1"

Mar 20 01:48:59 id22302.example.com haproxy[43043]: 176.243.177.232:61505 [20/Mar/2021:01:48:34.487] http-in discourse_socket/server3 0/0/0/25087/25087 200 396 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll HTTP/1.1"

Mar 20 01:48:59 id22302.example.com haproxy[43043]: 176.243.177.232:61505 [20/Mar/2021:01:48:34.487] http-in discourse_socket/server3 0/0/0/25087/25087 200 396 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll HTTP/1.1"

Mar 20 01:49:35 id22302.example.com haproxy[43043]: 176.243.177.232:62413 [20/Mar/2021:01:49:35.637] http-in discourse_socket/server3 0/0/0/87/87 200 417 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll?dlp=t HTTP/1.1"

Mar 20 01:49:35 id22302.example.com haproxy[43043]: 176.243.177.232:62413 [20/Mar/2021:01:49:35.637] http-in discourse_socket/server3 0/0/0/87/87 200 417 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll?dlp=t HTTP/1.1"

Mar 20 01:50:36 id22302.example.com haproxy[43043]: 176.243.177.232:62714 [20/Mar/2021:01:50:36.568] http-in discourse_socket/server3 0/0/0/81/81 200 417 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll?dlp=t HTTP/1.1"

Mar 20 01:50:36 id22302.example.com haproxy[43043]: 176.243.177.232:62714 [20/Mar/2021:01:50:36.568] http-in discourse_socket/server3 0/0/0/81/81 200 417 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll?dlp=t HTTP/1.1"

Mar 20 01:51:37 id22302.example.com haproxy[43043]: 176.243.177.232:62993 [20/Mar/2021:01:51:37.541] http-in discourse_socket/server3 0/0/0/78/78 200 417 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll?dlp=t HTTP/1.1"

Mar 20 01:51:37 id22302.example.com haproxy[43043]: 176.243.177.232:62993 [20/Mar/2021:01:51:37.541] http-in discourse_socket/server3 0/0/0/78/78 200 417 - - ---- 1/1/0/0/0 0/0 "POST /message-bus/742b0b89384944a7b6376e2d6978889d/poll?dlp=t HTTP/1.1"

Questo è production.log. Non vedo mai apparire una richiesta di eliminazione, ma registro tutto il resto (apertura del post, modifica, salvataggio, ecc.):

Completed 200 OK in 81ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 14861)

Started GET "/composer_messages?composer_action=edit&topic_id=10&post_id=13" for 176.243.226.205 at 2021-03-20 15:51:09 +0100

Processing by ComposerMessagesController#index as JSON

Parameters: {"composer_action"=>"edit", "topic_id"=>"10", "post_id"=>"13"}

Completed 200 OK in 1191ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 16940)

Started POST "/presence/publish" for 176.243.226.205 at 2021-03-20 15:51:14 +0100

Processing by Presence::PresencesController#handle_message as */*

Parameters: {"state"=>"editing", "topic_id"=>"10", "post_id"=>"13"}

Completed 200 OK in 9ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 3192)

Started PUT "/t/e-previsto-un-ritorno-di-freddo-nutro/10" for 176.243.226.205 at 2021-03-20 15:51:17 +0100

Processing by TopicsController#update as */*

Parameters: {"title"=>"E' previsto un ritorno di freddo, nutro?", "category_id"=>1, "slug"=>"e-previsto-un-ritorno-di-freddo-nutro", "topic_id"=>"10", "topic"=>{"title"=>"E' previsto un ritorno di freddo, nutro?", "category_id"=>1}}

Completed 200 OK in 19ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 5149)

Started POST "/presence/publish" for 176.243.226.205 at 2021-03-20 15:51:17 +0100

Processing by Presence::PresencesController#handle_message as */*

Parameters: {"state"=>"closed", "topic_id"=>"10"}

Completed 200 OK in 10ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 3159)

Started PUT "/posts/13" for 176.243.226.205 at 2021-03-20 15:51:17 +0100

Processing by PostsController#update as */*

Parameters: {"post"=>{"edit_reason"=>"", "cooked"=>"<p>post di test per vedere. ssss</p>", "raw"=>"post di test per vedere. ssss", "topic_id"=>"10", "raw_old"=>""}, "id"=>"13"}

Completed 200 OK in 3296ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 86638)

Started GET "/t/10.json" for 176.243.226.205 at 2021-03-20 15:51:20 +0100

Processing by TopicsController#show as JSON

Parameters: {"id"=>"10"}

Completed 200 OK in 143ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 52707)

Started GET "/draft.json?draft_key=topic_10" for 176.243.226.205 at 2021-03-20 15:51:27 +0100

Processing by DraftController#show as JSON

Parameters: {"draft_key"=>"topic_10"}

Completed 200 OK in 38ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 4317)

Started GET "/posts/13" for 176.243.226.205 at 2021-03-20 15:51:27 +0100

Processing by PostsController#show as JSON

Parameters: {"id"=>"13"}

Completed 200 OK in 16ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 5026)

Started POST "/presence/publish" for 176.243.226.205 at 2021-03-20 15:51:29 +0100

Processing by Presence::PresencesController#handle_message as */*

Parameters: {"state"=>"editing", "topic_id"=>"10", "post_id"=>"13"}

Completed 200 OK in 20ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3304)

Started GET "/posts/13" for 176.243.226.205 at 2021-03-20 15:51:38 +0100

Processing by PostsController#show as JSON

Parameters: {"id"=>"13"}

Completed 200 OK in 121ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 56890)

Inoltre, il log di PUMA non mostra le richieste DELETE

2021-03-20 16:01:38 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:01:38 +0100] "GET /t/e-previsto-un-ritorno-di-freddo-nutro/10 HTTP/1.1" 200 - 1.0685

2021-03-20 16:01:39 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:01:39 +0100] "GET /uploads/default/optimized/1X/_129430568242d1b7f853bb13ebea28b3f6af4e7_2_32x32.png HTTP/1.1" 200 11945 0.0119

2021-03-20 16:01:39 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021 16:01:39] "POST /message-bus/557c51e14e57450c8c76ab216af0a279/poll HTTP/1.1" HIJACKED -1 0.0956

2021-03-20 16:01:42 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:01:42 +0100] "POST /message-bus/557c51e14e57450c8c76ab216af0a279/poll HTTP/1.1" 200 - 0.0128

2021-03-20 16:01:43 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021 16:01:43] "POST /message-bus/557c51e14e57450c8c76ab216af0a279/poll HTTP/1.1" HIJACKED -1 0.0886

2021-03-20 16:01:54 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:01:54 +0100] "GET /t/e-previsto-un-ritorno-di-freddo-nutro/10 HTTP/1.1" 200 - 0.1436

2021-03-20 16:01:55 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:01:55 +0100] "GET /uploads/default/optimized/1X/_129430568242d1b7f853bb13ebea28b3f6af4e7_2_32x32.png HTTP/1.1" 200 11945 0.0383

2021-03-20 16:01:56 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021 16:01:56] "POST /message-bus/1bddd2f9aaf54ec5a589bc74c9c8a409/poll HTTP/1.1" HIJACKED -1 0.0453

2021-03-20 16:01:59 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:01:59 +0100] "POST /message-bus/1bddd2f9aaf54ec5a589bc74c9c8a409/poll HTTP/1.1" 200 - 0.0129

2021-03-20 16:01:59 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021 16:01:59] "POST /message-bus/1bddd2f9aaf54ec5a589bc74c9c8a409/poll HTTP/1.1" HIJACKED -1 0.0096

2021-03-20 16:02:07 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:02:07 +0100] "GET /draft.json?draft_key=topic_10 HTTP/1.1" 200 - 0.0131

2021-03-20 16:02:08 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:02:08 +0100] "GET /posts/13 HTTP/1.1" 200 - 0.3559

2021-03-20 16:02:08 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:02:08 +0100] "GET /composer_messages?composer_action=edit&topic_id=10&post_id=13 HTTP/1.1" 200 - 0.2087

2021-03-20 16:02:12 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021:16:02:12 +0100] "POST /presence/publish HTTP/1.1" 200 - 0.0155

2021-03-20 16:02:24 +0100 : |Puma| 176.243.226.205 - - [20/Mar/2021 16:02:24] "POST /message-bus/1bddd2f9aaf54ec5a589bc74c9c8a409/

Ciò significa che il tuo reverse proxy è configurato in modo errato e sta scartando le richieste diverse da GET/POST. È un problema piuttosto comune, ed è uno dei motivi per cui forniamo un reverse proxy preconfigurato all’interno del container, così gli utenti non devono occuparsene.

Se rimuovi HAProxy e fai sì che il container stesso ascolti sulla porta 80/443, il problema si verifica ancora?

@Falco Appena provato, il problema persiste. Potrebbe essere lo stesso Puma, come server web, a scartare le richieste DELETE?

Non utilizziamo Puma in produzione se lo installi seguendo l’installazione standard ufficiale di Discourse.

Utilizziamo i verbi DELETE/PUT in tutta l’applicazione per ogni singola installazione e non riscontriamo alcun problema, quindi ipotizzo che si tratti di qualcosa di specifico della tua installazione.

È una possibilità remota, ma hai un WAF di qualche tipo che fronteggia questo dominio @Andrea_Giovacchini?

Ho provato un’installazione alternativa dopo aver tentato quella ufficiale, che presentava lo stesso problema.

Ora ho riprovato la procedura di installazione ufficiale (discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub), ma si interrompe su “./launcher rebuild app” con questo messaggio (due giorni fa non falliva, ma era comunque affetto dal problema DELETE):

Assicurati che `gem install libv8 -v '8.4.255.0' --source 'https://rubygems.org/'` abbia esito positivo prima di eseguire bundling.

Nel file Gemfile:
  mini_racer è stato risolto alla versione 0.3.1, che dipende da
    libv8

/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer/parallel_installer.rb:220:in `handle_error'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer/parallel_installer.rb:102:in `call'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer/parallel_installer.rb:71:in `call'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer.rb:270:in `install_in_parallel'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer.rb:210:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer.rb:90:in `block in run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/process_lock.rb:12:in `block in lock'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/process_lock.rb:9:in `open'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/process_lock.rb:9:in `lock'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer.rb:72:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/installer.rb:24:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/install.rb:64:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:259:in `block in install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/settings.rb:115:in `temporary'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:258:in `install'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:30:in `dispatch'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:24:in `start'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/exe/bundle:49:in `block in <top (required)>'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
  /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/exe/bundle:37:in `<top (required)>'
  /usr/local/bin/bundle:23:in `load'
  /usr/local/bin/bundle:23:in `<main>'

I, [2021-03-20T23:42:40.998961 #1]  INFO -- : Terminazione dei processi asincroni
I, [2021-03-20T23:42:40.998991 #1]  INFO -- : Invio di INT a 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: 66
I, [2021-03-20T23:42:40.999030 #1]  INFO -- : Invio di TERM a exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 183
2021-03-20 23:42:40.999 UTC [66] LOG:  richiesta di arresto rapido ricevuta
183:signal-handler (1616283760) SIGTERM ricevuto, programmazione dell'arresto...
2021-03-20 23:42:41.013 UTC [66] LOG:  annullamento di tutte le transazioni attive
2021-03-20 23:42:41.014 UTC [66] LOG:  il worker di background "logical replication launcher" (PID 75) è uscito con codice di uscita 1
2021-03-20 23:42:41.016 UTC [70] LOG:  arresto in corso
183:M 20 Mar 2021 23:42:41.058 # Richiesta di arresto da parte dell'utente...
183:M 20 Mar 2021 23:42:41.058 * Salvataggio dell'ultimo snapshot RDB prima dell'uscita.
183:M 20 Mar 2021 23:42:41.061 * Database salvato su disco
183:M 20 Mar 2021 23:42:41.061 # Redis è ora pronto per uscire, arrivederci...
2021-03-20 23:42:41.263 UTC [66] LOG:  il sistema di database è spento


FALLITO
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development' fallito con codice di uscita #<Process::Status: pid 348 exit 5>
Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'
Esecuzione fallita con i parametri {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'"]}
9b0ca932a7dd52ccdd11e268910e3edcd8369c0c08f65e7f8686d542b9be473b
** FALLIMENTO DURANTE L'AVVIO ** scorri verso l'alto e cerca eventuali messaggi di errore precedenti; potrebbero essercene più di uno.
./discourse-doctor può aiutare a diagnosticare il problema.
➜  discourse git:(master) ✗

@Falco ho riprovato la configurazione ufficiale, ma usando “tests-passed” invece di “stable”. Non compare più l’errore relativo al gem mini_racer, ma persiste il problema DELETE, come si può vedere nel video con l’output di tail sui log di nginx e il browser con la console aperta.

I POST appaiono immediatamente nei log di nginx, mentre i DELETE compaiono solo dopo l’errore, il che è strano.

Ecco la registrazione dello schermo:
https://drive.google.com/file/d/1SEOdZjjVkQTpqT3ZQJ7SaR-Ib2mO6m4M/view?usp=sharing

Questo test è stato eseguito come suggerito, avviando direttamente Discourse sulla porta 80 senza altri software intermedi come HAPROXY.

Ok, darò un’occhiata e cercherò di riprodurlo domani, grazie per la segnalazione.

Sì, “stable” è purtroppo rotto al momento a causa di una regressione in bundler.

Lavoreremo a una correzione entro il giorno prossimo

@Falco hai riprodotto il problema?

Ciao @Andrea_Giovacchini,

Innanzitutto, ci sono due problemi distinti:

  1. Le richieste DELETE bloccate

  2. Il ripristino interrotto per gli utenti sul ramo “stable”.

Il punto 2 è stato risolto oggi tramite https://meta.discourse.org/t/cant-rebuild-current-stable/183859/6?u=falco

Per quanto riguarda il punto 1, ecco i miei riscontri:

Ho un’installazione nuova di zecca di Discourse in esecuzione e, mentre invio un comando DELETE di test, ricevo:

curl -X DELETE https://falcoland.falco.dev/draft.json
["BAD CSRF"]%                                                

Ciò è previsto, poiché anche quel comando deve essere accompagnato da un cookie valido per la sessione dell’utente.

Nel frattempo, sul tuo sito:

curl -X DELETE http://apicolturaitalianawebinar.it/draft.json -v
*   Trying 213.229.86.117:80...
* Connected to apicolturaitalianawebinar.it (213.229.86.117) port 80 (#0)
> DELETE /draft.json HTTP/1.1
> Host: apicolturaitalianawebinar.it
> User-Agent: curl/7.75.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
< Date: Mon, 22 Mar 2021 18:51:55 GMT
< Server: Apache/2.4.37 (centos) OpenSSL/1.1.1g Phusion_Passenger/6.0.4 mod_perl/2.0.11 Perl/v5.26.3
< X-Runtime: 0.001594
< X-Request-Id: ebe50251-0f06-4b71-acd0-887fb2666abb
< X-Powered-By: Phusion Passenger 6.0.4
< Content-Length: 1351
< Status: 404 Not Found
< Content-Type: text/html; charset=UTF-8
< 

Mi restituisce un 404 da Phusion Passenger. Non sembra essere un’installazione normale di Discourse :thinking:.

Ho disattivato Discourse perché, a causa del problema di eliminazione, era inutilizzabile; ora c’è un’altra applicazione che risponde a quell’URL.

Ah, capisco. Dato che il problema non può essere riprodotto in una nuova installazione, direi che possiamo chiudere questa discussione. Se il problema si ripresenta, ti preghiamo di aprire un nuovo argomento con i passaggi per la riproduzione.

@Falco l’ho rimesso online su http://discourse.apicolturaitalianafb.it/ e puoi provare: installazione standard seguendo la documentazione qui.

Il comando curl restituisce un CSRF errato e appare immediatamente nel log interno di nginx di Discourse, ma la cancellazione dall’interfaccia non funziona e appare nel log con un ritardo di circa 35 secondi, come nel video che ho inviato.

Se impostiamo discourse.apicolturaitalianafb.it:8880 come hostname in app.yml, ricostruiamo e accediamo a http://discourse.apicolturaitalianafb.it:8880, tutto funziona normalmente, ma non possiamo usarlo in questo modo.

Avendo Apache che esegue un sito web in produzione, ho provato a metterlo dietro a haproxy come indicato nella documentazione di questo sito: le cancellazioni da Discourse smettono di funzionare, ma il tuo comando curl funziona. Ho provato anche il proxy inverso di Apache: curl funziona, ma le cancellazioni da Discourse no. Ho anche provato a configurare Discourse per funzionare su un socket Unix e a fare il reverse proxy verso di esso, ma il problema rimane lo stesso.

Per me l’evidenza è che il reverse proxy non “blocca” le cancellazioni, ma gli script JavaScript in Discourse, per qualche motivo, smettono di eseguire correttamente le cancellazioni HTML.

La tua installazione fresca che hai provato è esposta direttamente?