clarat-org / clarat

An Open Source Charity Directory
http://www.clarat.org/
MIT License
8 stars 10 forks source link

Bug: Translations werden manchmal nicht aktualisiert #939

Closed NilsVollmer closed 7 years ago

NilsVollmer commented 8 years ago

Berichtet von Nahlaa für arabisch: OrganizationTranslation 4617 wurde als abweichend zu der deutschen Quelle gemeldet. Die zugehörige Orga hat die ID 823.

Erste Nachforschungen per Konsole haben ergeben:

Organization.find(823).translations.map{|t| puts t.locale + '=>' + t.created_at.to_s}
ru=>2016-09-27 15:29:02 +0200
tr=>2016-09-27 15:29:02 +0200
en=>2016-09-27 15:29:02 +0200
de=>2016-09-27 14:56:51 +0200
fa=>2016-10-04 10:46:52 +0200
fr=>2016-09-27 15:29:02 +0200
pl=>2016-09-27 15:29:02 +0200
ar=>2016-09-27 15:29:02 +0200

Alle Übersetzungen wurden korrekt zur einer sehr ähnlichen Zeit kurz nach der deutschen erstellt. Das macht Sinn, weil sie eigentlich direkt erstellt werden, aber nicht im initialized state. Vermutlich wurde das Angebot um 15:29 auf completed gesetzt und erst dann wurden die Übersetzungen generiert. Farsi kam dann logischerweise später nach.

Aber dann geht es merkwürdig weiter:

Organization.find(823).translations.map{|t| puts t.locale + '=>' + t.updated_at.to_s + ' source:' + t.source + ' possibly_outdated:' + t.possibly_outdated.to_s}
ru=>2016-10-04 14:18:55 +0200 source:GoogleTranslate possibly_outdated:false
tr=>2016-10-04 14:18:55 +0200 source:GoogleTranslate possibly_outdated:false
en=>2016-10-04 14:22:47 +0200 source:researcher possibly_outdated:false
de=>2016-10-04 14:18:55 +0200 source:researcher possibly_outdated:false
fa=>2016-10-04 10:46:52 +0200 source:GoogleTranslate possibly_outdated:false
fr=>2016-10-04 14:18:55 +0200 source:GoogleTranslate possibly_outdated:false
pl=>2016-09-27 15:29:02 +0200 source:GoogleTranslate possibly_outdated:false
ar=>2016-09-27 15:29:02 +0200 source:GoogleTranslate possibly_outdated:false

Die englische Übersetzung wurde offensichtlich von Jacinta händisch angepasst => korrekt. Da könnte man sich höchstens über die Geschwindigkeit (4 minuten später) wundern aber wenn die Researcher direkt mit den Übersetzern kommunizieren, kann das ja so schnell gehen. Die deutsche wurde um 14:18:55 geändert und genau zeitgleich (weil nicht mehr im state initialized) kamen die Übersetzungen für ru, tr, fr.

Problem: fa, pl & ar wurden nicht aktualisiert und sind aber auch nicht als possibly_outdated markiert.. sollten sie auch nicht sein, weil source 'GoogleTranslate' ist. Außerdem ist bei den beiden created_at == updated_at, sie wurden also wirklich nur generiert und danach nicht mehr aktualisiert.

@Twiek bitte in Bezug auf die Zuweisungen priorisieren

NilsVollmer commented 8 years ago

Update: ich habe die arabische Übersetzung wieder zum Bearbeiten freigegeben, also wird das updated_at dort sehr wahrscheinlich bald überschrieben. Da die polnische Übersetzung ebenfalls betroffen ist und die keiner bearbeitet, können wir den Bug genauso gut damit verfolgen.

Twiek commented 8 years ago

Da ich die Zuweisungen eigentlich erst nach mindestens einer weiteren Schleife mit Julian auf die Übersetzerinnen loslassen will wäre es super, wenn dieser Bug bis dahin behoben ist.

NilsVollmer commented 7 years ago

Update: es scheint ein größeres Problem zu sein. Ich habe mir gerade mal alle Orgas gezogen, bei denen die [tr, pl, fr]-Translations keinen eindeutigen updated_at-Tag (.to_date cast) haben und es sind ganze 79, also fas 10% der Orgas. Meist werden einzelne Übersetzungen nicht aktualisiert, ich habe gerade auch eine englische gefunden, die durch den Bug tatsächlich noch alt (und nicht possibly_outdated) ist.

