Youtube embeds missing

I have a client for whom embedded youtube videos are missing. They appear in composer’s preview, but when the messages are saved, they disappear. They are working fine in try.discourse.org. I tried whitelisting youtu.be and changing the URL to a youtube.com url too. Neither solved the problem.

The site is running v1.6.0.beta11 +141

2 « J'aime »

Have you tried reaching YouTube from your client’s server?

3 « J'aime »

It seems that the problem was that recent Discourse updates have caused my DOI resolver plugin to muck things up. (I disabled a couple other things too, but it was definitely some plugin. . . )

1 « J'aime »

Has anyone got a problem when rebaking posts running into 429 Too Many Requests for youtube.com?

[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 5237

:thinking:

3 « J'aime »

I have encountered this too, it is a temporary IP ban (1h, I believe), and all youtube oneboxes fail for the rebaked posts during that time.

Perhaps there should be some mechanism implemented to prevent more than x requests to youtube per hour when rebaking?

4 « J'aime »

Récemment, après une série de modifications et de mises à niveau de mon installation Discourse, il ne manque plus que deux choses. La première est l’impossibilité de reconstruire le conteneur de données, ce sur quoi je travaille encore, et la seconde est que tous les oneboxes fonctionnent sauf ceux avec des URL YouTube.

Depuis le serveur et le conteneur, je peux faire un CURL vers YouTube. Comment puis-je m’assurer qu’il s’agit bien d’un bannissement temporaire de l’adresse IP ?

Edit : Je confirme que ni la reconstruction (App) ni le rebaking n’affectent ce problème.

Edit 2 : En cherchant, j’ai vu que @jomaxro a commenté ici que des éléments comme CloudFlare peuvent affecter les oneboxes… un CDN peut-il affecter un seul onebox ? J’ai essayé de le mettre en mode développement, mais rien n’a changé.

Edit 3 : J’ai essayé de supprimer tous les plugins. Rien n’a changé. (De plus, je ne peux pas rebaker car il semble que les processus s’interrompent mutuellement).

Edit 4 : J’ai essayé la commande de @Overgrow et oui, effectivement j’ai un problème :

[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 72674

J’ai du mal à exécuter les commandes de rebaking car mon conteneur me renvoie ceci :

PG::UnableToSend: no connection to the server

PG::ConnectionBad: PQconsumeInput() SSL SYSCALL error: EOF detected

Dois-je arrêter quelque chose ?

3 « J'aime »

Une approche pourrait consister à simplement refaire cuire en utilisant une correspondance de motif et à définir un délai.

Quelque chose comme :

rake posts:rebake_match["%youtube%",regex,10]

?

Mon principal problème est l’impossibilité d’exécuter la commande :sweat:

1 « J'aime »

Cela pourrait fonctionner pour récuire lentement : Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)

6 « J'aime »

Tout d’abord, un grand merci d’avoir pris le temps de m’aider @riking.

J’ai exécuté cette commande et j’ai obtenu ce que je suppose être le nombre de publications manquantes : 22 462. D’après la dernière partie de la commande, peut-on supposer en toute sécurité qu’elle s’exécute en arrière-plan ?

1 « J'aime »

Oui, il y a un tâche qui s’exécute toutes les 15 minutes pour retraiter les publications selon SiteSetting.rebake_old_posts_count.

4 « J'aime »

Juste une question : le nombre ne diminue pas, peu de temps qui passe. Y a-t-il un moyen de suivre ou de forcer ce travail ?

Hmm, c’est possible que je me sois trompé :thinking: Quel est le résultat de ceci ? Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count

3 « J'aime »

État actuel :

Ancienne commande :

[2] pry(main)> Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)
=> 23257

Nouvelle commande :

[1] pry(main)> Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count
=> 49458

Édition : Après un certain temps, je peux confirmer que la seconde reste statique (même valeur) tandis que la première continue d’augmenter.

1 « J'aime »

Une expression rationnelle n’est pas nécessaire pour faire correspondre une chaîne dans un message. Une simple recherche de chaîne suffira pour trouver youtube (par exemple). Dans cet exemple, chaque message contenant la chaîne youtube sera retraité, un tous les 100 secondes (très lent…)

