Fehler beim Verbinden mit Redis auf localhost:6379 (Errno::EADDRNOTAVAIL)

Nach der Installation von Discourse mit “Docker version 20.10.5, build 55c4c8” auf CentOS 8 läuft die Seite, aber DELETE-Aufrufe an /draft.json timen immer aus.

Apache läuft und ich habe es sowohl mit einem Apache-Reverse-Proxy als auch mit HAProxy versucht; das Verhalten ist identisch.

Ich weiß nicht, ob dies damit zusammenhängt, aber ich finde viele dieser Fehler in unicorn.stdout.log:

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

2021-03-18T10:02:25.138Z pid=108 tid=ocs ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Starting up 1 supervised sidekiqs

Loading Sidekiq in process id 119

2021-03-18T10:40:09.682Z pid=119 tid=orn ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.684Z pid=119 tid=ohf ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.685Z pid=119 tid=owv ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.683Z pid=119 tid=oob ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

2021-03-18T10:40:09.683Z pid=119 tid=omr ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)

Starting up 1 supervised sidekiqs

Loading Sidekiq in process id 121

Verzeichnet Redis Fehler in /var/discourse/shared/standalone/log/var-log/redis?

2 „Gefällt mir“

Dies ist der Inhalt von „current":

53:M 18 Mar 2021 17:07:05.076 * 10 Änderungen in 300 Sekunden. Speichere...
53:M 18 Mar 2021 17:07:05.076 * Hintergrundspeicherung gestartet durch PID 25018
25018:C 18 Mar 2021 17:07:05.126 * Datenbank auf Festplatte gespeichert
25018:C 18 Mar 2021 17:07:05.127 * RDB: 2 MB Speicher durch Copy-on-Write verwendet
53:M 18 Mar 2021 17:07:05.177 * Hintergrundspeicherung erfolgreich beendet
53:M 18 Mar 2021 17:12:06.097 * 10 Änderungen in 300 Sekunden. Speichere...
53:M 18 Mar 2021 17:12:06.098 * Hintergrundspeicherung gestartet durch PID 25337
25337:C 18 Mar 2021 17:12:06.145 * Datenbank auf Festplatte gespeichert
25337:C 18 Mar 2021 17:12:06.145 * RDB: 2 MB Speicher durch Copy-on-Write verwendet
53:M 18 Mar 2021 17:12:06.198 * Hintergrundspeicherung erfolgreich beendet
1 „Gefällt mir“

Diese Protokolle sehen für mich in Ordnung aus. Hast du immer noch Probleme beim Navigieren in deiner Discourse-Instanz?

1 „Gefällt mir“

Ich kann weiterhin keine Beiträge, Einladungen und gelöschte Beitragsänderungen löschen.

Es scheint ein Problem bei allen Aufrufen mit der HTTP-DELETE-Methode zu sein. Sollte Discourse nicht POST anstelle von DELETE verwenden? Das erinnert an How can Discourse make POST instead of DELETE for "smart" CDN?, aber ich verwende keinen CDN, sondern einen normalen virtuellen Server mit CentOS und einer Docker-Installation gemäß den Anweisungen auf der Discourse-Website.

1 „Gefällt mir“

Teil eines Haproxy-Logs mit 408-Fehlern bei HTTP DELETE. Was könnte DELETE-Anfragen „verwerfen

Dies ist production.log. Ich sehe keine DELETE-Anfrage, aber alles andere wird registriert (Beitrag öffnen, ändern, speichern usw.):

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)

Auch das PUMA-Log zeigt keine DELETE-Anfragen

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/" 200 - 0.0000

[quote=“Andrea_Giovacchini, Beitrag:6, Thema:183647”]
Wenn diese DELETE-Anfragen HAProxy erreichen, sollten sie auch die Software im Docker-Container erreichen. Kann etwas dort für das Problem „verantwortlich

2 „Gefällt mir“

@Falco Habe es gerade ausprobiert, das Problem besteht weiterhin. Könnte es Puma selbst als Webserver sein, das DELETE-Anfragen verwirft?

Wir verwenden Puma in der Produktion nicht, wenn Sie es gemäß der offiziellen Standardinstallation von Discourse installieren.

