En cuanto al procedimiento alternativo, ¿crees que debería ser relativamente seguro hacerlo? No me preocupa la caída del servicio, solo romper algo.
Está utilizando el contenedor único estándar de app.yml. Para aliviar la carga web, ¿crees que usar el modo de solo lectura y ejecutar ./launcher stop app, ./launcher start app antes de aplicar el procedimiento alternativo sería suficiente?
Gracias, Sam, apliqué el procedimiento alternativo. Sin embargo, no recibí ningún feedback al ejecutar:
ALTER TABLE notifications ALTER COLUMN id SET DATA TYPE bigint
No estoy seguro de si aún está procesándose. Actualmente, obtengo el mismo error (en la lista de trabajos muertos de /sidekiq, para los últimos intentos de ‘hace un momento’) para:
Ejecuté eso (no recibí confirmación ni retroalimentación, como con el anterior). El foro no se ralentizó, así que no estoy seguro de si funcionó. Actualmente estoy obteniendo los mismos errores.
Quizás lo mejor sea que espere a la migración oficial.
¿Tienes curiosidad sobre dónde te encuentras ahora con este tema? ¿Han cesado los errores?
Originalmente, estábamos pensando en realizar alguna migración oficial aquí, pero el riesgo supera con mucho el beneficio. Encontramos extremadamente raro toparnos con bases de datos que tengan más de 2.147.483.647 publicaciones. 2,1 mil millones es un número realmente grande.
La desventaja de aumentar el tamaño en todas partes es que aumentan los requisitos de almacenamiento.
En lo que respecta a nuestra situación actual, estamos considerando agregar una tarea rake que “haga espacio” si te encuentras en un caso atípico donde tienes tablas en Discourse que contienen 2 mil millones de filas (o que tuvieron 2 mil millones de filas de cambios).
Acabo de actualizar a la versión 2.8.0.beta6 y aún tengo errores de entero fuera de rango.
Creo que se debe a que las notificaciones han alcanzado un número masivo, lo cual es más realista para llegar al límite en comparación con la cantidad de publicaciones. Muchos temas grandes con numerosas respuestas, me gusta, etc., de diferentes usuarios pueden generar una gran cantidad de notificaciones.
Acabamos de encontrar este problema en nuestra configuración también (devforum.roblox.com). Estamos ejecutando la v2.8.9, pero pronto actualizaremos a la 3.0.1.
Notamos que algo andaba mal cuando los usuarios comenzaron a ver 403/500 al intentar dar “me gusta” o “no me gusta” a las publicaciones.
Sí, esta sigue siendo la única solución aquí. Me preocupa cambiarlo en el núcleo, pero supongo que esto seguirá sucediendo en foros gigantescos si no lo solucionamos.
La desventaja es el aumento del almacenamiento.
¿Sabes si hay algún uso en el servicio post_actions (o en algún lugar del proceso de notificación) que todavía pueda estar esperando enteros después de ejecutar ALTER?
Estamos viendo errores 5xx en las llamadas de “me gusta”/“no me gusta” a /post_actions con la respuesta
{"errors":["No se pudo encontrar la URL o el recurso solicitado."],"error_type":"not_found"}
Además, algunas de las fallas de trabajos en torno a las notificaciones (Jobs::BookmarkReminderNotifications, Jobs::GrantAnniversaryBadges, Jobs::PostAlert).
Agregué el rastreo de pila para PostAlert en mi mensaje anterior; parece que hay un problema que se lanza por un límite de enteros en consolidate_or_create en notification.rb.
Para nuestro uso, el aumento del almacenamiento no es una gran preocupación si podemos restaurar la funcionalidad