Error en versión 3.12.1

Hola gente. Cambiamos Mapuche de versión ayer a 3.12.1

Tuvimos una serie de errores raros que no surgieron en las pruebas. Por ejemplo cuando vamos a Informes->Liquidacion->Detalle de liquidación con un usuario con perfil distinto a Administrador, la consulta se colgaba y se volvía cada vez mas lento el servidor. Por primera vez el servidor me llegó a usar 32GB de RAM cosa que no pasó nunca.

Pasaba que entraron todos a sacar el detalle de liquidación y se colgaba la consulta, se conectaban de otro lugar y volvían a intentar sacarlo y quedaban procesos de postgres colgados con el 100% de un procesador en uso.

En el log de postgresql encontré la consulta que colgaba el servidor y era la siguiente:

SELECT dh21h.nro_legaj, dh01.tipo_docum || ' ' || dh01.nro_docum AS documento, 
dh01.desc_appat || ', ' || dh01.desc_nombr AS agente, 
dh01.desc_appat || ', ' || dh01.desc_nombr || ' (' || dh21h.nro_legaj || ')' AS agente_corte, 
LPAD(dh01.nro_cuil1::varchar, 2, '0') || '-' || LPAD(dh01.nro_cuil::varchar, 8, '0') || '-' || dh01.nro_cuil2 AS cuil, 
dh01.tipo_estad, 
dh01.fec_nacim, 
dh01.tipo_sexo, 
dh21h.nro_cargo, 
dh03.fec_alta, 
dh03.fec_baja, 
dh03.codc_categ, 
dh03.codc_agrup, 
dh03.hs_dedic, 
dh03.nro_exped, 
dh03.nro_norma, 
dh90.nro_cargoasociado, 
dh90.tipoasociacion, 
estado_civil.desc_estado_civil, 
aporte_jubilatorio.desc_aporte_jubilatorio, 
dh09.fec_ingreso, 
dh09.codc_uacad as dep_cabecera, 
dh35.tipo_carac, 
dh35.tipo_escal, 
COALESCE(dh35.desc_grupo,'No existe Caracter') as desc_carac, 
dh35.codc_carac as codc_carac, 
dh11.desc_categ, 
dh31.desc_dedic, 
dh31.cant_horas, 
dh11.codc_dedic || ' (' || dh03.nro_cargo || ')' AS dedicacion_cargo, 
dh11.codc_dedic, 
dh11.impp_basic, 
dh21h.nro_liqui, 
dh21h.impp_conce::numeric(10,2), 
dh21h.tipoescalafon, 
dh22.desc_liqui, 
LPAD(dh21h.tipo_ejercicio::VARCHAR, 1, '0') AS tipo_ejercicio, 
LPAD(dh21h.codn_grupo_presup::VARCHAR, 4, '0') AS codn_grupo_presup, 
LPAD(dh21h.codn_area::VARCHAR, 3, '0') AS codn_area, 
LPAD(dh21h.codn_subar::VARCHAR, 3, '0') AS codn_subar, 
LPAD(dh21h.codn_subsubar::VARCHAR, 3, '0') AS codn_subsubar, 
LPAD(dh21h.codn_progr::VARCHAR, 2, '0') AS codn_progr, 
LPAD(dh21h.codn_subpr::VARCHAR, 2, '0') AS codn_subpr, 
LPAD(dh21h.codn_proye::VARCHAR, 2, '0') AS codn_proye, 
LPAD(dh21h.codn_activ::VARCHAR, 2, '0') AS codn_activ, 
LPAD(dh21h.codn_obra::VARCHAR, 2, '0') AS codn_obra, 
LPAD(dh21h.codn_final::VARCHAR, 1, '0') AS codn_final, 
LPAD(dh21h.codn_funci::VARCHAR, 1, '0') AS codn_funci, 
dh21h.codn_fuent, 
dh21h.nro_orimp, 
dh21h.nov1_conce, 
dh21h.nov2_conce, 
dh21h.detallenovedad, 
dh21h.ano_retro, 
dh21h.mes_retro, 
dh21h.nrogrupoesc, 
dh21h.codc_uacad, 
dh21h.codc_regio, 
LPAD(dh21h.tipo_ejercicio::VARCHAR, 1, '0')||'-'||LPAD(dh21h.codn_grupo_presup::VARCHAR, 4, '0')||'-'|| LPAD(dh21h.codn_area::VARCHAR,3, '0')||'.'||LPAD(dh21h.codn_subar::VARCHAR,3, '0')||'.'||LPAD(dh21h.codn_subsubar::VARCHAR, 3, '0')||'-'|| LPAD(dh21h.codn_fuent::VARCHAR,2, '0')||'-'|| LPAD(dh21h.codn_progr::VARCHAR,2, '0')||'.'||LPAD(dh21h.codn_subpr::VARCHAR,2, '0')||'.'||LPAD(dh21h.codn_proye::VARCHAR,2, '0')||'.'||LPAD(dh21h.codn_activ::VARCHAR,2, '0')||'.'|| LPAD(dh21h.codn_obra::VARCHAR,2, '0')||'-'|| LPAD(dh21h.codn_final::VARCHAR,1, '0')||'.'||LPAD(dh21h.codn_funci::VARCHAR,1, '0') as imputacion, 
dh21h.codn_conce, 
dh21h.tipo_conce, 
dh12.desc_corta, 
dh12.desc_conce, 
dh89.codigoescalafon, 
trim(to_char(dh21h.codn_progr, '00')) || trim(to_char(dh21h.codn_subpr, '00')) || trim(to_char(dh21h.codn_proye, '00')) || trim(to_char(dh21h.codn_activ, '00')) || trim(to_char(dh21h.codn_obra, '00')) AS categ_programatica, 
dh17.objt_gtote 

