Wie kann ich fehlende Avatare wiederherstellen?

Wir haben ein ähnliches Problem wie dieser #bug:

https://meta.discourse.org/t/missing-user-profile-pictures/93844

Gibt es eine Möglichkeit, die fehlenden Avatare wiederherzustellen?

P.S.: Ich habe versucht, diese Anleitung zu verwenden und rake avatars:refresh ausgeführt, aber es ist nichts passiert.

Dieses Problem breitet sich wie ein Virus auf immer mehr Avatare aus! Eine seltsame Beobachtung war folgende:

In Firefox werden einige Avatare angezeigt, während sie in Chrome fehlen. Das bedeutet jedoch nicht, dass in Firefox keine Avatare fehlen. Auch in Firefox fehlen Avatare!

Firefox-Snapshot

Chrome-Snapshot

Wurde dieser Fehler wirklich behoben?

Ich bin auf das gleiche Problem gestoßen und untersuche es derzeit. In dem Fall, den ich untersuche, hängt es mit externem Speicher zusammen.

@Pad_Pors: Siehst du dieses Problem noch? Hast du oder hast du hochgeladene Dateien in S3 gespeichert?

Gut zu hören, dass ein Experte das untersucht :ok_hand:

Ja, wir haben immer noch mit diesem Problem zu kämpfen. Ja, früher wurden unsere Uploads auf S3 gespeichert, aber das ist nicht mehr der Fall.

Bei uns ist es genauso, @angus, wir haben S3. Lass uns bitte Bescheid geben, falls du Logs oder ähnliches benötigst. Vielen Dank.

Im vorliegenden Fall wurden die fehlenden Avatar-Bilder nach einem Upgrade über die Kommandozeile und einem manuellen Upgrade von PostgreSQL von Version 10 auf 12 in den Tombstone-Ordner in S3 verschoben. Der genaue Grund ist mir noch nicht klar.

Auffinden der Uploads

@Jeremie_Leroy @Pad_Pors Wenn Sie prüfen möchten, ob dies auch in Ihrem Fall zutrifft, habe ich das Fehlen der Avatare in meinem S3-Tombstone-Ordner wie folgt überprüft:

  1. Ich habe die SHA1 (die 16 Zeichen lange Zeichenfolge in der Upload-URL) eines Avatar-Uploads ermittelt, von dem ich wusste, dass er nach der Migration defekt war. Dazu habe ich die Upload-ID aus der URL des defekten Avatar-Uploads entnommen (es ist der erste Teil des Dateinamens; bei 6254_2.png ist die ID also 6254) und diese ID verwendet, um die SHA1 des Uploads in einem aktuellen Datenbank-Dump nachzuschlagen. Wenn Sie mit der Kommandozeile nicht vertraut sind, können Sie Ihre Daten in einem Dump mithilfe einer PostgreSQL-GUI wie Postico 2 visualisieren.

  2. Ich habe im Tombstone-Ordner des betreffenden S3-Buckets mit der AWS CLI nach der SHA1 gesucht.

    aws s3api list-objects --bucket <bucket_name> --query "Contents[?contains(Key, <sha1>)]" --prefix "tombstone"
    

    (Sie müssen <bucket_name> und <sha1> entsprechend anpassen)

Wenn es funktioniert, erhalten Sie eine Ergebnisliste, die so aussieht:

{
  "Key": "tombstone/original/2X/d/d7b553ff276fca054c7090e859ef5339fd1f936e.jpg",
  "LastModified": "2020-05-16T11:45:03+00:00",
  "ETag": ## Zeichenfolge aus Buchstaben und Zahlen,
  "Size": 64580,
  "StorageClass": "STANDARD",
  "Owner": {
     "ID": ## Zeichenfolge aus Buchstaben und Zahlen
   }
}

Hinweis: Der 16. Mai war der Zeitpunkt, an dem ich das Upgrade durchgeführt habe. Alle fälschlicherweise als Tombstone markierten Avatare haben Zeitstempel aus dieser Zeit. Ich vermute, dass das Problem aufgrund von Caching erst mit einiger Verzögerung und nur intermittierend in der Produktion aufgetreten ist.

Wiederherstellung

Soweit ich weiß, ist UploadRecovery (und die damit verbundene Rake-Aufgabe) spezifisch für das Hochladen von Beiträgen und behandelt keine als Tombstone markierten Avatare.

Ich arbeite derzeit daran, eine neue Methode zu UploadRecovery hinzuzufügen (zu patchen), die recover_from_s3 verwendet, um die Avatar-Uploads wiederherzustellen.

Falls jemand eine einfachere Möglichkeit kennt, fälschlicherweise als Tombstone markierte Avatare in S3 wiederherzustellen, bin ich für jeden Hinweis dankbar.

@tgxworld Haben Sie Ideen?

Das ist für mich etwas knifflig. Gibt es noch andere Leute in unserer Situation, sodass es sich lohnen würde, an einem Update zu arbeiten? @sam @codinghorror

Danke @angus für den Hinweis zum Prüfpfad, aber wir nutzen weder AWS noch S3 mehr. Tatsächlich begann das Problem, wenn ich mich nicht irre, erst nach unserer Migration von AWS.

Ich würde mich sehr freuen, wenn das Problem behoben würde, aber im Moment ist es für mich einfacher, diese wenigen Nutzer zu bitten, ihre Avatare erneut hochzuladen, und zu hoffen, dass sich das Problem nicht auf neue Nutzer ausbreitet!

Ich habe dies auf der von mir verwalteten Seite erfolgreich gelöst, indem ich eine angepasste Version derselben Logik verwendet habe, die falsch als „tombstoned