Time: 170310 13:18:53User@Host: alfresco[alfresco] @ [10.109.1.13]Query_time: 12.049412 Lock_time: 0.000148 Rows_sent: 0 Rows_examined: 0SET 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);
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:
Solved! Go 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.
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
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.
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.
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?
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.
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.
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.
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!!
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.
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.