2009-10-26 10 views
5

Desde la migración de un servidor de compilación Cruisecontrol a una máquina nueva, a veces se cuelga durante la etapa "modificacioneset" del ciclo de compilación (está configurado para verificar modificaciones cada 15 minutos). Cruisecontrol se mantiene receptivo, solo la construcción no progresa.Cruisecontrol se bloquea al verificar SVN para modificaciones

No hay carga significativa en la CPU cuando esto sucede, y lo he visto permanecer en este estado durante una hora o más, aunque parece salir de este estado con el tiempo. No parece haber un patrón a qué proyectos le sucede. El hardware es nuevo, y he ejecutado un memtest sin problemas.

Esta es la configuración del sistema:

  • Ubuntu 9.04 servidor, amd64, totalmente actualizado
  • versión 1.5.4 SVN (r33841) - la versión más reciente apt-get instalará
  • JRE de Sun 64 bits construir 1.6.0_16-b01 - una vez más, la versión más reciente
  • climatizador 2.7.3 (no el más reciente)

Esta es ho w mis conjuntos de modificaciones se ven como

<modificationset quietperiod="10"> 
    <veto><!-- there are several of these --> 
     <triggers> 
      <svn LocalWorkingCopy="${checkout_dir}/base" /> 
     </triggers> 
     <buildstatus logdir="${log_dir}/base" /> 
    </veto> 
    <timebuild time="2330" /> 
    <svn LocalWorkingCopy="${checkout_dir}/${project.name}" /> 
</modificationset> 

¿Qué se puede hacer aquí?

Editar: He aquí un extracto del archivo de registro climatizador, mostrando ProjectA colgando a las 16:07 (todavía está bloqueado ahora en 17:48)

2009-10-27 16:07:55,096 [Thread-38860] INFO Project   - Project projectA: bootstrapping 
2009-10-27 16:07:55,096 [Thread-38860] INFO ProjectController - projectA Controller: build progress event: bootstrapping 
2009-10-27 16:07:55,262 [Thread-38862] INFO ScriptRunner  - Buildfile: work/build-cruisecontrol.xml 
2009-10-27 16:07:59,230 [Thread-38860] INFO AntBootstrapper - Bootstrap successful. 
2009-10-27 16:07:59,230 [Thread-38860] INFO Project   - Project projectA: checking for modifications 
2009-10-27 16:07:59,230 [Thread-38860] INFO ProjectController - projectA Controller: build progress event: checking for modifications 
2009-10-27 16:11:14,954 [Project projectB thread] INFO Project   - Project projectB: in build queue 

Respuesta

1

Ha intentado la emisión de los mismos comandos de SVN manualmente desde la línea de comando? ¿Se cuelga entonces?

+0

No se bloquea repetidamente en CruiseControl tampoco, solo a veces, y no siempre es el mismo proyecto. –

+0

De todos modos, ¿tuviste la misma experiencia cuando se ejecuta manualmente? ¿Incluso una vez? Si es así, CruiseControl no es el problema aquí. De lo contrario, es algo relacionado con el SvnModificationSet (o como se llame a la clase). –

+0

@GrzegorzOledzki: +1 para el método de prueba a mano. buen lugar para comenzar a solucionar problemas. –

1

Sólo algunos punteros:

  1. Qué cuelga en un momento determinado del día? ¿O es realmente aleatorio? ¿Alguna copia de seguridad nueva en el lugar que apaga el servicio para la copia de seguridad?

  2. ¿Ha comparado el config.xml del nuevo servidor de crucero con el del anterior (suponiendo que la versión de crucero es idéntica en ambos, tienen exactamente las mismas tareas o hay algo que podría estar ralentizando el modificacioneset) tarea)?

  3. ¿Las máquinas antiguas y nuevas se encuentran en las mismas redes que sus repositorios subversivos (o al menos tienen tiempos de respuesta similares para acceder a todos los repositorios de proyectos?) Dado que el servidor de cruceros sigue siendo receptivo es posible que el repositorio de proyecto en particular al que está accediendo en el momento de near-hang es demasiado grande, demasiado lento o tiene demasiado en el repositorio?

Estas son sólo de corrección de fallas punteros - por lo que de ninguna manera son respuestas reales a su pregunta. Esta es quizás la forma en que abordaría el problema (además de ejecutar los comandos manualmente como en la respuesta de GrzegorzOledzki).

+0

Parece que no ocurre en momentos específicos. La versión y configuración del control de crucero son exactamente idénticas, y la nueva máquina está en la misma red que la anterior, pero no es lo mismo que el repositorio (que se gestiona de forma centralizada, en un departamento diferente). –

+0

Actualización: ahora he ejecutado con éxito una línea de comando svn query en un proyecto mientras está colgado en CC, por lo que definitivamente no es un problema general recurrente en el servidor –

+0

Quizás necesite ejecutarlo contra la dependencia del proyecto en lugar del espacio de trabajo del proyecto . (ya que utiliza el complemento ). Dado que abortaría instantáneamente/continuaría con la compilación si los comentarios de los activadores estuvieran disponibles de una forma u otra, tal vez sea razonable sospechar que está esperando los comentarios de la dependencia del proyecto? –

2

Otra idea. Siempre puede iniciar CruiseControl JVM en modo de depuración. Y siempre que se cuelgue, conéctese usando algún IDE, p. Ej. Eclipse. Y luego podría ver todos los hilos de la aplicación CC, pausar algunos de ellos y ver con qué están ocupados.

+0

Buena idea, definitivamente intentaré eso –

Cuestiones relacionadas