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 Me gusta

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

3 Me gusta

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 me gusta

¿Alguien ha tenido un problema al rebajar publicaciones que generan un error 429 Demasiadas solicitudes para youtube.com?

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

:thinking:

3 Me gusta

Yo también me he encontrado con esto; es un bloqueo temporal de IP (creo que es de 1 hora) y, durante ese tiempo, todos los oneboxes de YouTube fallan en las publicaciones rebakeadas.

Quizás debería implementarse algún mecanismo para evitar más de x solicitudes a YouTube por hora al rebakear.

4 Me gusta

Recientemente, tras una serie de cambios y actualizaciones en mi instalación de Discourse, solo me faltan dos cosas. Una es no poder reconstruir el contenedor de datos, y estoy tratando de resolverlo; pero la otra es que todos los oneboxes funcionan excepto con las URLs de YouTube.

Desde dentro del servidor y del contenedor puedo hacer CURL a YouTube. ¿Cómo puedo asegurarme de que se debe a una prohibición temporal de IP?

Edición: Puedo confirmar que ni la reconstrucción (App) ni el rebake afectan este problema.

Edición 2: Al buscar, vi que @jomaxro comentó aquí que cosas como CloudFlare pueden afectar a los Oneboxes… ¿puede un CDN afectar solo a un Onebox? Probé ponerlo en Modo Desarrollo pero no hubo cambios.

Edición 3: Probé eliminar todos los plugins. Nada cambió. (Además, no puedo hacer rebake ya que parece que los procesos se cortan entre sí).

Edición 4: Probé el comando de @Overgrow y sí, efectivamente tengo un problema

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

Estoy teniendo dificultades para ejecutar los comandos de rebake porque mi contenedor me muestra esto:

PG::UnableToSend: no connection to the server

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

¿Necesito detener algo?

3 Me gusta

Una posible solución sería simplemente volver a hornear utilizando una coincidencia de patrones y establecer un retraso.

Algo como:

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

¿?

Mi principal problema es no poder ejecutar el comando :sweat:

1 me gusta

Esto podría funcionar para rehacer lentamente: Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)

6 Me gusta

En primer lugar, ¡muchísimas gracias por tomarte el tiempo de ayudarme @riking.

Ejecuté ese comando y obtuve lo que asumo que es el número de publicaciones faltantes: 22462. Basándome en la última parte del comando, ¿es seguro asumir que se está ejecutando en segundo plano?

1 me gusta

Sí, hay un trabajo que se ejecuta cada 15 minutos y que volverá a procesar los posts de SiteSetting.rebake_old_posts_count.

4 Me gusta

Solo una pregunta: el número no disminuye, pase el tiempo que pase. ¿Hay alguna manera de que pueda seguir o forzar ese trabajo?

Hmm, es posible que me haya equivocado :thinking: ¿Cuál es el resultado de esto? Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count

3 Me gusta

Estado actual:

Comando antiguo:

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

Nuevo comando:

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

Edición: Después de un tiempo, puedo confirmar que el segundo permanece estático (mismo valor) mientras que el primero sigue aumentando.

1 me gusta

No es necesario usar una expresión regular para buscar una cadena en una publicación. Una búsqueda simple de cadena funcionará bien para youtube (por ejemplo). En este ejemplo, cada publicación que contenga la cadena youtube será reconstruida, una cada 100 segundos (muy lento…)

Screen Shot 2020-05-26 at 11.23.06 AM

Pasaron alrededor de 100 segundos:

Screen Shot 2020-05-26 at 11.25.35 AM

Voy a dejar que se ejecute, suponiendo que en 76.200 segundos, más o menos, esta tarea de rake habrá terminado :slight_smile:

Creo que debería haber configurado este ejemplo con un retraso de 10 segundos :slight_smile:

2 Me gusta

Muchas gracias @neounix

Lo probé, pero lamentablemente sin éxito.

Empiezo a creer que quizás hay algo relacionado con la red.

Lo siento, @iceman,

Siendo un tipo un poco nerd, no entiendo qué significa “sin éxito” :slight_smile: (no hay suficiente información técnica).

¿Quieres decir que al ejecutar el comando rake obtienes un error de Rails?

Si es así, por favor publica el error completo de Rails.

O, ¿la tarea de Rails se ejecuta correctamente? Si es así, ¿cuántos posts se volvieron a procesar según la tarea rake?

Gracias.

Por ejemplo, mi pequeña tarea de re-procesamiento (con un retraso muy lento de 100 segundos) para este tema lleva funcionando horas:

Screen Shot 2020-05-26 at 5.09.07 PM

Actualmente 209 de 762 en total…

¿Cuáles son tus números de la tarea de re-procesamiento?

2 Me gusta

¡Disculpen mi información incompleta!

Quería decir que lo ejecuté en una muestra pequeña y luego lo volví a ejecutar, pero el número no cambió.

Es decir: ejecuté el comando y tenía 76.000 publicaciones; procesó 200, se detuvo, lo ejecuté de nuevo y el nuevo número fue 76.200 (sí, quizás mis usuarios añadieron 400 publicaciones con YouTube… pero… no lo sé).

Ahora lo estoy ejecutando de nuevo solo para ver cómo avanza, pero tardará algunos días :stuck_out_tongue: (76.500 accesos…).

Como nadie más tiene este problema, estoy tratando de pensar en mis variables y básicamente:

  • Cambié de máquina (así que podría ser una limitación de velocidad de YouTube).
  • Restauré una copia de seguridad de Discourse en una nueva instalación (esto no debería estar relacionado, pero en este punto estoy apostando por todo lo que se mueva).
  • Instalación con dos contenedores (Pensé que tenía un problema con la reconstrucción de datos, pero gracias a esta información de @Falco, ahora sé que es “normal”).
  • Colocé CloudFlare encima siguiendo los tutoriales de CDN que hay aquí.
1 me gusta

Perdona por ser un poco lento :slight_smile: ¿quieres decir que estás ejecutando esta tarea de rake?

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

Es importante publicar exactamente lo que estás escribiendo y viendo.

¿Cuál es la tarea de rake exacta y qué parámetros estás ejecutando?

Cuando ejecutas esa tarea de rake, ¿cuáles son las primeras líneas de salida cuando la tarea comienza a reprocesar?

Por favor, publica detalles, capturas de pantalla, copias y pegues de tu(s) línea(s) de comandos, etc.

2 Me gusta

Perdona @neounix, tienes toda la razón.

Déjame reformularlo:

Ejecuté este comando:

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

Entonces pensé: “bueno, obvio, necesitas añadir el temporizador, de lo contrario no podemos probar la ‘Teoría del Límite de Tasa’”, así que intenté el que publicaste:

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

Y lo detuve solo para verificar si las cosas estaban cambiando. Aparentemente nada, así que pensé: “ok, déjame ejecutar esto de nuevo y ver cómo va”:

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

Eso se está ejecutando ahora mismo. Así que mi argumento era que el número total de publicaciones no disminuyó con el otro rebake. (Podría estar, y posiblemente estoy, equivocado con esta lógica).

1 me gusta