Gestionando Permisos: TimeOut

cancel
Showing results for 
Search instead for 
Did you mean: 
jjbabel
Member II

Gestionando Permisos: TimeOut

Jump to solution
Buenos días, tenemos un problema que parece ser de TimeOut a la hora de gestionar los permisos de una carpeta Alfresco. A ver si me podéis ayudar, os pongo los detalles a continuación_
Tenemos una carpeta en Alfresco que ocupa unos 55GB y no nos permite darle permisos a un usuario o compartir dicha carpeta.
- Lo hemos intentado desde el Share y el Core con similares resultados.El proceso se inicia, ya que vemos reflejado en el servidor MySQL ciertas querys y slow querys.
Time: 170310 13:18:53
User@Host: alfresco[alfresco] @ [10.109.1.13]
Query_time: 12.049412 Lock_time: 0.000148 Rows_sent: 0 Rows_examined: 0
SET timestamp=1489148333;
insert into alf_child_assoc
(
version, parent_node_id, child_node_id, type_qname_id,
child_node_name_crc, child_node_name,
qname_ns_id, qname_localname, qname_crc,
is_primary, assoc_index
)
values
(
1, 306538, 1033182, 135,
-557819192, '19079f2f-5b17-441b-90ba-341d83ddc500',
14, 'f40b356a-79a8-4685-bc6b-ed0351d5e7de', 1367004770,
1, -1
);
- El proceso termina con un error de Timeout. En el Core nos devuelve por pantalla lo siguiente:
Failed to remove User due to error: ### Error updating database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction ### The error may involve alfresco.permissions.update_Acl-Inline ### The error occurred while setting parameters ### Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction ; SQL []; Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction

El ver los logs del Core, vemos un error de caché y lo siguiente:

 
2017-03-10 15:46:53,625 ERROR [ui.common.Utils] [ajp-apr-8009-exec-2] A system error happened during the operation: AclEntity with ID (78122) no longer exists or has been updated concurrently
org.springframework.dao.ConcurrencyFailureException: AclEntity with ID (78122) no longer exists or has been updated concurrently
¿Sabeis a qué puede ser debido dicho error y cómo podríamos solucionarlo?
Muchas gracias de antemano!!
1 Solution

Accepted Solutions
cristinamr
Advanced

Re: Gestionando Permisos: TimeOut

Jump to solution

Por partes:

Cesar Capillas‌ estoy de acuerdo con ambos, pero en Alfresco 3.4 el número es muy reducido comparando la 4.2.  (entre 1k y 2k), de ahí a mi pregunta sobre la release. Es que hace tiempo tuve un problema similar en un cliente y fue con una 3.4.

Jesús Jiménez‌ debería ser algo así (algo que recorra recursivamente):

    var folder1 = companyhome.childByNamePath("sites/foo/documentLibrary/folder1");

    var children = folder1.children;

    var nodeCounter=0;
    recorre(children);function recorre(nodes){  

        for each(var node in nodes) {   
            if (node.isContainer){      
                logger.log(node.name + " is a folder");
                  nodeCounter++;      
                  recorre(node.children);    
              }else {      
                  logger.log(node.name + "is a document");        
                  nodeCounter++;
            }  
        }
    }

La variable folder1 la puedes cargar con la javascript console con space (el botón de arriba) y puede ahorrarte algo en el código, pero vamos esencialmente sería algo así.

Cuéntanos el resultado, ¡ah! Si puedes confirmanos la versión del Alfresco.

Un saludo.

--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

View solution in original post

11 Replies
angelborroy
Alfresco Employee

Re: Gestionando Permisos: TimeOut

Jump to solution

Parece que hay demasiados nodos en paralelo en la carpeta. ¿Cuántos hijos de un mismo nodo hay? Lo recomendable es que no hay más de 3,000

Hyland Developer Evangelist
cristinamr
Advanced

Re: Gestionando Permisos: TimeOut

Jump to solution

Buenas Jesús.

¿Qué versión de Alfresco usas? Independientemente, he visto que hay tickets en el jira de Alfresco ([MNT-11910] ConcurrencyFailureException when attempting to create a folder - immediate retry on the ...  ) que lo marcan como problema de custom-code. ¿Tenéis algún desarrollo personalizado que pueda estar de alguna forma implicado con este error?  Si puedes, péganos el error completo del log (alfresco.log y catalina.out).