INTO TMP_DETALLE_LIQUIDACION_prueba2 

FROM mapuche.dh21h 
LEFT OUTER JOIN mapuche.dh22 ON (dh22.nro_liqui = dh21h.nro_liqui) 
LEFT OUTER JOIN mapuche.dh01 ON (dh01.nro_legaj = dh21h.nro_legaj) 
LEFT OUTER JOIN mapuche.dh03 ON (dh03.nro_cargo = dh21h.nro_cargo) 
LEFT OUTER JOIN mapuche.dh09 ON (dh09.nro_legaj = dh01.nro_legaj) 
LEFT OUTER JOIN mapuche.dh11 ON (dh03.codc_categ = dh11.codc_categ) 
LEFT OUTER JOIN mapuche.dh35 ON (dh35.tipo_escal = dh11.tipo_escal AND dh03.codc_carac = dh35.codc_carac) 
INNER JOIN mapuche.depcia ON  ( mapuche.depcia.cod_depcia IN ('INFO','ASMA','AUZA','BIBL','CRUB','CUZA','DECO','DBAS','FAME','FAAS','FATA','FACA','FACE','FADE','FAEA','FAHU','FAIF','FAIN','FALE','FATU','FEA ','FDHU','FAT ','FOME','IBMP','IUC ','SESO','RECT','CRUZ','SEBU','SECO','SEAC','SEHA','SEIN','SEGE','SEXU','TACZ','TESO','VICE') )  
AND (dh21h.codc_uacad = depcia.cod_depcia) 
LEFT OUTER JOIN mapuche.regional ON (dh21h.codc_regio = regional.cod_regional) 
LEFT OUTER JOIN mapuche.aporte_jubilatorio ON (dh09.codc_bprev = aporte_jubilatorio.cod_aporte_jubilatorio) 
LEFT OUTER JOIN mapuche.estado_civil ON (dh09.codc_estcv = estado_civil.cod_estado_civil) 
LEFT OUTER JOIN mapuche.dh89 ON (dh21h.codigoescalafon = dh89.codigoescalafon) 
LEFT OUTER JOIN mapuche.dh31 ON (dh11.codc_dedic = dh31.codc_dedic) 
LEFT OUTER JOIN mapuche.dh12 ON (dh21h.codn_conce = dh12.codn_conce) 
LEFT OUTER JOIN mapuche.dh17 ON (dh21h.codn_conce = dh17.codn_conce) 
LEFT OUTER JOIN mapuche.dh90 ON (dh21h.nro_cargo = dh90.nro_cargo) --Tabla de Categorías Programáticas' 
LEFT JOIN mapuche.dh27 ON (dh21h.codn_progr = dh27.codn_progr AND dh21h.codn_subpr = dh27.codn_subpr AND dh21h.codn_proye = dh27.codn_proye AND dh21h.codn_activ = dh27.codn_activ AND dh21h.codn_obra = dh27.codn_obra ) 
WHERE dh21h.nro_liqui = '537' AND dh01.nro_legaj = '22635'

Con ese comentario --Tabla de Categorías Programáticas’ con una comilla simple andaba mal.
Busqué donde estaba esta consulta y encontré el archivo /instalacion_mapuche/php/modelos/negocio/liquidacion/conceptos.php
Eliminé la comilla demás y ahora funciona el detalle de liquidación con todos los usuarios pero me quedan algunas dudas.

Porque solamente daba el error con algunos usuarios? Con esto se habrá eliminado ese error? o tengo que mirar en otro lado para ver si puedo encontrar algo mas? Si tienen alguna linea por donde mirar se los agradezco.

Saludos!

Hola, como estas?
Creo que la linea que indicas no tiene que ver ni en el problema ni en la solución. Ya que la misma tiene un “–” delante, lo que indica que es un comentario.

Lo que se me ocurre que paso, es que luego de la actualización no ejecutaron la tarea de mantenimiento ANALYZE. Esto puede traer como consecuencia la mala planificación de las consultas y la demora de las mismas.

Saludos, Nico.

Hola Nico. Puede ser lo del Analyze, no lo corrí pero la situación era que algunos usuarios podían sacar el detalle de liquidación y a otros se les colgaba la consulta cuando querían sacar el mismo detalle de liquidación.

Entiendo que lo que modifiqué fué una comilla demás en una linea comentada pero es lo que funcionó automáticamente. Si nadie mas tiene este problema será cuestión de mi instalación únicamente.

Saludos!