Wir nutzen die DELETE-/PUT-Verben in der gesamten Anwendung für jede einzelne Installation und haben keine Probleme festgestellt. Daher vermute ich, dass es sich um ein Problem handelt, das spezifisch für Ihre Installation ist.

Eine eher unwahrscheinliche Vermutung, aber haben Sie eine WAF (Web Application Firewall) oder ähnliches, das diese Domain absichert, @Andrea_Giovacchini?

2 „Gefällt mir“

Ich habe nach dem gescheiterten offiziellen Installationsversuch einen alternativen Installationsweg versucht.

Jetzt habe ich die offizielle Installation erneut versucht (discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub), aber sie schlägt bei „./launcher rebuild app

@Falco Ich habe das offizielle Setup erneut versucht, diesmal mit „tests-passed

2 „Gefällt mir“

Cool, ich werde mir das morgen ansehen und versuchen, das Problem zu reproduzieren. Danke für den Bericht.

3 „Gefällt mir“

Ja, „stable“ ist derzeit leider aufgrund einer Regression in Bundler defekt.

Wir werden in den nächsten Tagen an einer Lösung arbeiten.

2 „Gefällt mir“

@Falco hast du das Problem reproduziert?

1 „Gefällt mir“

Hey @Andrea_Giovacchini,

Zunächst einmal gibt es zwei verschiedene Probleme:

  1. Die blockierten DELETE-Anfragen

  2. Der defekte Neuaufbau für Nutzer auf dem „stable“-Branch.

Problem 2 wurde heute behoben: https://meta.discourse.org/t/cant-rebuild-current-stable/183859/6?u=falco

Zu Problem 1 hier meine Erkenntnisse:

Ich habe eine brandneue Installation von Discourse, und beim Senden eines Test-DELETE-Befehls erhalte ich:

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

Das ist zu erwarten, da dieser Befehl auch ein gültiges Cookie für die Benutzersitzung enthalten muss.

Auf deiner Seite hingegen:

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
< 

Erhalte ich eine 404 von Phusion Passenger. Das sieht nicht nach einer normalen Discourse-Installation aus :thinking:.

Ich habe Discourse abgeschaltet, da es aufgrund des Löschproblems unbrauchbar war. Jetzt reagiert eine andere Anwendung an dieser URL.

Ah, verstehe. Da das Problem bei einer Neuinstallation nicht reproduzierbar ist, schlage ich vor, dieses Thema zu schließen. Falls das Problem erneut auftritt, eröffne bitte ein neues Thema mit den Schritten zur Reproduktion.

2 „Gefällt mir“

@Falco Ich habe es erneut unter http://discourse.apicolturaitalianafb.it/ hochgeladen. Du kannst es testen – die Standardinstallation erfolgt gemäß den Dokumentationen hier.

Der Curl-Befehl liefert einen schlechten CSRF-Token, erscheint sofort im internen Nginx-Log von Discourse, aber das Löschen über die Oberfläche funktioniert nicht. Im Log taucht es mit einer Verzögerung von etwa 35 Sekunden auf, wie in dem Video, das ich gesendet habe.

Wenn ich in der app.yml den Hostnamen als discourse.apicolturaitalianafb.it:8880 setze, neu erstelle und zu http://discourse.apicolturaitalianafb.it:8880 gehe, funktioniert es normal. Aber ich kann das nicht so nutzen.

Da ich Apache mit einer produktiven Website laufen habe, habe ich versucht, es gemäß der Dokumentation auf dieser Website hinter einen HAProxy zu stellen. Dabei funktionieren die Löschvorgänge in Discourse nicht mehr, aber dein Curl-Befehl funktioniert. Ich habe auch einen Apache-Reverse-Proxy ausprobiert: Curl funktioniert, aber das Löschen in Discourse nicht. Ich habe zudem versucht, Discourse über einen Unix-Socket laufen zu lassen und diesen per Reverse-Proxy weiterzuleiten, aber das Problem bleibt gleich.

Für mich ist es ein klares Indiz, dass das Reverse-Proxying die Löschvorgänge nicht blockiert, sondern dass JavaScript in Discourse aus irgendeinem Grund die korrekten HTML-Löschungen nicht mehr ausführt.

Ist deine frische Installation, die du getestet hast, direkt exponiert?