Youtube embeds missing

Hola @Iceman

No estás equivocado. Solo estás intentando resolver un problema; quizás te sientas frustrado porque tus incrustaciones de YouTube no funcionan…

Cuando ejecutas esto:

# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)- 

Como el retraso está configurado en 100, solo se volverá a hornear un mensaje cada 100 segundos. Tienes casi 77 mil mensajes que volver a hornear (usando este patrón), lo que tomaría unos 90 días. Cuando usé 100, fue solo como ejemplo, no como recomendación; disculpa si te confundí :slight_smile:

Incluso si cambias el retraso a 10 segundos, el proceso de volver a hornear tomará unos 9 días.

¿A qué velocidad quieres volver a hornear realmente tus “pasteles de YouTube”?

Puedes ejecutar fácilmente “Reconstruir HTML” como administrador haciendo clic en el botón debajo de cada publicación.

Gracias @neounix

Lo probé en un solo mensaje con un enlace de YT:

root@cont-web-only:/var/www/discourse# rake posts:rebake_match['icemanworkingonthisheadache',string,5]
        1 / 1 (100.0%)
¡1 mensaje procesado!

Luego revisé ese mensaje y aún solo muestra el enlace, sin el onebox. (Lo verifiqué sin caché, sin cookies, incluso desde otra PC :P)

Gracias @Overgrow.

También lo intenté tanto antes como después del comando de rebake (el de arriba) en el mismo mensaje y en otro, sin éxito.

Hola @iceman,

Eso es una gran pista; y ahora sabemos que incluso volver a generar un solo post con la tarea rake no resuelve tu problema (también confirmamos que la reconstrucción HTML desde la interfaz no funciona, como sugirió @Overgrow), que es lo que intentabas decirnos antes.

Gracias por el seguimiento paso a paso.

Déjame pensarlo un momento; y mientras tanto, quizás otros tengan algunas ideas ahora que el problema se está volviendo más claro.


Edición:


@Iceman

Publica aquí uno de tus enlaces de YT (que no se resuelven) (quizás donde agregaste el texto ‘icemanworkingonthisheadache’) y confirmemos que la tarjeta de vista previa funcione aquí (y yo también lo probaré en uno de mis sitios de prueba).

¡Claro que sí, @neounix!

Esto ocurre con cualquier video de YT, pero para mantener la consistencia, aquí tienes dos que probé específicamente para esto:


Edición: Sí, funcionan aquí.

Como nota, no logro que aparezcan en el panel de vista previa de mi instalación.

¿Pero todos los demás cuadros de “no YT” se están mostrando correctamente en tu sitio, @Iceman?

Hola @neounix

Sí, todas las demás oneboxes funcionan como se espera: Discourse, WordPress, SoundCloud, Facebook, Twitter, Vimeo, etc. Solo YT aparece como una URL.

Una cosa que puedes probar es iniciar sesión en Google y visitar el sitio de YouTube mientras estás conectado a través de tu servidor proxy, y ver si te muestra algún mensaje de error “interesante”.

Bueno, si no puedes hacer que onebox funcione en el editor para publicaciones recién agregadas, no tiene sentido volver a generar las publicaciones antiguas.

Primero necesitas hacer que onebox funcione para las nuevas publicaciones (al menos que se muestre correctamente en el panel de vista previa).

Y por cierto… la reconstrucción de HTML desde la interfaz de usuario equivale a volver a generar.

Así que, tras una semana de penitencia, logré cierto progreso, pero finalmente me topé con un muro.

  • Todos los detalles mencionados anteriormente siguen vigentes.

  • Después de hacer un esfuerzo extraordinario en la depuración, resultó que el problema era el siguiente: Al crear el nuevo Droplet, aproveché para actualizar algunas cosas que no pude hacer entonces con el original. Una de ellas fue IPv6. Resulta que los rangos de IPv6 de Digital Ocean están mayoritariamente bloqueados por Google por alguna razón cósmica. Así que, un consejo para el futuro: si estás configurando una instalación de Discourse en DO, no actives IPv6, porque no podrás eliminarlo más tarde; tendrás que cambiar de Droplet.

  • Tras corregir eso, todo funcionó como se esperaba. Sin embargo, debido al crecimiento normal (y a algunas tácticas recientes de Alphabet), he vuelto a la casilla de salida porque ahora recibo este error y no conozco ninguna forma de “detener” a Discourse para que no procese los oneboxes (incluso intenté añadir el dominio de YT a la lista negra, sin éxito). Esto se debe a que, según ese post que enlazo, “debería desaparecer después de una hora”, pero no puedo congelar mis rebakes… ¿o sí puedo? ¿Debería? Las otras opciones dependen de cambiar cosas en el lado del servidor, lo que implicaría… añadir más IPs? ¿Forzar “X-Forwarded-For” en las llamadas de Onebox?

  • Además, una pregunta adicional: ¿Por qué Discourse “asume la carga” de llamar a YT? Quiero decir, este error sugiere que es la IP del servidor la que está siendo señalada por realizar todas las llamadas (sí, es por la expansión de onebox), pero… ¿por qué no recae esto sobre el usuario que carga la página? ¿Rendimiento?

