Problemas testeando actas digitales

Buenas tardes!

Estamos realizando pruebas de actas digitales en un entorno test, con el objetivo de implementarlo en los sistemas prod a corto plazo, comenzamos con actas de examen pero estamos encontrando unos problemas.

Primero, nuestras versiones de sistema son: Guaraní 3.21.3, Huarpe 3.2.0, Araí Usuarios 3.2.2 y Documentos 1.5.0.
La documentación que usamos de guía para la configuración de los sistemas es la siguiente:

https://documentacion.siu.edu.ar/wiki/SIU-Guarani/version3.19.0/interfaces/gestion-arai
https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.19.0/configuracion_del_sistema/parametros#Actas_Digitales
https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.19.0/configuracion_del_sistema/parametros#Equivalencias

El primer error que encontramos es al querer imprimir las actas, el sistema queda colgado y deja de responder completamente hasta que el navegador hace timeout de la sesión.
En el caso de autogestión nos genera los logs que adjunto, gestión no logea nada.

20240524_120001___1713.txt (6,4 KB)
20240524_120001___4556.txt (6,3 KB)

El segundo problema es al querer cerrar el acta, el sistema también se cuelga, pero cuando vuelve a responder el acta pasa a figurar como cerrada. Tema que nunca se envía a Huarpe y no genera ningún log de error por el camino.

No sabemos si nos falta algo de configurar o que puede ser.

Gracias de antemano.

Hola @mblua

En los logs veo los siguientes errores:

clase: siu\errores\error_guarani
mensaje: ERROR: Error Recordset - No se encontro recordset funcion:  id: 15_0e275a8195fbe6ea546c96e7c7cbd9eaba470ef1.  No se guardo correctamente la consulta, se vencio la sesion, o se manipulo la primera parte del parametro
clase: siu\errores\error_guarani
mensaje: ERROR: Error Recordset - No se encontro recordset funcion:  id: 15_5c41272e6899517c9d7db5cf97b4810bde5a2c08.  No se guardo correctamente la consulta, se vencio la sesion, o se manipulo la primera parte del parametro

Esto suele suceder cuando uno esta en la la “zona” de Cursadas, Clases o Exámenes y se vence la cache (dura 6 minutos como podes ver en protected static $cache_expiration = 3600; archivo src/siu/modelo/entidades/fuente_rs_guarani.php).

¿esto te pasa siempre o aleatoriamente?
A veces con volver a entrar e intentar nuevamente hacer la acción funciona.

Revisa también este foro: Error procesamiento de actas - nº 24 por lleonardis

Saludos.
2

Hola Leonel.

Para responder a tu pregunta, esto nos pasa siempre que intentamos imprimir o cerrar un acta, tanto desde gestión como autogestión.
En el caso de “cerrar acta”, una ves que el sistema vuelve a responder se ve que el proceso se ejecuto y el acta esta cerrada, aunque sigue sin aparecer en huarpe.
Al “imprimir actas” directamente no resuelve nada luego de vencer la sesión.

Vamos a probar extendiendo el $cache_expiration y ver que cambia.
También voy a ir revisando el foro que pasaste mientras tanto.

Gracias!

Hola @mblua

El error por el tiempo de sesión lo da Autogestión, Gestión no tiene ese tipo de problemas.

¿Se trata de un acta digital?
¿ejecutaste el comando bin/guarani sincronizar_documentos_arai, ver Worker de Documentos? ¿tenes croneado dicho comando?

¿que te devuelve la siguiente query?

SELECT estado, digital, id_documento_digital, estado_documento_digital, parametros_documento_digital  FROM sga_actas WHERE nro_acta = '<NRO-ACTA>';

¿y esta otra?

SELECT * FROM arai_documentos_cola;

¿tenes errores en el siguiente archivo de logs: instalacion/i__desarrollo/p__guarani/logs/docs-cli.log?

Saludos.
2

Hola Leonel.

Primero, en referencia al foro que pasaste en la primera respuesta. Revisé el mismo y en general tenemos mucha de la configuración igual, la única diferencia fue el apc.shm_segments que estaba en valor 1. Cambiamos a 4 y le pedí al usuario funcional que lo pruebe, si funciona lo aviso por aca.

En cuanto a tus preguntas:

  • Se trata de un acta digital, específicamente acta de examen.

  • El worker lo tenemos configurado en un supervisor como recomienda la documentación, también probamos la función de sincronización masiva en la interfaz de gestión pero indica que no hay documentos pendientes.
    Corriendo el comando manualmente también devuelve “[ERROR][guarani] No se encontraron documentos a sincronizar con Ara�.”

  • La query devuelve:

  • La tabla arai_documentos_cola esta vacía.

  • Los archivos docs-cli.log están vacíos en ambos.

