Problema al Procesar Matrices de Equivalencias

Buen día comunidad, les quería consultar por un error que nos aparece en una UA en particular en la operación “Procesar Matrices de Equivalencias”, el sistema nos muestra un cartel con un mensaje de “Error en la respuesta”, “Error JS”, “TypeError: datos is null”.
Adjunto captura del cartel.
Desde ya muchas gracias.
Saludos, Pablo.-


Error Matrices Equivalencia.jpg

Error Matrices Equivalencia.png

Hola Pablo,

El proceso finaliza correctamente? Ven sus resultados si acceden luego a “Ver resultados anteriores”? Alguna información adicional en los logs del proceso (los podés encontrar en ‘<path proyecto Guaraní>/instalacion/i__desarrollo/p__guarani/logs/procesos_bk/’ dentro de una carpeta con el nombre de la operación y la fecha y hora de ejecución)?

Saludos, Florencia.

Hola Pablo, agrego a lo de Flor!!!

¿el error te lo da en los navegadores Chrome o Brave? ¿si lo probas en Firefox u Opera funciona bien?

Proba incrementado la variable $timeout_procesos_bk en php/nucleo/_lib/comunes_nucleo.php, ej:


static protected $timeout_procesos_bk = 3000; // 3 segundos

Luego coméntame sin con eso se soluciona.

saludos.
2

Hola Flor y Leonel, les respondo lo que me preguntan:
-Lo probamos en Firefox y Chrome y nos tiró siempre el error del cartel.
-Incrementamos la variable $timeout_procesos_bk a 3 segundos y tampoco cambió nada.
-Respecto de “Ver los resultado anteriores” figura el estado en 100% pero los números no sabemos si están correctos, por ejemplo para 11943 Alumnos Evaluados solamente tienen Equivalencias Otorgadas 29 y Actas Procesadas 0.
-Estuvimos revisando los logs del proceso en las carpetas del guarani y tampoco figura nada respecto al error.

Saludos, Pablo.-

Hola
Me sumo al hilo ya que tenemos el mismo inconveniente cuando procesamos la operación “» CALENDARIO » PERÍODOS LECTIVOS »CALCULAR COEFICIENTES DE INSCRIPCIÓN”.
Aunque el proceso termina y todos los coeficientes los calcula bien. Dentro de los logs no aparece nada especial.
Saludos
Iris

Hola,

Lo vamos a tener en cuenta, hay varios casos donde fallan los procesos background. Ya tenemos varios tickets al respecto:

https://redmine.siu.edu.ar/redmine/issues/44669 (Analizar de incrementar timeout de los procesos en background)
https://redmine.siu.edu.ar/redmine/issues/43827 (Mejorar estado de procesos en background)
https://redmine.siu.edu.ar/redmine/issues/44795 (Modificar vencimiento de regularidad: Consulta lenta)

saludos.
2

Hola Pablo,

