2009-10-26 80 views
5

Dopo la migrazione di un server di build Cruisecontrol su una nuova macchina, a volte si blocca durante la fase "changeset" del ciclo di build (è configurato per verificare le modifiche ogni 15 minuti). Cruisecontrol rimane reattivo, solo la build non progredisce.Cruisecontrol si blocca quando si controlla SVN per le modifiche

Non si verifica un carico significativo sulla CPU quando questo accade e l'ho visto rimanere in questo stato per un'ora o più, anche se alla fine sembra uscire da questo stato. Non sembra esserci uno schema a cui i progetti capita. L'hardware è nuovo di zecca, e ho eseguito un memtest senza problemi.

Questa è la configurazione del sistema:

  • Ubuntu Server 9.04, amd64, completamente aggiornato
  • versione svn 1.5.4 (r33841) - la versione più recente apt-get installerà
  • Sun JRE 64 bit costruire 1.6.0_16-b01 - ancora una volta, più recente versione
  • CruiseControl 2.7.3 (non il più recente)

Questo è ho I miei changeset sembrano

<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> 

Quindi cosa si può fare qui?

Edit: Ecco un estratto dal file di registro CruiseControl, mostrando projectA appesa a 16:07 (che è ancora appeso ora al 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 

risposta

1

Hai provato il rilascio gli stessi comandi SVN manualmente dalla riga di comando? Appende allora?

+0

Non si blocca ripetutamente in CruiseControl, a volte, non sempre lo stesso progetto. –

+0

Ad ogni modo, hai fatto lo stesso con expierence quando sei stato eseguito manualmente? Ancora una volta? Se è così, allora CruiseControl non è il problema qui. Altrimenti si tratta di SvnModificationSet (o di qualsiasi altra cosa venga chiamata la classe). –

+0

@GrzegorzOledzki: +1 per il metodo try-by-hand. buon posto per iniziare la risoluzione dei problemi. –

1

Solo alcune indicazioni:

  1. Vuol appendere in un determinato momento della giornata? O è davvero casuale? Eventuali nuovi backup in atto che arrestano il servizio per il backup?

  2. Avete confrontato il config.xml del nuovo server di crociera con quello del vecchio (supponendo che la versione di crociera sia identica su entrambi, hanno esattamente le stesse attività o c'è qualcosa che potrebbe rallentare il changeset compito)?

  3. Le vecchie e le nuove macchine si trovano sulle stesse reti dei repository di subversion (o almeno hanno tempi di risposta simili nell'accesso a tutti i repository di progetto?) Dato che il server di crociera rimane esso stesso reattivo è possibile che il particolare repository del progetto che sta accedendo al momento del near-hang è troppo grande, troppo lento o ha troppe cose in corso nel repository?

Questi sono solo suggerimenti per la risoluzione dei problemi - quindi non sono affatto risposte effettive alla tua domanda. Questo è forse il modo in cui affronterò il problema (oltre a eseguire i comandi manualmente come nella risposta di GrzegorzOledzki).

+0

Non sembra che si verifichi in momenti specifici. La versione e la configurazione del cruise control sono esattamente identiche e la nuova macchina si trova sulla stessa rete di quella vecchia, ma non è uguale al repository (gestito centralmente, dipartimento diverso). Aggiornamento –

+0

: Ora ho eseguito correttamente una query svn da riga di comando su un progetto mentre è sospesa in CC - quindi non è sicuramente un problema generale ricorrente sul server –

+0

Forse è necessario eseguirlo contro la dipendenza del progetto piuttosto che lo spazio di lavoro del progetto stesso . (poiché utilizzi il plug-in ). Poiché interrompe/continua istantaneamente la generazione se il feedback dei trigger era disponibile in un modo o nell'altro, forse è ragionevole sospettare che sia in attesa del feedback da la dipendenza del progetto? –

2

Un'altra idea. È sempre possibile avviare la JVM CruiseControl in modalità di debug. E ogni volta che si blocca, connettersi ad esso utilizzando alcuni IDE, ad es. Eclisse. E poi puoi inserire tutti i thread dell'applicazione CC e metterne in pausa alcuni e vedere con cosa sono impegnati.

+0

Buona idea, lo proveremo sicuramente –