Saludos.

Hola @mblua

Gracias por la información, parece que algo esta fallando:

  1. Cuando cerras un acta, en la tabla sga_actas columna estado_documento_digital debería quedar en ‘P’ (pendiente), en la tabla arai_documentos_cola se debería encolar un registro. Vos tenes dicha columna en null, algo falló.

  2. El comando bin/guarani sincronizar_documentos_arai desencola de la tabla arai_documentos_cola y crea el documento en Araí actualizando las columnas id_documento_digital y estado_documento_digital.

¿tenes personalizaciones? en especial en php/nucleo/actas/acta_nucleo.php.

Tenes acceso a los logs al momento de cerrar el acta (archivo instalacion/i__desarrollo/p__guarani/logs/sistema.log).

¿en la operacion » Administración » Sincronizar Masivamente Documentos con Araí no te lista el acta?

Saludos.
2

Entiendo @lleonardis .

Tema personalizaciones consulté con la persona a cargo del sistema y me dice que en ese archivo no tendríamos nada.

La operación Sincronizar Masivamente Documentos con Araí devuelve No se encontraron documentos a sincronizar con Araí., y al ver resultados anteriores lo mismo, No se encontraron resultados anteriores.

Estuve revisando el log del momento que cerramos el acta y no encontré ningún registro de la ejecución. Vamos a generar una nueva prueba para ver si lo genera, y en ese caso pasarlo.

Como consulta general, puede ser un tema de recursos de la VM el hecho de que se cuelgue de esa forma? Al ser un sistema de pruebas lo creamos con los recursos mínimos y necesarios.

Saludos.

Hola @mblua

Como consulta general, puede ser un tema de recursos de la VM el hecho de que se cuelgue de esa forma? Al ser un sistema de pruebas lo creamos con los recursos mínimos y necesarios.

No, si fuera recursos andaría mas lento o se colgaría, pero no debe dejar cosas por la mitad, si ves la función enviar_acta_arai_documentos de php/nucleo/actas/acta_nucleo.php hace todo dentro de un try/catch, en caso de falla la columna estado_documento_digital debería quedar en ‘F’ (fallo).

Tema personalizaciones consulté con la persona a cargo del sistema y me dice que en ese archivo no tendríamos nada.

¿tenes personalizado el co_actas, act_actas o act_arai_documentos?

Vamos a generar una nueva prueba para ver si lo genera, y en ese caso pasarlo.

Si, volvelo a probar y guarda los logs en caso de falla.

Saludos.
2

Hola @lleonardis

Estuvimos probando, pero encontramos que si el acta esta lista para ser cerrada, el sistema queda colgado indefinido y nunca genera el log a la hora de ejecutar el proceso.
En los casos cuando al acta le falta algún parámetro o algo, ahí ejecuta bien, tira el error y genera el log. Ej:

Fecha: 30-05-2024 12:36:01
Operacion: Cerrar Actas de Examen
Version-PHP: 7.4.33
URI: /guarani/aplicacion.php?ah=st66589cdf4266c5.99979675&ai=guarani%7C%7C38000086&tz=1
Referrer: https://guaranitest.unraf.edu.ar/guarani/aplicacion.php?tm=1&tcm=central&tz=1&ai=guarani||38000086
==========
[ERROR][guarani] �Atenci�n! Hay docentes que deben autorizar el acta y no est�n vinculados con SIU-Ara� Documentos.
[ERROR][guarani] �Atenci�n! Hay docentes que deben autorizar el acta y no est�n vinculados con SIU-Ara� Documentos.
[ERROR][toba] guarani_error: �Atenci�n! Hay docentes que deben autorizar el acta y no est�n vinculados con SIU-Ara� Documentos. 

Pero al corregir eso y correr lo que seria el cierre final, simplemente se cuelga y vuelve a responder un par de horas mas tarde. Adjunto los logs de apache que genera cuando el sistema vuelve a responder, por si muestran algo que pueda guiarnos.

