Ir al contenido principal

Advertencia para usuarios de Unstable: se acerca la refactorización de EFCore

· 6 min de lectura
Joshua Boniface
Project Leader
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Prepárense, la refactorización de EFCore se acerca

Usuarios de Unstable: planeamos fusionar nuestra conversión pendiente de EFCore para library.db en las próximas semanas. Es imperativo que todos los usuarios de Unstable entiendan qué está pasando, cuál es el plan y cómo mitigar los problemas que inevitablemente surgirán de esto. Los usuarios de Stable (10.y.z) no necesitan realizar ninguna acción.

Las compilaciones Unstable están actualmente pausadas durante aproximadamente 4 semanas después del lanzamiento de 10.10.0, y durante este tiempo planeamos fusionar estos extensos cambios en la base de datos. Habrá problemas: errores, correcciones y migraciones de base de datos durante este período. Esta es tu advertencia justa para que (a) te prepares con una buena estrategia de respaldo y recuperación y deshabilites las actualizaciones automáticas; o (b) cambies de Unstable a la versión estable 10.10.0 hasta que las cosas se calmen (¡pero, por favor, no lo hagas, ya que necesitamos tu ayuda para probar!).

Por favor, continúa leyendo para obtener una descripción más detallada si estás interesado.

- Joshua

¿Qué es EFCore y por qué lo estamos migrando?

EFCore es el marco de manejo de bases de datos para C#/.NET, que simplifica el manejo de consultas de base de datos en el código base de Jellyfin.

Nuestro código original de base de datos fue escrito por Emby en una época mucho antes de que existiera .NET Core, cuando Mono dominaba el mundo en términos de compatibilidad multiplataforma para C#. Como resultado, manejaba la base de datos de manera deficiente: consultas SQLite incrustadas directamente en el código y un esquema bastante horrible sin capacidades de migración. Esto nos ha causado muchos problemas a lo largo de los años mientras intentamos cambiar y mejorar el código base y agregar nuevas funciones, y por ello, el equipo comenzó a migrar a EFCore hace bastante tiempo.

Pudimos mover muchas de las bases de datos rápidamente, principalmente debido al trabajo diligente de @BarronPM; esas han estado en vivo durante varios lanzamientos importantes hasta ahora. Pero la base de datos de la Biblioteca se ha mantenido como estaba, debido a su enorme complejidad y un esquema excepcionalmente pobre. Esto ha causado muchos problemas, por ejemplo, búsquedas muy lentas, problemas al agregar nuevos tipos de medios (o descontinuar los antiguos) y mucha complejidad dentro del código base al manejar tipos de medios "no estándar" (es decir, que no son Películas/Programas de TV/Álbumes de Música), lo que resulta en errores.

Ahora, gracias a @JPVenson, finalmente tenemos la implementación de EFCore para la base de datos de la Biblioteca lista para usar. Pero hay un gran inconveniente.

Habrá errores

Una vez que fusionemos este conjunto masivo de cambios, habrá errores. Esto es seguro. Y estos errores podrían dañar completamente tu base de datos de la biblioteca. Así que, ante todo, es increíblemente importante que todos los que ejecutan las compilaciones Unstable entiendan que esto se acerca y cómo prepararse.

En qué nos enfocaremos

Nuestro objetivo principal será asegurar que las migraciones de estable a estable entre 10.10.x y 10.11.x funcionen sin problemas, ya que queremos y necesitamos que esta transición sea lo más fluida posible para la mayoría de usuarios que ejecutan compilaciones estables cuando se lance 10.11.0.

Pero para hacer esto, necesitamos tanto probar los cambios en Unstable como asegurar que nuestras migraciones sean válidas para los datos provenientes de la versión estable 10.10.x.

El inconveniente de esto, sin embargo, es que podríamos no ser capaces de implementar migraciones de Unstable a Unstable de manera limpia y que funcione correctamente. Aunque intentaremos hacerlo, no podemos garantizarlo.

Nuestra cronología

  1. Esta publicación de blog inicia el proceso para advertir a todos los usuarios de la versión inestable sobre este cambio inminente. Ten en cuenta que al momento de publicar, las compilaciones inestables están desactivadas debido al reciente lanzamiento de la versión 10.10.0, y permanecerán así durante algún tiempo.

  2. Aproximadamente 1-2 semanas después de esta publicación, fusionaremos la migración de EFCore para la Biblioteca en nuestra rama master e iniciaremos pruebas preliminares. Si deseas ayudar en esta etapa, deberás compilar Jellyfin desde el código fuente. ¡Cuanta más gente colabore, mejor!

  3. Unas 2 semanas después de la fusión, suponiendo que todo parezca correcto, rehabilitaremos las compilaciones inestables para el público general. En este punto, todas las compilaciones inestables aplicarán las migraciones iniciales al iniciar. Esto nos situará aproximadamente 4 semanas (más o menos una semana) después del lanzamiento de 10.10.0.

  4. Durante las siguientes semanas, recibiremos informes de errores e intentaremos corregirlos. Este es el posible punto crítico: si no podemos implementar un conjunto limpio de migraciones, podríamos centrarnos solo en las conversiones de estable a inestable, en lugar de inestable a inestable. De ocurrir esto, quizá necesites restaurar una versión anterior y aplicar las nuevas migraciones.

Lo que esto realmente significa para ti

Primero y principal: si esto te parece demasiado complejo, esta es tu advertencia para salir. Cambia a la versión estable ahora, antes de que reactivemos las compilaciones inestables en unas semanas.

Segundo: implementa una estrategia de copias de seguridad sólida basada en nuestro proceso recomendado. Realiza copias regularmente y, para ayudarnos a probar, conserva también una copia de tu última versión estable. Haz copias de seguridad siempre antes de aplicar cada nueva compilación inestable.

Tercero: desactiva las actualizaciones automáticas. Siempre lo recomendamos, pero si aún no lo has hecho, ahora es el momento.

Cuarto: si encuentras problemas, reporta el error incluyendo [EFCore Library] en el título. Esto nos ayudará a identificar y solucionar los errores.

Quinto y final: si falla una migración, primero restaura una versión anterior de la base de datos e intenta ejecutarla nuevamente. Si sigue fallando, prueba con tu copia más antigua (idealmente 10.9.11 o 10.10.0 estable). Si esa tampoco funciona, reporta un nuevo error.