Para el error en la operación » Reconocimiento de Actividades » Equivalencias » Procesar Matrices de Equivalencia proba reemplazar la función extender_objeto_js de php/operaciones/reconocimiento_actividades/equivalencias/procesar_matrices_equivalencia/pant_procesar.php por lo siguiente:


        function extender_objeto_js()
	{
		$timeout = comunes::get_timeout_procesos_bk();

		echo "
			{$this->objeto_js}.set_progreso = function(count)
			{
				var image = 360;
				var width = -1 * ((image/200)*(100-count));
				var img = document.getElementById('barra_progreso');
				img.style.backgroundPosition = + width + 'px 0pt';
				img.alt   = count + '%';
				img.title = count + '%';

				var txt = document.getElementById('texto_progreso');
				txt.innerHTML = count + '%';
			}

			var finalizo_proceso = false;
			var progreso_cero = false;

			{$this->objeto_js}.consultar_estado_proceso = function()
			{
				// Hace un AJAX a la función 'ajax__estado_proceso' del CI.
				this.ajax('estado_proceso', [], this, this.set_estado_proceso);
			}

			{$this->objeto_js}.set_estado_proceso = function(datos)
			{
				console.log('Respuesta del estado del proceso:');
				console.log(datos);

				// Si datos viene con valores
				if (datos !== null) {

                                        // Si el progreso viene en 0 es una falla en Chrome y Brave cuando no hay datos a procesar
					if (datos['progreso'] == 0) {
						progreso_cero = true;
                                                datos['progreso'] = 100;
					}

					if (datos['progreso'] == 100) {
						finalizo_proceso = true;
						this.set_progreso(100);
					}

					if (datos['mensaje'] != false) {
						//-- Actualizo el porcentaje completado
						this.set_progreso(parseInt(datos['progreso'], 10));
					}
					if (finalizo_proceso && datos['progreso'] == 100) {
						{$this->objeto_js}.activar_boton('finalizar');
						{$this->objeto_js}.desactivar_boton('abortar');
					}
				}

                                // Si el proceso finalizo
                                if (finalizo_proceso) {

					// Elimino el Timeout
					clearTimeout(timeout_estado_proceso);

                                        // Si el progreso viene en 0 es una falla en Chrome y Brave cuando no hay datos a procesar
                                        if (progreso_cero) {

                                            var datos = [];
                                            datos['actas_procesadas'] = 0;
                                            datos['alumnos_evaluados'] = 0;
                                            datos['equiv_otorgadas'] = 0;
                                            this.set_resultados_proceso(datos);

                                        } else {
                                            // Se invoca por primera vez para comenzar a consultar el resultado del proceso.
                                            {$this->objeto_js}.consultar_resultados_proceso();
                                        }

				} else {// Si el proceso no finalizo

					// Vuelvo a consultar el estado del proceso
					var timeout_estado_proceso = setTimeout(\"{$this->objeto_js}.consultar_estado_proceso()\", $timeout);

				}
			}

			{$this->objeto_js}.consultar_resultados_proceso = function()
			{
                                // Hace un AJAX a la función 'ajax__resultados_proceso' del CI.
				this.ajax('resultados_proceso', [], this, this.set_resultados_proceso);
			}

			{$this->objeto_js}.set_resultados_proceso = function(datos)
			{
				console.log('Respuesta del resultado del proceso:');
				console.log(datos);

                                // Si datos es null vuelvo a intentar
				if (datos === null) {

                                    // Vuelvo a consultar el resultado del proceso
                                    var timeout_resultados_proceso = setTimeout(\"{$this->objeto_js}.consultar_resultados_proceso()\", $timeout);

				} else { // Sino los muestro en pantalla

                                    // Elimino el Timeout
                                    clearTimeout(timeout_resultados_proceso);

                                    this.dep('form_totales').ef('actas_procesadas').set_estado(datos['actas_procesadas']);
                                    this.dep('form_totales').ef('alumnos_evaluados').set_estado(datos['alumnos_evaluados']);
                                    this.dep('form_totales').ef('equiv_otorgadas').set_estado(datos['equiv_otorgadas']);

                                }
			}

			{$this->objeto_js}.set_progreso(0);
                        // Se invoca por primera vez para comenzar a consultar el estado del proceso.
			{$this->objeto_js}.consultar_estado_proceso();
			{$this->objeto_js}.desactivar_boton('finalizar');

		";
	}

Luego contame si con ese cambio deja de dar el error.

saludos.
2

Hola Iris,

Para el error en la operación » Calendario » Períodos Lectivos » Calcular Coeficientes de Inscripción proba reemplazar la función extender_objeto_js de php/operaciones/calendario/periodos_lectivos/coeficientes_inscripcion/pant_procesar.php por lo siguiente:


        function extender_objeto_js()
	{
		$timeout = comunes::get_timeout_procesos_bk();

		echo "
			{$this->objeto_js}.set_progreso = function(count)
			{
				var image = 360;
				var width = -1 * ((image/200)*(100-count));
				var img = document.getElementById('barra_progreso');
				img.style.backgroundPosition = + width + 'px 0pt';
				img.alt   = count + '%';
				img.title = count + '%';

				var txt = document.getElementById('texto_progreso');
				txt.innerHTML = count + '%';
			}

			var finalizo_proceso = false;
			var progreso_cero = false;

			{$this->objeto_js}.consultar_estado_proceso = function()
			{
				// Hace un AJAX a la función 'ajax__estado_proceso' del CI.
				this.ajax('estado_proceso', [], this, this.set_estado_proceso);
			}

			{$this->objeto_js}.set_estado_proceso = function(datos)
			{
				console.log('Respuesta del estado del proceso:');
				console.log(datos);

				// Si datos viene con valores
				if (datos !== null) {

                                        // Si el progreso viene en 0 es una falla en Chrome y Brave cuando no hay datos a procesar
					if (datos['progreso'] == 0) {
						progreso_cero = true;
                                                datos['progreso'] = 100;
					}

					if (datos['progreso'] == 100) {
						finalizo_proceso = true;
						this.set_progreso(100);
					}

					if (datos['mensaje'] != false) {
						//-- Actualizo el porcentaje completado
						this.set_progreso(parseInt(datos['progreso'], 10));
					}
					if (finalizo_proceso && datos['progreso'] == 100) {
						{$this->objeto_js}.activar_boton('finalizar');
						{$this->objeto_js}.desactivar_boton('abortar');
					}
				}

                                // Si el proceso finalizo
                                if (finalizo_proceso) {

					// Elimino el Timeout
					clearTimeout(timeout_estado_proceso);

                                        // Si el progreso viene en 0 es una falla en Chrome y Brave cuando no hay datos a procesar
                                        if (progreso_cero) {

                                            var datos = [];
                                            datos['alumnos_procesados'] = 0;
                                            this.set_resultados_proceso(datos);

                                        } else {
                                            // Se invoca por primera vez para comenzar a consultar el resultado del proceso.
                                            {$this->objeto_js}.consultar_resultados_proceso();
                                        }

				} else {// Si el proceso no finalizo

					// Vuelvo a consultar el estado del proceso
					var timeout_estado_proceso = setTimeout(\"{$this->objeto_js}.consultar_estado_proceso()\", $timeout);

				}
			}

			{$this->objeto_js}.consultar_resultados_proceso = function()
			{
                                // Hace un AJAX a la función 'ajax__resultados_proceso' del CI.
				this.ajax('resultados_proceso', [], this, this.set_resultados_proceso);
			}

			{$this->objeto_js}.set_resultados_proceso = function(datos)
			{
				console.log('Respuesta del resultado del proceso:');
				console.log(datos);

                                // Si datos es null vuelvo a intentar
				if (datos === null) {

                                    // Vuelvo a consultar el resultado del proceso
                                    var timeout_resultados_proceso = setTimeout(\"{$this->objeto_js}.consultar_resultados_proceso()\", $timeout);

				} else { // Sino los muestro en pantalla

                                    // Elimino el Timeout
                                    clearTimeout(timeout_resultados_proceso);

                                    this.dep('form_totales').ef('alumnos_procesados').set_estado(datos['alumnos_procesados']);

                                }
			}

			{$this->objeto_js}.set_progreso(0);
                        // Se invoca por primera vez para comenzar a consultar el estado del proceso.
			{$this->objeto_js}.consultar_estado_proceso();
			{$this->objeto_js}.desactivar_boton('finalizar');

		";
	}

Luego contame si con ese cambio deja de dar el error.

saludos.
2

Hola Leonel buen día, reemplazamos la función y quedó funcionando perfecto!
-Cuáles son los pasos para pasarlo a producción, ustedes actualizan el repositorio con el parche?
-Tenemos que sacar una nueva versión propia o personalizamos?

Saludos, Pablo.-

Hola Pablo,

Crea un GDS y pone el numero del mismo en este foro.

¿cual es su nodo de colab y en que versión debo aplicar el HOTFIX?

saludos.
2

Hola Leonel buen día, te paso los datos:
-https://colab.siu.edu.ar/svn/guarani3/nodos/unmdp/gestion/trunk/3.20.2
-GdS Solicitud número 62995: Hotfix para Procesar Matrices de Equivalencia

Saludos, Pablo.-

Continua via gds 62995

Hola
Estamos teniendo el mismo inconveniente con la operación: Cursadas >> Inscripciones >> Reprocesar Inscripciones a Actividades. Adjunto captura de pantalla.
Estamos en G3.20.0, con la revisión 71827.
El inconveniente más importante es que no logramos tener el reporte de inscripciones rechazadas, y es justamente lo que necesitamos, ya que son muchas.
Cómo podemos resolverlo?
Gracias!
Saludos
Iris


error_reprocesar_inscripciones.png

error_reprocesar_inscripciones.png

reprocesar_sin_reporte.png

reprocesar_sin_reporte.png

Hola Iris,

Crea un GDS y anota el numero del mismo a este foro.

Veo que en el GDS 63288 ya te pasamos HOTFIX para la operación » Matrícula » Regularidad » Verificar regularidad de los alumnos (foro 25741).

¿su nodo de colab es unicen, no?

saludos.
2

Hola Leonel
Si, el nodo es unicen. Y ya está aplicada la revisión con ese hotfix.
Esta nueva solicitud por la operación Cursadas >> Inscripciones >> Reprocesar Inscripciones a Actividades quedó en GDS 63983.
Muchas gracias
Saludos
Iris