[Wed May 29 16:00:01.896860 2024] [mpm_prefork:notice] [pid 26122] AH00170: caught SIGWINCH, shutting down gracefully
[Wed May 29 16:00:01.896917 2024] [php7:warn] [pid 27052] [client 181.189.222.48:57989] PHP Warning:  fopen(/dev/shm/.php_java_bridge6LiehM.i): failed to open stream: Interrupted system call in /usr/local/proyectos/guarani/vendor/si>
[Wed May 29 16:00:01.896990 2024] [php7:warn] [pid 27052] [client 181.189.222.48:57989] PHP Warning:  stream_set_blocking() expects parameter 1 to be resource, bool given in /usr/local/proyectos/guarani/vendor/siu-toba/jasper/JavaBr>
[Wed May 29 16:00:01.896997 2024] [php7:warn] [pid 27052] [client 181.189.222.48:57989] PHP Warning:  stream_set_timeout() expects parameter 1 to be resource, bool given in /usr/local/proyectos/guarani/vendor/siu-toba/jasper/JavaBri>
[Wed May 29 16:00:02.043786 2024] [ssl:warn] [pid 31127] AH01909: guarani.unraf.edu.ar:443:0 server certificate does NOT include an ID which matches the server name
PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
PHP Warning:  Module 'curl' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_pgsql' already loaded in Unknown on line 0
PHP Warning:  Module 'pgsql' already loaded in Unknown on line 0
PHP Warning:  PHP Startup: apc.shm_segments setting ignored in MMAP mode in Unknown on line 0
[Wed May 29 16:00:02.085799 2024] [ssl:warn] [pid 31128] AH01909: guarani.unraf.edu.ar:443:0 server certificate does NOT include an ID which matches the server name
[Wed May 29 16:00:02.093381 2024] [mpm_prefork:notice] [pid 31128] AH00163: Apache/2.4.56 (Debian) OpenSSL/1.1.1n configured -- resuming normal operations
[Wed May 29 16:00:02.093409 2024] [core:notice] [pid 31128] AH00094: Command line: '/usr/sbin/apache2'

Respondiendo a tu consulta, no tendríamos personalizaciones en nada de lo que refiere a actas.

Gracias!

Saludos.

Hola @mblua

Te esta dando el error ¡Atención! Hay docentes que deben autorizar el acta y no están vinculados con SIU-Araí Documentos., el cual lo da en la función get_docentes_autorizantes_acta de php/nucleo/actas/acta_nucleo.php, seguramente tenes docentes en la mesa de examen, pero dichos docentes no tienen usuario de Araí asociados, lo podes ver en » Matrícula » Personas »
Administrar Personas
solapa Acceso al sistema campo Usuario SIU-Araí:

Igualmente al ocurrir eso la columna sga_actas.estado_documento_digital deberia estar en F, y en la operación » Administración » Sincronizar Masivamente Documentos con Araí debería listar dicha acta fallida.

Saludos.
2

Hice una prueba local y directamente no me deja cerrar el acta si el docente no tiene usuario de Araí asociado:

¿tenes personalizado lo siguiente?

https://colab.siu.edu.ar/trac/guarani3/browser/nodos/unra/gestion/trunk/3.21.3/php/nucleo/examenes/actas/cerrar_acta/cn_ent_cerrar_acta_examen.php#L41

https://colab.siu.edu.ar/trac/guarani3/browser/nodos/unra/gestion/trunk/3.21.3/php/nucleo/actas/acta_nucleo.php#L643

¿tendrás cambios locales? devolveme el resultado de ejecutar svn info y svn status.

Saludos.
2

Hola @lleonardis

Para aclarar por las dudas, el error de ¡Atención! Hay docentes que deben autorizar el acta y no están vinculados con SIU-Araí Documentos lo agregue solo para mostrar que el sistema ejecuta y logea correctamente. No es el que nos da el problema, porque luego de corregir al docente, asociarle el usuario Arai e intentar cerrar el acta, ahi es cuando el sistema queda completamente colgado y nunca genera logs, entonces no terminamos de saber que esta fallando.

En el transcurso del día me siento con el encargado de guaraní para revisar lo que pasaste de las personalizaciones, y actualizo acá sobre lo que me comente.

Saludos.

Hola @mblua

[Wed May 29 16:00:01.896917 2024] [php7:warn] [pid 27052] [client 181.189.222.48:57989] PHP Warning: fopen(/dev/shm/.php_java_bridge6LiehM.i): failed to open stream: Interrupted system call in /usr/local/proyectos/guarani/vendor/si>

¿sera un problema de Jasper?

Podes ver los logs de Jasper de la siguiente manera:

Proba seguir estos pasos, en espacial el 4) y 5) que habla de la directiva java.pipe_dir.

Saludos.
2

Hola @lleonardis

Te paso lo genera el log de Jasper al intentar imprimir.

Jun 04 14:03:23 VMBridge DEBUG: Socket connection accepted
Jun 04 14:03:23 VMBridge DEBUG: Starting HTTP server thread from thread pool
Jun 04 14:03:23 VMBridge DEBUG: contextfactory: new context: 1@ for web context, # of contexts: 1
Jun 04 14:03:23 VMBridge DEBUG: created new bridge: php.java.bridge.JavaBridge@e8f0c37
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a --> <Y p="1" v="0" m="updateJarLibraryPath" >
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a --> <S v="file:/usr/local/proyectos/guarani/vendor/siu-toba/jasper/JasperReports/bcel-5.2.jar;file:/usr/local/proyectos/guarani/vendor/siu-toba/jasper/JasperReports/mondrian-3.1.1.126>
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a --> <S v="/usr/lib/php/20190902" />
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a --> <S v="/usr/local/proyectos/guarani/www" />
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a --> <S v="/usr/local/proyectos/guarani/vendor/pear/console_getopt:/usr/local/proyectos/guarani/vendor/pear/pear-core-minimal/src:/usr/local/proyectos/guarani/vendor/pear/pear_exceptio>
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a --> </Y>
Jun 04 14:03:23 VMBridge DEBUG:
Invoking [Object 244255799 - Class: php.java.bridge.JavaBridge:ID1159190947:LOADER-ID1426407511].updateJarLibraryPath([Object 1524992019 - Class: java.lang.String:ID349885916:LOADER-ID0],[Object 977491609 - Class: java.lang.String:I>

Jun 04 14:03:23 VMBridge DEBUG:
Result [Object null]

Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a  <-- <V n="T"/>
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a re-directing to port# Pipe:/tmp/.php_java_bridgefQzaoj
Jun 04 14:03:23 VMBridge DEBUG: e8f0c37@550c640a waiting for context: 1@
Jun 04 14:03:23 VMBridge DEBUG: contextfactory: servlet waitFor() ContextFactory 84520849 for 15000 ms
Jun 04 14:03:23 VMBridge DEBUG: starting a new ContextRunner php.java.bridge.http.ContextRunner@cf455e9
Jun 04 14:03:23 VMBridge ERROR: An exception occured: java.io.FileNotFoundException: /tmp/.php_java_bridgefQzaoj.o (No such file or directory)
java.io.FileNotFoundException: /tmp/.php_java_bridgefQzaoj.o (No such file or directory)
        at java.base/java.io.FileInputStream.open0(Native Method)
        at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
        at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
        at php.java.bridge.http.PipeContextServer$Channel.getInputStream(PipeContextServer.java:73)
        at php.java.bridge.http.ContextRunner.init(ContextRunner.java:106)
        at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
        at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
Jun 04 14:03:23 VMBridge DEBUG: end (thread returned to pool): Thread[JavaBridgeContextRunner#1,5,JavaBridgeContextRunner#1]
Jun 04 14:03:38 VMBridge DEBUG: contextfactory: servlet waitFor() ContextRunner 84520849
Jun 04 14:03:38 VMBridge WARNING: contextfactory: Orphaned context: ContextFactory: Context# 1@, credentials: null, SimpleContextFactory: class php.java.bridge.http.SimpleContextFactory, current loader: jdk.internal.loader.ClassLoad>
Jun 04 14:03:38 VMBridge DEBUG: contextfactory: servlet done waitFor() ContextRunner 84520849
Jun 04 14:03:38 VMBridge DEBUG: end (thread returned to pool): Thread[VMBridgeHttpServerThreadPool#1,5,VMBridgeHttpServerThreadPool#1]

Un tema que olvide mencionar previamente, es que al ser un entorno de test este guaraní solo tiene conexión con lo que es Huarpe/Arai. Y ahora tengo la duda de si es necesaria la conexión con algún otro sistema para el tema actas.

Gracias.
Saludos!

Hola @mblua

Si buscas en el foro “java.io.FileNotFoundException” vas a encontrar varios hilos donde se resuelve, te dejo algunos:

En cuanto al problema problema de que en la tabla sga_actas no se registra el error en estado_documento_digital ni parametros_documento_digital se resuelve en el ticket #47207, crea un GDS y te adelantamos la solución.

Por ahora podes modificar la columna sga_actas.estado_documento_digital a “F” para las actas que sabes que fallaron, en la operación » Administración » Sincronizar Masivamente Documentos con Araí las vas a poder sincronizar.

Saludos.
2

Hola @lleonardis

Perfecto, ahora procedemos a generar el GDS y probamos lo que indicas para sincronizar.

En cuanto al jasper, estábamos teniendo problemas para que el servidor tome bien los permisos en /dev/shm. Pero ya lo pudimos solucionar e imprime correctamente.

Muchas gracias!
Saludos!

Se continúa en el GDS 70499.