Screen Shot 2020-05-26 at 11.23.06 AM

Environ 100 secondes se sont écoulées :

Screen Shot 2020-05-26 at 11.25.35 AM

Je vais laisser cela tourner, en supposant que dans 76 200 secondes, plus ou moins, cette tâche rake sera terminée :slight_smile:

Je devrais probablement avoir configuré cet exemple avec un délai de 10 secondes :slight_smile:

2 « J'aime »

Merci beaucoup @neounix

J’ai essayé, mais malheureusement sans succès.

Je commence à penser qu’il y a peut-être un problème lié au réseau ?

Désolé @iceman,

Étant un genre de geek, je ne comprends pas ce que « sans succès » signifie :slight_smile: (pas assez d’informations techniques).

Voulez-vous dire que lorsque vous exécutez la commande rake, vous obtenez une erreur Rails ?

Si oui, veuillez publier l’erreur Rails complète.

Ou bien, la tâche Rails s’exécute-t-elle correctement ? Si c’est le cas, combien de publications ont été reboulées selon la tâche rake ?

Merci.

Par exemple, ma petite tâche de rebouclage (avec un délai très lent de 100 secondes) pour ce sujet tourne depuis des heures :

Screen Shot 2020-05-26 at 5.09.07 PM

Actuellement 209 sur 762 au total…

Quels sont vos chiffres pour la tâche de rebouclage ?

2 « J'aime »

Pardon pour mes informations imparfaites !

Je voulais dire que je l’ai exécuté sur un petit échantillon, puis je l’ai relancé, mais le nombre n’a pas changé.

Par exemple : j’ai lancé la commande avec 76 000 publications, 200 ont été traitées, puis cela s’est arrêté. J’ai relancé et le nouveau nombre était de 76 200 (oui, peut-être que mes utilisateurs ont ajouté 400 publications avec YouTube… mais… je ne sais pas).

Maintenant, je le relance simplement pour voir comment cela se passe, mais cela prendra quelques jours :stuck_out_tongue: (76 500 visites…)

Puisque personne d’autre ne rencontre ce problème, j’essaie d’identifier mes variables, à savoir :

  • Changement de machine (donc cela pourrait être une limitation de débit de YouTube ?)
  • Restauration d’une sauvegarde Discourse sur une nouvelle installation (cela ne devrait pas être lié, mais à ce stade, je parie sur tout ce qui bouge)
  • Installation en deux conteneurs (Je pensais avoir un problème avec la reconstruction des données, mais grâce à ces informations de @Falco, je sais maintenant que c’est « normal ».)
  • Ajout de CloudFlare par-dessus, en suivant les tutoriels CDN disponibles ici.
1 « J'aime »

Désolé d’avoir l’esprit un peu lourd :slight_smile: vous voulez dire que vous exécutez cette tâche rake ?

rake posts:rebake_match['youtube',string,10]

Il est important de poster exactement ce que vous tapez et ce que vous voyez.

Quelle est la tâche rake exacte, et quels paramètres utilisez-vous ?

Lorsque vous exécutez cette tâche rake, quelles sont les premières lignes de la sortie lorsque la tâche commence à recalculer les posts ?

Veuillez fournir des détails, des captures d’écran, des copier-coller depuis votre(s) ligne(s) de commande, etc.

2 « J'aime »

Désolé @neounix, vous avez tout à fait raison.

Laissez-moi reformuler :

J’ai exécuté cette commande :

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string]
        76597 / 76594 (100.0%)-
    76597 publications terminées !

Ensuite, je me suis dit : « bon, bien sûr, il faut ajouter le minuteur, sinon on ne peut pas tester la « Théorie de la limite de débit » », alors j’ai essayé celle que vous avez partagée :

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
            216 / 76594 (0.2%)-

Je l’ai arrêtée juste pour vérifier si quelque chose changeait. Apparemment non, alors j’ai pensé : « d’accord, laissons-le repartir et voyons comment ça se passe » :

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)-

Cela tourne actuellement. Mon argument était donc que le nombre total de publications n’a pas diminué avec l’autre rebake. (Je pourrais avoir tort, et je le suis probablement, avec cette logique).

1 « J'aime »