Un saludo,

Cris.

--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
cesarista
Customer

Re: Gestionando Permisos: TimeOut

Jump to solution

Hola:

Yo me inclino por lo comentado por Angel Borroy‌, que hay demasiados nodos por debajo de esa carpeta sobre la que estas dando permisos. Cuando se intenta aplicar un permiso local sobre cada uno de los nodos hijos (child_assocs del nodo padre) termina dando un timeout. Si lo haces desde Share, seguramente un webscript terminará en un timeout, lo cual es probable si atacas muchos nodos de manera masiva. En estos casos, divide y vencerás, crea subestructuras con carpetas de 1k documentos en cada nivel y no experimentarás esos problemas.

Saludos.

--C.

jjbabel
Member II

Re: Gestionando Permisos: TimeOut

Jump to solution

Buenas,

Antes que nada, muchas gracias por vuestras respuestas. He indagado por donde comenta Angel Borroy y consultado mediante consola el número de nodos, pero no consigo los datos correctos. Usando el siguiente script devuelve 320, pero sé que hay carpetas con más de 500 ficheros. 

He usado el siguiente script donde document es la carpeta en cuestión:

var children= document.children;
var NumeroNodos = 0;
for each(var child in children) {
NumeroNodos += child.children.length;
}
logger.log (NumeroNodos);

¿Cómo podría obtener el número real de nodos de dicha carpeta?

cristinamr
Advanced

Re: Gestionando Permisos: TimeOut

Jump to solution

Por partes:

Cesar Capillas‌ estoy de acuerdo con ambos, pero en Alfresco 3.4 el número es muy reducido comparando la 4.2.  (entre 1k y 2k), de ahí a mi pregunta sobre la release. Es que hace tiempo tuve un problema similar en un cliente y fue con una 3.4.

Jesús Jiménez‌ debería ser algo así (algo que recorra recursivamente):

    var folder1 = companyhome.childByNamePath("sites/foo/documentLibrary/folder1");

    var children = folder1.children;

    var nodeCounter=0;
    recorre(children);function recorre(nodes){  

        for each(var node in nodes) {   
            if (node.isContainer){      
                logger.log(node.name + " is a folder");
                  nodeCounter++;      
                  recorre(node.children);    
              }else {      
                  logger.log(node.name + "is a document");        
                  nodeCounter++;
            }  
        }
    }

La variable folder1 la puedes cargar con la javascript console con space (el botón de arriba) y puede ahorrarte algo en el código, pero vamos esencialmente sería algo así.

Cuéntanos el resultado, ¡ah! Si puedes confirmanos la versión del Alfresco.

Un saludo.

--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
jjbabel
Member II

Re: Gestionando Permisos: TimeOut

Jump to solution

Antes que nada, muchísimas gracias por vuestras respuestas y ayudas.

El número de nodos que cuelgan de la Carpeta es 29816.

La versión de Alfresco es la 4.2 c

Un saludo.

angelborroy
Alfresco Employee

Re: Gestionando Permisos: TimeOut

Jump to solution

30,000 es un número 10 veces mayor que el recomendado. Deberíais subclasificar las carpetas para obtener un nivel más de jerarquía y que queden menos hijos por carpeta.

Hyland Developer Evangelist
jjbabel
Member II

Re: Gestionando Permisos: TimeOut

Jump to solution

Antes que nada, muchas gracias por tu respuesta Ángel.

La solución que me propones es dividir el contenido en más carpetas y asignar en ellas los permisos para agilizar el proceso por parte de Alfresco, ¿correcto?

¿Conocéis algún script para realizar la asignación de permisos a todas las carpetas de forma sencilla?

¡¡Muchas gracias por todo!!

cristinamr
Advanced

Re: Gestionando Permisos: TimeOut

Jump to solution

EL problema básicamente es que los roles o permisos suelen ser especificos a una empresa o entidad por lo que, que yo recuerde, no sé de ningún script para asignarlo.

¿Qué tipo de asignación necesitas? Si es para, por ejemplo, 15 espacios "padres" y de ellos heredan los hijos, no es complicado porque se heredan. Cuentanos un poco qué estructura tienes y te orientamos.

Un saludo,

Cris.

--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc