EthicApp-Development / ethicapp-main

EthicApp's main repository containing backend and frontend applications
MIT License
1 stars 1 forks source link

[ethicapp-v2] Error al iniciar actividad en vista de alumno #151

Closed ifgarces closed 1 year ago

ifgarces commented 1 year ago

Descripción del error/bug

Al ejecutar localmente el sistema (docker-compose de desarrollo), en la vista de estudiante, al ingresar el código de una actividad arbitraria en curso, no ocurre nada, se devuelve a la pantalla principal del estudiante, en lugar de navegar hacia la actividad (a la fase correspondiente para responder las preguntas).

https://github.com/EthicApp-Development/ethicapp-main/assets/48460500/55115d3d-f833-42c9-9ea2-4b1f47734b47

Detalles

¿Cuándo ocurrió?

Ocurrió con anterioridad en algunos PRs. Se observó ahora al hacer el merge del PR #143. Sin embargo, el error no parece corresponder a ese PR, por lo que se realizó el merge.

¿En qué dispositivo fue?

PC, Linux Mint

¿En qué explorador web ocurrió?

Opera 100.0.4815.20

¿Cómo reproducir el error?

Lanzar ambiente con docker-compose de desarrollo. Autenticarse como profesor, lanzar una actividad, copiar el código, autenticarse como alumno, e intentar ingresar a la actividad mediante ese código.

Detalles adicionales

Como se muestra en el video, el log del backend al ingresar el código e intentar unirse a la actividad, es el siguiente:

ethicapp-node | [2023-07-01T17:15:54.108Z] Session {
ethicapp-node |   cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
ethicapp-node |   passport: {
ethicapp-node |     user: {
ethicapp-node |       id: 3,
ethicapp-node |       name: 'alumno 1',
ethicapp-node |       rut: '20884663-9',
ethicapp-node |       pass: 'f6b16b945f3a595d0f4d0b9270eb0cb5',
ethicapp-node |       mail: 'alumno1@test',
ethicapp-node |       sex: 'M',
ethicapp-node |       role: 'A',
ethicapp-node |       aprendizaje: 'Reflexivo',
ethicapp-node |       lang: 'spanish',
ethicapp-node |       disabled: null
ethicapp-node |     }
ethicapp-node |   },
ethicapp-node |   __lastAccess: 1688231739494,
ethicapp-node |   uid: 3,
ethicapp-node |   role: 'A',
ethicapp-node |   ses: null
ethicapp-node | }
ethicapp-node | [Readings] GET /to-diff?sesid=37 302 - 2.649 ms
ethicapp-node | [Readings] GET /ethics 302 - 1.533 ms
ethicapp-node | [Readings] GET / 302 - 1.378 ms
ethicapp-node | [Readings] GET /seslist 304 - 2.543 ms
ethicapp-node | [Readings] GET /assets/libs/angular.min.js 304 - 0.443 ms
ethicapp-node | [Readings] GET /assets/libs/ui-bootstrap-tpls-1.1.2.min.js 304 - 0.456 ms
ethicapp-node | [Readings] GET /assets/libs/socket.min.js 304 - 0.603 ms
ethicapp-node | [Readings] GET /assets/libs/ua-parser.min.js 304 - 1.024 ms
ethicapp-node | [Readings] GET /assets/libs/angular-intro.min.js 304 - 1.045 ms
ethicapp-node | [Readings] GET /assets/libs/intro.min.js 304 - 1.167 ms
ethicapp-node | [Readings] GET /assets/css/bootstrap.min.css 304 - 0.723 ms
ethicapp-node | [Readings] GET /assets/css/font-awesome.min.css 304 - 0.772 ms
ethicapp-node | [Readings] GET /assets/css/introjs.css 304 - 1.107 ms
ethicapp-node | [Readings] GET /assets/css/main.css 304 - 0.392 ms
ethicapp-node | [Readings] GET /assets/js/ses-ctrl.js 304 - 0.364 ms
ethicapp-node | [2023-07-01T17:15:54.280Z] Error: Not Found
ethicapp-node |     at /home/app/app.js:74:15
ethicapp-node |     at Layer.handle [as handle_request] (/home/app/node_modules/express/lib/router/layer.js:95:5)
ethicapp-node |     at trim_prefix (/home/app/node_modules/express/lib/router/index.js:328:13)
ethicapp-node |     at /home/app/node_modules/express/lib/router/index.js:286:9
ethicapp-node |     at Function.process_params (/home/app/node_modules/express/lib/router/index.js:346:12)
ethicapp-node |     at next (/home/app/node_modules/express/lib/router/index.js:280:10)
ethicapp-node |     at /home/app/node_modules/express/lib/router/index.js:646:15
ethicapp-node |     at next (/home/app/node_modules/express/lib/router/index.js:265:14)
ethicapp-node |     at Function.handle (/home/app/node_modules/express/lib/router/index.js:175:3)
ethicapp-node |     at router (/home/app/node_modules/express/lib/router/index.js:47:12)
ethicapp-node | [Readings] GET /assets/libs/angular.min.js.map 404 - 3.048 ms
ethicapp-node | [2023-07-01T17:15:54.298Z] Error: Not Found
ethicapp-node |     at /home/app/app.js:74:15
ethicapp-node |     at Layer.handle [as handle_request] (/home/app/node_modules/express/lib/router/layer.js:95:5)
ethicapp-node |     at trim_prefix (/home/app/node_modules/express/lib/router/index.js:328:13)
ethicapp-node |     at /home/app/node_modules/express/lib/router/index.js:286:9
ethicapp-node |     at Function.process_params (/home/app/node_modules/express/lib/router/index.js:346:12)
ethicapp-node |     at next (/home/app/node_modules/express/lib/router/index.js:280:10)
ethicapp-node |     at /home/app/node_modules/express/lib/router/index.js:646:15
ethicapp-node |     at next (/home/app/node_modules/express/lib/router/index.js:265:14)
ethicapp-node |     at Function.handle (/home/app/node_modules/express/lib/router/index.js:175:3)
ethicapp-node |     at router (/home/app/node_modules/express/lib/router/index.js:47:12)
ethicapp-node | [Readings] GET /assets/images/logos/logo.png 304 - 0.442 ms
ethicapp-node | [Readings] GET /assets/libs/socket.min.js.map 404 - 2.641 ms
ethicapp-node | [2023-07-01T17:15:54.341Z] Error: Not Found
ethicapp-node |     at /home/app/app.js:74:15
ethicapp-node |     at Layer.handle [as handle_request] (/home/app/node_modules/express/lib/router/layer.js:95:5)
ethicapp-node |     at trim_prefix (/home/app/node_modules/express/lib/router/index.js:328:13)
ethicapp-node |     at /home/app/node_modules/express/lib/router/index.js:286:9
ethicapp-node |     at Function.process_params (/home/app/node_modules/express/lib/router/index.js:346:12)
ethicapp-node |     at next (/home/app/node_modules/express/lib/router/index.js:280:10)
ethicapp-node |     at /home/app/node_modules/express/lib/router/index.js:646:15
ethicapp-node |     at next (/home/app/node_modules/express/lib/router/index.js:265:14)
ethicapp-node |     at Function.handle (/home/app/node_modules/express/lib/router/index.js:175:3)
ethicapp-node |     at router (/home/app/node_modules/express/lib/router/index.js:47:12)
ethicapp-node | [Readings] GET /assets/libs/angular-intro.min.js.map 404 - 2.431 ms
ethicapp-node | [Readings] POST /get-session-list 200 - 5.062 ms
ethicapp-node | [Readings] POST /get-my-name 200 - 4.166 ms
ethicapp-node | [Readings] GET /assets/i18n/ES_CL/spanish.json 304 - 0.333 ms
MatiasRiveraC commented 1 year ago

intenta hacerlo en una vista incognito cuando te conectes como alumno

ifgarces commented 1 year ago

Si lo intenté, tampoco. He navegado commits pasados y el tema está desde hace rato, desde 3 PRs o más viendo a ojo.

On Sat, Jul 1, 2023, 14:08 MatiasRiveraC @.***> wrote:

intenta hacerlo en una vista incognito cuando te conectes como alumno

— Reply to this email directly, view it on GitHub https://github.com/EthicApp-Development/ethicapp-main/issues/151#issuecomment-1616027880, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALRXFVB6CLULAGBBFWROPD3XOBRTNANCNFSM6AAAAAAZ25FCDY . You are receiving this because you authored the thread.Message ID: @.***>

MatiasRiveraC commented 1 year ago

puedes mostrar los network responses (navegador) que realiza el cliente al intentar entrar a al sesión?

ifgarces commented 1 year ago

No sé cómo hacer eso, podrías intentarlo tu haciendo pull de la rama overhaul-2122 porfa?

On Sat, Jul 1, 2023, 15:12 MatiasRiveraC @.***> wrote:

puedes mostrar los network responses (navegador) que realiza el cliente al intentar entrar a al sesión?

— Reply to this email directly, view it on GitHub https://github.com/EthicApp-Development/ethicapp-main/issues/151#issuecomment-1616055450, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALRXFVFM2WSNWEIGHLBSJVTXOBZCRANCNFSM6AAAAAAZ25FCDY . You are receiving this because you authored the thread.Message ID: @.***>

MatiasRiveraC commented 1 year ago

No sé cómo hacer eso

No estoy en mi casa actualmente, has F12 y ve la sección de network, limpiala, intenta ingresar a una sesión y envía una imagen con los requests.

ifgarces commented 1 year ago

