El plugin Jenkin SVN falló al eliminar files (Checksum mistmatch)

Hoy encontramos un extraño error con Jenkin. Después de investigar, encontramos que se debe al hecho de que eliminamos algunos files en SVN, lo que causa un problema en el complemento Jenkin SVN.

Mientras investigo, parece que este error era conocido, pero aún no ha sido resuelto. De modo que la actualización a una versión de complemento SVN más nueva no es una solución (estamos usando Jenkin 1.474).

Nuestro arreglo temporal es que "siempre se paga antes de build". Pero esto es claramente muy lento y toma mucho time para grandes proyectos. De modo que estoy buscando una forma de (al less) detectar el problema SVN en las secuencias de commands posteriores a la construcción cuando sucede, y probablemente envíe un correo electrónico para notificar a los desarrolladores.

¿Alguien tiene alguna experiencia con esto? No estoy muy familiarizado con Jenkin, por lo tanto, cualquier ayuda o puntero sería muy apreciado.

Aquí está el logging de errores:

Building in workspace /workspace-directory/workspace Cleaning up /var/lib/jenkins/jobs/aaa/workspace/. Deleting /var/lib/jenkins/jobs/aaa/workspace/logs Deleting /var/lib/jenkins/jobs/aaa/workspace/target Updating svn://address/trunk@HEAD U src/main/some_file.java D src/main/another_file.java U src/main/other_files.java ERROR: Failed to update svn://address/trunk@HEAD org.tmatesoft.svn.core.SVNException: svn: E155017: Checksum mismatch while updating '/var/lib/jenkins/jobs/aaa/workspace/src/main/address/.svn/text-base/StudioSignUpController.java.svn-base'; expected: '39fc987bbeb8cd332e6b94abfb934720', actual: 'e9fa300ee28a2b1e15b2273f4b14ae18' at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:85) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:69) at org.tmatesoft.svn.core.internal.io.svn.SVNEditModeReader.driveEditor(SVNEditModeReader.java:250) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.update(SVNRepositoryImpl.java:1503) at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.update(SVNUpdateClient16.java:557) at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.doUpdate(SVNUpdateClient16.java:414) at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.doUpdate(SVNUpdateClient16.java:324) at org.tmatesoft.svn.core.internal.wc2.old.SvnOldUpdate.run(SvnOldUpdate.java:27) at org.tmatesoft.svn.core.internal.wc2.old.SvnOldUpdate.run(SvnOldUpdate.java:11) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1221) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:292) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:315) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:295) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:391) at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:136) at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:144) at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:789) at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:770) at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:753) at hudson.FilePath.act(FilePath.java:842) at hudson.FilePath.act(FilePath.java:824) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:743) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:685) at hudson.model.AbstractProject.checkout(AbstractProject.java:1245) at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589) at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494) at hudson.model.Run.execute(Run.java:1488) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: org.tmatesoft.svn.core.SVNException: svn: E155017: Checksum mismatch while updating '/xxxxx/.svn/text-base/SignUpController.java.svn-base'; expected: '39fc987bbeb8cd332e6b94abfb934720', actual: 'e9fa300ee28a2b1e15b2273f4b14ae18' at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) at org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor15.textDeltaEnd(SVNUpdateEditor15.java:637) at org.tmatesoft.svn.core.internal.wc.SVNAmbientDepthFilterEditor.textDeltaEnd(SVNAmbientDepthFilterEditor.java:221) at org.tmatesoft.svn.core.internal.wc.SVNCancellableEditor.textDeltaEnd(SVNCancellableEditor.java:130) at org.tmatesoft.svn.core.internal.io.svn.SVNEditModeReader.processCommand(SVNEditModeReader.java:176) at org.tmatesoft.svn.core.internal.io.svn.SVNEditModeReader.driveEditor(SVNEditModeReader.java:232) ... 29 more Caused by: svn: E155017: Checksum mismatch while updating '/xxxx/.svn/text-base/SignUpController.java.svn-base'; expected: '39fc987bbeb8cd332e6b94abfb934720', actual: 'e9fa300ee28a2b1e15b2273f4b14ae18' at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208) at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:189) at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:141) at org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor15.textDeltaEnd(SVNUpdateEditor15.java:634) ... 33 more no change for svn://some_address/trunk since the previous build No emails were triggenetworking. 

De vez en cuando hemos visto el problema con algunas comstackciones, pero normalmente solo limpiamos el espacio de trabajo y luego lo reconstruimos. (Desde Jenkins, navega hasta el trabajo, luego "Espacio de trabajo").

Hay un par de complementos diferentes que pueden ayudar a detectar y posiblemente tomar algunas acciones basadas en el problema.

  • Complemento de advertencias : analiza la salida de la console y busca los patrones integrados y definidos por el usuario que informa como advertencias.
  • Complemento de activación de logging : desencadena trabajos en sentido descendente si se encuentra un activador específico en el logging de la console. (¿Quizás tenga un trabajo SVN de "limpieza" que se desencadena?)

De estos, solo he usado el plugin Warnings yo mismo.

Estos hilos de Jenkins JIRA y JetBrains son interesantes: https://issues.jenkins-ci.org/browse/JENKINS-14550 http://youtrack.jetbrains.com/issue/IDEA-83673#comment=27-379397

Como mencionaste, el problema permanece abierto en Jenkins. JetBrains cree que ha corregido IDEA con el svnkit actualizado: svnkit 1.7.5-v1.

También se mencionó en el tema de los cerebros de jetliner algunas estrategias para solucionar el problema utilizando la herramienta comercial SmartSvn, un cliente svn que tiene una function especial "Validar el área de administración".

Voy a intentar actualizar el problema Jenkins JIRA con una nota sobre el svnkit para ver si eso da como resultado una solución.

EDITAR: En realidad, parece que el plugin Enero Jenkins Subversion, 1.4.5, se ocupa de este problema. Después de la installation y el reinicio manual, desapareció la discrepancia.