Hola @Iceman

Como una solución temporal, he probado este CSS (no elegante) para ti y parece funcionar para detener el onebox (del procesamiento); como una especie de enfoque de “golpear una mosca con un martillo”, que podrías activar y desactivar (agregar y quitar) hasta que encuentres algo mejor. Pruébalo y dime:

.onebox-body{
    display:none;
}

Espero que esto ayude.

Nota:

Probé esto en algunos enlaces onebox y el onebox(es) desapareció y el enlace permaneció; pero no lo probé en detalle, lo siento.

Simplemente detén el procesamiento actual. ¿Sabes qué desencadenó la regeneración que se está ejecutando? ¿Es un trabajo en segundo plano? Si es así, simplemente reduce la configuración de ‘número de publicaciones antiguas a regenerar’ a cero.

Luego puedes usar la regeneración de publicaciones de YouTube seleccionadas (que coincidan con una expresión regular) con retrasos..

En primer lugar, gracias a ambos, @neounix y @Overgrow.

Respecto a esto:

Lo probaré lo antes posible. Mientras me bloquee para poder probar, estaré encantado :smiley:

Respecto a la pregunta de @Overgrow:

Recientemente aprendí (gracias a ustedes) cómo realizar rebakes personalizados, hacer consultas y usar magia oscura. Sin embargo, ¿puedo preguntar cómo puedo saber o consultar esto:

Es decir… ¿eso se hace en la consola de Ruby o matando algo en Sidekiq…?

rebake old posts count controla cuántas publicaciones marcadas con las diversas tareas rake se procesan cada 15 minutos.

Hola @riking,

Gracias por tu aporte. Solo una pregunta rápida… ¿cómo puedo cambiar esa configuración? ¿Rails Console?

Hola @Iceman

Es una configuración en la interfaz de administración de usuario

¡Dios, qué tonto me siento! :sweat_smile: Gracias @neounix.

Sin embargo, no puedo establecerlo en cero. La interfaz indica que el valor debe estar entre 1 y 2000000000. Así que supongo que lo estableceré en 1 y lo combinaré con tu truco… eso debería permitirme ver si se levanta la prohibición.

(Porque las otras opciones son mucho más pesadas, al ser nuevas IPs, balanceadores de carga o forzar directamente X-Forwarded-For en todo, y no quiero estropear el funcionamiento de Discourse :sweat:)

¡Actualizaré pronto!

Por si acaso… Si necesitas configurarlo en cero, lo más probable es que puedas hacerlo mediante una consulta de actualización directa en la base de datos (o en Rails, sobre lo cual no puedo opinar con conocimiento).

Bueno, no hubo suerte. Lo dejé con el valor 1 y el truco para no mostrar nada, y el baneo sigue activo 5 horas después. ¿Lo peor? Obviamente no hay forma de contactarlos, así que solo estoy adivinando formas de solucionarlo. :sweat:

Debes tener paciencia. En mi experiencia, puede tardar de 2 a 3 días en levantarse la prohibición. Solo asegúrate de que no haya más solicitudes a esa IP.

Puedes verificar si aún hay trabajos de rebake pendientes. La pista está en el código (esta línea selecciona las publicaciones que necesitan ser rebakeadas en segundo plano, limitadas por la configuración rebake old posts count):

Estás buscando las siguientes publicaciones:

WHERE (((baked_version IS NULL) OR (baked_version < 2)) AND (deleted_at IS NULL))