Und die 10% decken jetzt ja nur die drei Sprachen ab, wo ich mir sicher bin, dass die eigentlich alle am gleichen Tag aktualisiert werden müssten. Der Bug tritt bestimmt auch bei anderen Sprachen auf aber da kann ich nicht mit dem updated_at arbeiten, weil die Übersetzungen ja händisch angepasst werden. Aber wie gesagt: nach meinem aktuellen Stand könnten auch da Übersetzungen nicht aktualisiert worden sein.

Der aktuelleste Problemfall stammt vom 5.12.2016 - möglicherweise wurde es durch die vielen Änderungen bei den Zuweisungen gefixed aber ich bin nicht sicher..

NilsVollmer commented 7 years ago

Hier mal ein paar Ausgaben der letzten (zuletzt aktualisiert) Orgas bzw. deren Translations:

en=>2016-02-17 11:44:46 +0100 || 2016-10-02 14:17:08 +0200 source:GoogleTranslate possibly_outdated:false
ar=>2016-04-07 16:02:38 +0200 || 2016-10-02 14:17:08 +0200 source:GoogleTranslate possibly_outdated:false
tr=>2016-04-07 16:02:38 +0200 || 2016-10-02 14:17:09 +0200 source:GoogleTranslate possibly_outdated:false
de=>2016-02-17 11:44:46 +0100 || 2016-11-23 21:18:12 +0100 source:researcher possibly_outdated:false
fa=>2016-11-23 21:18:12 +0100 || 2016-11-23 21:18:12 +0100 source:GoogleTranslate possibly_outdated:false
ru=>2016-04-01 14:54:20 +0200 || 2016-11-23 21:18:12 +0100 source:GoogleTranslate possibly_outdated:false
pl=>2016-04-01 14:54:20 +0200 || 2016-11-23 21:18:13 +0100 source:GoogleTranslate possibly_outdated:false
fr=>2016-04-07 16:02:38 +0200 || 2016-11-23 21:18:13 +0100 source:GoogleTranslate possibly_outdated:false
-------------------------------
en=>2016-10-24 11:40:27 +0200 || 2016-10-24 11:40:27 +0200 source:GoogleTranslate possibly_outdated:false
ar=>2016-10-24 11:40:27 +0200 || 2016-10-24 11:40:27 +0200 source:GoogleTranslate possibly_outdated:false
fa=>2016-10-24 11:40:27 +0200 || 2016-10-24 11:40:27 +0200 source:GoogleTranslate possibly_outdated:false
pl=>2016-10-24 11:40:27 +0200 || 2016-10-24 11:40:27 +0200 source:GoogleTranslate possibly_outdated:false
de=>2016-10-21 17:54:42 +0200 || 2016-12-13 11:14:30 +0100 source:researcher possibly_outdated:false
tr=>2016-10-24 11:40:27 +0200 || 2016-12-13 11:14:31 +0100 source:GoogleTranslate possibly_outdated:false
fr=>2016-10-24 11:40:27 +0200 || 2016-12-13 11:14:31 +0100 source:GoogleTranslate possibly_outdated:false
ru=>2016-10-24 11:40:27 +0200 || 2016-12-13 11:14:31 +0100 source:GoogleTranslate possibly_outdated:false
-------------------------------
en=>2016-02-17 11:45:02 +0100 || 2016-02-17 11:45:02 +0100 source:GoogleTranslate possibly_outdated:false
ar=>2016-04-07 16:03:29 +0200 || 2016-04-07 16:03:29 +0200 source:GoogleTranslate possibly_outdated:false
tr=>2016-04-07 16:03:29 +0200 || 2016-04-07 16:03:29 +0200 source:GoogleTranslate possibly_outdated:false
fa=>2016-10-04 10:46:42 +0200 || 2016-10-04 10:46:42 +0200 source:GoogleTranslate possibly_outdated:false
de=>2016-02-17 11:44:57 +0100 || 2016-12-29 15:17:27 +0100 source:researcher possibly_outdated:false
pl=>2016-04-01 14:54:52 +0200 || 2016-12-29 15:17:27 +0100 source:GoogleTranslate possibly_outdated:false
ru=>2016-04-01 14:54:52 +0200 || 2016-12-29 15:17:27 +0100 source:GoogleTranslate possibly_outdated:false
fr=>2016-04-07 16:03:29 +0200 || 2016-12-29 15:17:27 +0100 source:GoogleTranslate possibly_outdated:false
-------------------------------
de=>2016-02-17 11:44:56 +0100 || 2016-02-17 11:44:56 +0100 source:researcher possibly_outdated:false
en=>2016-02-17 11:45:01 +0100 || 2016-02-17 11:45:01 +0100 source:GoogleTranslate possibly_outdated:false
pl=>2016-04-01 14:54:51 +0200 || 2016-04-01 14:54:51 +0200 source:GoogleTranslate possibly_outdated:false
ru=>2016-04-01 14:54:51 +0200 || 2016-04-01 14:54:51 +0200 source:GoogleTranslate possibly_outdated:false
ar=>2016-04-07 16:03:28 +0200 || 2016-04-07 16:03:28 +0200 source:GoogleTranslate possibly_outdated:false
fr=>2016-04-07 16:03:28 +0200 || 2016-04-07 16:03:28 +0200 source:GoogleTranslate possibly_outdated:false
tr=>2016-04-07 16:03:28 +0200 || 2016-04-07 16:03:28 +0200 source:GoogleTranslate possibly_outdated:false
fa=>2016-10-04 10:46:42 +0200 || 2016-10-04 10:46:42 +0200 source:GoogleTranslate possibly_outdated:false
-------------------------------
tr=>2016-06-28 14:58:14 +0200 || 2016-09-06 17:11:32 +0200 source:GoogleTranslate possibly_outdated:false
de=>2016-06-28 14:47:07 +0200 || 2016-12-05 12:38:08 +0100 source:researcher possibly_outdated:false
en=>2016-06-28 14:58:14 +0200 || 2016-12-05 12:38:08 +0100 source:GoogleTranslate possibly_outdated:false
fa=>2016-12-05 12:38:08 +0100 || 2016-12-05 12:38:08 +0100 source:GoogleTranslate possibly_outdated:false
ar=>2016-06-28 14:58:14 +0200 || 2016-12-05 12:38:08 +0100 source:GoogleTranslate possibly_outdated:false
pl=>2016-06-28 14:58:14 +0200 || 2016-12-05 12:38:08 +0100 source:GoogleTranslate possibly_outdated:false
fr=>2016-06-28 14:58:14 +0200 || 2016-12-05 12:38:08 +0100 source:GoogleTranslate possibly_outdated:false
ru=>2016-06-28 14:58:14 +0200 || 2016-12-05 12:38:08 +0100 source:GoogleTranslate possibly_outdated:false
NilsVollmer commented 7 years ago

Update: durch intensives Logging haben wir den Fehler gefunden! Es liegt daran, dass wir die neuen translations after_update des Models (Offer/Orga) durchführen und dann direkt Sidekiq worker starten.

After_update passiert in der Pipeline aber noch vor dem commit und die Worker sind manchmal so schnell, dass sie auf die DB zugreifen, bevor die neuen Änderungen dort gespeichert wurden. Deshalb werden dann einige Übersetzungen mit den alten Texten gestartet und erzeugen keine Änderungen. Einige Worker brauchen 1-2 Sekunden länger und bei denen hat es dann funktioniert.

Ich arbeite gerade an einem Hotfix, in dem die neuen Übersetzungen erst after_commit getriggert werden.

NilsVollmer commented 7 years ago

Update: Fix is aufgespielt und der Bug damit (hoffentlich) behoben.

Jetzt werde ich noch die veralteten/fehlenden Übersetzungen manuell neu triggern.

NilsVollmer commented 7 years ago

Update: für die letzten veralteten Übersetzungen habe ich gerade die worker angeworfen und die sollten dann (nach ein paar retries) in ein paar Stunden alle durchgelaufen sein.

Wenn von Sprache keine Beschwerden mehr kommen, kann das Ticket wohl geschlossen werden.