No se qué pasó pero al borrar a mano las cookies (ethicapp/sessions/*) me funcionó. Muchas gracias Matías, voy a registrarlo como issue y todo bien 👍👍

--

Ignacio F. Garcés Estudiante de Ingeniería Civil en Computación Universidad de los Andes

On Sat, Jul 1, 2023 at 3:40 PM MatiasRiveraC @.***> wrote:

No sé cómo hacer eso

No estoy en mi casa actualmente, has F12 y ve la sección de network, limpiala, intenta ingresar a una sesión y envía una imagen con los requests.

— Reply to this email directly, view it on GitHub https://github.com/EthicApp-Development/ethicapp-main/issues/151#issuecomment-1616064351, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALRXFVFFBLLK6RIWUSQITD3XOB4MDANCNFSM6AAAAAAZ25FCDY . You are receiving this because you authored the thread.Message ID: @.***>

ifgarces commented 1 year ago

Ah, perdón, no. Estaba en un commit antiguo donde eso sí funcionó. Ahora mismo en overhaul-2122), hacer eso no soluciona el problema… Tampoco hacer eso de limpiar “network” en el menú de desarrolaldor del navegador. El problema también ocurre en Firefox.

¿Podría alguno confirmarme que también les ocurre este problema, en ejecución local?

Las siguientes réplicas que sean a través de la issue https://github.com/EthicApp-Development/ethicapp-main/pull/143 por favor.

--

Ignacio F. Garcés Estudiante de Ingeniería Civil en Computación Universidad de los Andes

On Sat, Jul 1, 2023 at 4:28 PM IGNACIO FELIPE GARCÉS SANTANDER < @.***> wrote:

No se qué pasó pero al borrar a mano las cookies (ethicapp/sessions/*) me funcionó. Muchas gracias Matías, voy a registrarlo como issue y todo bien 👍👍

--

Ignacio F. Garcés Estudiante de Ingeniería Civil en Computación Universidad de los Andes

On Sat, Jul 1, 2023 at 3:40 PM MatiasRiveraC @.***> wrote:

No sé cómo hacer eso

No estoy en mi casa actualmente, has F12 y ve la sección de network, limpiala, intenta ingresar a una sesión y envía una imagen con los requests.

— Reply to this email directly, view it on GitHub https://github.com/EthicApp-Development/ethicapp-main/issues/151#issuecomment-1616064351, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALRXFVFFBLLK6RIWUSQITD3XOB4MDANCNFSM6AAAAAAZ25FCDY . You are receiving this because you authored the thread.Message ID: @.***>

MatiasRiveraC commented 1 year ago

Animation

En la ultima rama en la cual trabajé, probé y funciona bien. Así que puede haber un error que después de todos los cambios que hicieron.

ifgarces commented 1 year ago

Claro @MatiasRiveraC, a eso me refiero, es un error de la rama overhaul-2122, no de tu rama antigua. Ojalá @javiersoto99 y @jigracia puedan revisar y puedan dar su opinión de cuál puede ser el problema, ya que ellos trabajaron después de tus cambios.

jigracia commented 1 year ago

Actualmente me encuentro fuera de mi casa hasta mañana. Tan pronto pueda ingresaré a ver el origen del problema

javiersoto99 commented 1 year ago

Ayer al revisar en la rama issue-136-enhancement con @ifgarces lo probamos y sin problemas funcionales (además del bug que se tiene ingresar el código 2 veces), mas tarde igual revisaré si existe otra causa.

ifgarces commented 1 year ago

Se observó que, en mi caso al menos, todo este tiempo teniendo la rama overhaul-2122 actualizada (e.g. commit 210b9a70c1024763d28cdc1b192306df6095a515), solo ocurre este problema en la ejecución de desarrollo. Si se ejecuta localmente en el modo de producción según se indica en INSTALL.md, este problema no existe.

Por tanto, muy probablemente esto se deba a la issue #150, pues al haber puertos hardcodeados, la aplicación se expone en puertos distintos según sea desarrollo (5050) y producción (8080) y en desarrolllo algunos callbacks fallarían.

Al menos, la issue ya no es crítica de resolver para la ejecución de la app.

ifgarces commented 1 year ago

Actualización: @jigracia mencionó que, ahora, el problema también ocurre en Producción. Esto ocurre porque, como se explica en la reciente issue #154, dicha imagen se encontraba desfasada con respecto al código fuente de Desarrollo (al menos un par de PRs atrasada), por lo que ejecutaba una versión de la app que no tenía el bug.

Por tanto, como hoy @jigracia actualizó la imagen, esta issue vuelve a tener prioridad máxima: afecta tanto a Desarrollo como Producción.

claudio-alvarez commented 1 year ago

Puede ser que tenga relación con #161, y que haya un problema abriendo websocket en la interfaz del alumno. A través de websocket llegan los mensajes que causan que la interfaz del alumno transicione de una fase a otra.

Tenemos que verificar si se trata de un problema de configuración en ambiente de staging (nginx?), o si también ocurre en ambiente de desarrollo. Para esto, tenemos que revisar el código en donde se abre conexión por websocket con backend, y ver, por ejemplo, si hacemos algo con las URLs (#124).

ifgarces commented 1 year ago

Cierto @claudio-alvarez, aunque como ves en el video adjunto a este issue, el frontend no presenta un error de websocket, sino que sólo se queja de que no fue capaz de cargar (aparentemente) unas 3 librerías de frontend. Pero sí, estoy bastante seguro de que es un bug con la conexión entre el back y front, algún callback que falla. Respecto a las varias issues que ahora has estado creando, no he experimentado (casi) nada similar en ejecución local tanto en modo Desarrollo como Producción, más bien parecen tener relación con la configuración del servidor de stating.

jigracia commented 1 year ago

Yo hice un clean clone hoy en la tarde y estoy experimentando problemas de poder ingresar a una actividad como alumno tanto en modo desarrollo como en modo producción. Así que esto debe ser mas allá del servidor de stagin sino que debe ser algún cambio (o serie de cambios) en los últimos PRs que rompieron las llamadas.

ifgarces commented 1 year ago

@jigracia sí, por eso estaba funcionando antes en Producción, pues funcionaba con código un poco antiguo. Hay que identificar el commit a partir del cual este problema se originó, como te comenté en Discord, espero que puedas ayudarme a eso. Creo que con esto, se solucionará la mayor parte de los issues que hoy reportó @claudio-alvarez.

jigracia commented 1 year ago

Creo haber encontrado una posible causa de por que no se inicia la vista del usuario, o mejor dicho porque resulta en una redireccion instantanea a hacia la misma pagian donde se ingresa el codigo.

Al ver la linea que renderisa la vista, esta es bifurcada por un If que checkea ids de sessiones.

image

Se puede ver que el "req.session.ses" da nulo, haciendo que el if corra la linea de redireccion.

Incluso si se fuerza un req.session.ses hardcodeado deja pasar a la siguiente vista a lo cual vuelve a presentar una erro debido a la falta de req.session.ses

image

Esta lógica esta fuera de mi área de trabajo para estos últimos hitos así que necesitaría ayuda para rectificar la lógica.

jigracia commented 1 year ago

Implemente una solucion semi parche para poder pasar a la vista del usuario:

image

Ahora el "get-ses-info" dentro de "/ethics-ctrl.js" llama a la base de datos "rest-pg" la cual devuelve un error por , nuevamente, falta de parámetros de sesión.

image image image

Aquí investigare bien como se hace el manejo de sesión y porque este valor parce no ser asignado a nivel de aplicación.

jigracia commented 1 year ago

Lo otro. Al parecer el primer commit donde la vista del alumno empezo a presentar problemas es el siguiente:

Merge pull request https://github.com/EthicApp-Development/ethicapp-main/pull/147 from EthicApp-Development/issue-52-1-new-feature

jigracia commented 1 year ago

Hice un merge desde el ultimo commit que no presentaba el bug:

[Docker] Removed unnecessary comments (https://github.com/EthicApp-Development/ethicapp-main/issues/55[)](https://github.com/EthicApp-Development/ethicapp-main/commit/10dc11fd410506b4cfcfcaf5c1a37dab9f07fb1c)

Hacia el siguiente commit, este presentando el bug:

Merge pull request https://github.com/EthicApp-Development/ethicapp-main/pull/147 from EthicApp-Development/issue-52-1-new-feature

Github menciona pocos cambios hechos pero al momento de hacer merge github señala varios archvios cambiados.

image

@ifgarces este merge fue hecho por ti. Tu sabes porque se me presentaron cambios en estos archvios?

jigracia commented 1 year ago

Al deshacer los cambios de estos 3 archivos logre entrar a la actividad del usaurio. image

Aun la vista esta rota en término de estilo, pero creo que eso indica que estos cambios originaron los problemas.

claudio-alvarez commented 1 year ago

El problema lo seguimos teniendo en 9166e7d319c3b0f64460e7409c695731ccc6ba1f, actualmente operativo en staging alpha.ethicapp.info. Es bastante urgente resolver este bug.,

claudio-alvarez commented 1 year ago

Al deshacer los cambios de estos 3 archivos logre entrar a la actividad del usaurio. image

Aun la vista esta rota en término de estilo, pero creo que eso indica que estos cambios originaron los problemas.

Haciendo una investigación por mi lado, veo que efectivamente, hay un problema con que la variable req.session.uid no queda seteada y ello deriva en una redirección a la misma página.

Estoy de acuerdo con que habría que revisar la historia de cambios de los tres archivos en donde lograste aislar el problema.

claudio-alvarez commented 1 year ago

A juzgar por los cambios, es @vicentegana10 quien realizó cambios al middleware de passport y estuvo trabajando en autenticación de usuarios. Veremos con Vicente cómo solucionar este problema.

vicentegana10 commented 1 year ago

Encontramos con @claudio-alvarez que hay un error de programación recurrente que consiste en que la sesión no esta siendo guardada en el backend inmediatamente después de que esta es actualizada, pudiendo ocurrir que la redirección ejecute antes que la sesión se actualice en el sistema de archivos.

Ejemplo:

Antes:

router.get("/to-diff", (req, res) => {
    if (req.session.uid) {
        req.session.ses = req.query.sesid;
        res.redirect("ethics");
    }
    else
        res.redirect(".");
});

Después:

router.get("/to-diff", (req, res) => {
    if (req.session.uid) {
        req.session.ses = req.query.sesid;
        req.session.save((err) => { // Es necesario guardar la sesión _antes_ de hacer la redirección
            if (err) { res.redirect(".");}
            else { res.redirect("ethics");}
        });
    }
    else { res.redirect(".");}
});

Realizando esta modificación el problema deja de ocurrir.

El lugar en donde encontramos la solución es el siguiente:

https://stackoverflow.com/questions/68161730/session-is-not-being-saved-in-express-session

claudio-alvarez commented 1 year ago

Será necesario revisar todo el código de backend, pues este defecto parece estar bastante extendido. Por favor @vicentegana10, haz un PR de esto.

mabarraza commented 1 year ago

El issue en questión fue arreglado, los problemas secundarios encontrados serán trabajados en los issues correspondientes.