2013-07-17 12 views
5

Quindi, il mio google-fu è debole ... Non sono riuscito a trovare un'altra istanza dei miei errori.Teamcity NuGet Repository corruzione

Ho avuto problemi con il mio repository nuget di teamcity da un giorno. I download NuGet dal repository non riescono con avvisi EOF imprevisti o pacchetti corrotti.

Per quanto posso dire, questo non è un errore hardware, il vm e l'host vm non riportano errori del disco.

Per aggiungere la beffa al danno il file di log di teamcity 'teamcity-javaLogging-2013-07-17.log' cresce illimitato (+ 3 GB nel tempo per digitare questo, dove 10 MB al giorno è normale) con gli stacktraces come il quelli sotto.

versione

mio TeamCity è 7.1.5 (build 24400)

Qualcuno sa come recuperare da questo fallimento?

Non ho ancora convocato abbastanza coraggio per cancellare solo tutte le cache che posso trovare nella pagina di amministrazione di TeamCity (Amministrazione> Diagnostica> Cache) perché c'è un avviso in giallo spaventoso su quella pagina per non farlo.

Di seguito è riportato un esempio degli stacktrack che ottengo.

17-jul-2013 3:00:02 net.sf.ehcache.store.DiskStore get 
SEVERE: provider-nugetCache: Could not read disk store element for key 2731. Error was unexpected EOF in middle of data block 
java.io.StreamCorruptedException: unexpected EOF in middle of data block 
     at java.io.ObjectInputStream$BlockDataInputStream.refill(Unknown Source) 
     at java.io.ObjectInputStream$BlockDataInputStream.read(Unknown Source) 
     at java.io.DataInputStream.readInt(Unknown Source) 
     at java.io.ObjectInputStream$BlockDataInputStream.readInt(Unknown Source) 
     at java.io.ObjectInputStream.readInt(Unknown Source) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.SerializableEntry.readSplitted(SerializableEntry.java:5) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.EntryImpl.readObjectInternal(EntryImpl.java:34) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.SerializableEntry.readExternal(SerializableEntry.java:16) 
     at java.io.ObjectInputStream.readExternalData(Unknown Source) 
     at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
     at java.io.ObjectInputStream.readObject0(Unknown Source) 
     at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
     at java.io.ObjectInputStream.readSerialData(Unknown Source) 
     at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
     at java.io.ObjectInputStream.readObject0(Unknown Source) 
     at java.io.ObjectInputStream.readObject(Unknown Source) 
     at net.sf.ehcache.store.DiskStore.loadElementFromDiskElement(DiskStore.java:313) 
     at net.sf.ehcache.store.DiskStore.get(DiskStore.java:268) 
     at net.sf.ehcache.Cache.searchInDiskStore(Cache.java:1290) 
     at net.sf.ehcache.Cache.get(Cache.java:904) 
     at net.sf.ehcache.Cache.get(Cache.java:879) 
     at jetbrains.buildServer.serverSide.metadata.impl.cache.TypedCacheImpl.getValue(TypedCacheImpl.java:3) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.MetadataStorageImpl.getReportedKeys(MetadataStorageImpl.java:7) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.MetadataStorageImpl.removeBuild(MetadataStorageImpl.java:45) 
     at jetbrains.buildServer.serverSide.metadata.impl.indexer.BuildIndexCleaner.performCleanup(BuildIndexCleaner.java:16) 
     at jetbrains.buildServer.serverSide.impl.cleanup.HistoryEntryCleaner.cleanupExtensionsData(HistoryEntryCleaner.java:38) 
     at jetbrains.buildServer.serverSide.impl.cleanup.HistoryEntryCleaner.performCleanup(HistoryEntryCleaner.java:138) 
     at jetbrains.buildServer.serverSide.impl.cleanup.HistoryEntryCleaner.performCleanup(HistoryEntryCleaner.java:132) 
     at jetbrains.buildServer.serverSide.impl.cleanup.ServerCleanupManagerImpl$3.performCleanup(ServerCleanupManagerImpl.java) 
     at jetbrains.buildServer.serverSide.db.DBFacade$1$1.doInConnection(DBFacade.java:178) 
     at jetbrains.buildServer.serverSide.db.DBFacade$6.doInConnection(DBFacade.java:415) 
     at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:341) 
     at jetbrains.buildServer.serverSide.db.DBFacade._runSql(DBFacade.java:411) 
     at jetbrains.buildServer.serverSide.db.DBFacade.access$000(DBFacade.java:33) 
     at jetbrains.buildServer.serverSide.db.DBFacade$1.doInTransaction(DBFacade.java:174) 
     at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) 
     at jetbrains.buildServer.serverSide.db.DBFacade.compact(DBFacade.java:171) 
     at jetbrains.buildServer.serverSide.impl.cleanup.ServerCleanupManagerImpl.startCleanup(ServerCleanupManagerImpl.java:74) 
     at jetbrains.buildServer.serverSide.impl.cleanup.ServerCleanupManagerImpl$2.run(ServerCleanupManagerImpl.java:0) 
     at java.util.TimerThread.mainLoop(Unknown Source) 
     at java.util.TimerThread.run(Unknown Source) 
17-jul-2013 3:00:02 net.sf.ehcache.store.DiskStore remove 
SEVERE: provider-nugetCache: Could not remove disk store entry for key 2731. Error was unexpected EOF in middle of data block 
java.io.StreamCorruptedException: unexpected EOF in middle of data block 
     at java.io.ObjectInputStream$BlockDataInputStream.refill(Unknown Source) 
     at java.io.ObjectInputStream$BlockDataInputStream.read(Unknown Source) 
     at java.io.DataInputStream.readInt(Unknown Source) 
     at java.io.ObjectInputStream$BlockDataInputStream.readInt(Unknown Source) 
     at java.io.ObjectInputStream.readInt(Unknown Source) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.SerializableEntry.readSplitted(SerializableEntry.java:5) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.EntryImpl.readObjectInternal(EntryImpl.java:34) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.SerializableEntry.readExternal(SerializableEntry.java:16) 
     at java.io.ObjectInputStream.readExternalData(Unknown Source) 
     at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
     at java.io.ObjectInputStream.readObject0(Unknown Source) 
     at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
     at java.io.ObjectInputStream.readSerialData(Unknown Source) 
     at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
     at java.io.ObjectInputStream.readObject0(Unknown Source) 
     at java.io.ObjectInputStream.readObject(Unknown Source) 
     at net.sf.ehcache.store.DiskStore.loadElementFromDiskElement(DiskStore.java:313) 
     at net.sf.ehcache.store.DiskStore.remove(DiskStore.java:483) 
     at net.sf.ehcache.Cache.remove(Cache.java:1465) 
     at net.sf.ehcache.Cache.remove(Cache.java:1392) 
     at net.sf.ehcache.Cache.remove(Cache.java:1350) 
     at net.sf.ehcache.Cache.remove(Cache.java:1328) 
     at jetbrains.buildServer.serverSide.metadata.impl.cache.TypedCacheImpl.remove(TypedCacheImpl.java:16) 
     at jetbrains.buildServer.serverSide.metadata.impl.metadata.MetadataStorageImpl.removeBuild(MetadataStorageImpl.java:30) 
     at jetbrains.buildServer.serverSide.metadata.impl.indexer.BuildIndexCleaner.performCleanup(BuildIndexCleaner.java:16) 
     at jetbrains.buildServer.serverSide.impl.cleanup.HistoryEntryCleaner.cleanupExtensionsData(HistoryEntryCleaner.java:38) 
     at jetbrains.buildServer.serverSide.impl.cleanup.HistoryEntryCleaner.performCleanup(HistoryEntryCleaner.java:138) 
     at jetbrains.buildServer.serverSide.impl.cleanup.HistoryEntryCleaner.performCleanup(HistoryEntryCleaner.java:132) 
     at jetbrains.buildServer.serverSide.impl.cleanup.ServerCleanupManagerImpl$3.performCleanup(ServerCleanupManagerImpl.java) 
     at jetbrains.buildServer.serverSide.db.DBFacade$1$1.doInConnection(DBFacade.java:178) 
     at jetbrains.buildServer.serverSide.db.DBFacade$6.doInConnection(DBFacade.java:415) 
     at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:341) 
     at jetbrains.buildServer.serverSide.db.DBFacade._runSql(DBFacade.java:411) 
     at jetbrains.buildServer.serverSide.db.DBFacade.access$000(DBFacade.java:33) 
     at jetbrains.buildServer.serverSide.db.DBFacade$1.doInTransaction(DBFacade.java:174) 
     at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) 
     at jetbrains.buildServer.serverSide.db.DBFacade.compact(DBFacade.java:171) 
     at jetbrains.buildServer.serverSide.impl.cleanup.ServerCleanupManagerImpl.startCleanup(ServerCleanupManagerImpl.java:74) 
     at jetbrains.buildServer.serverSide.impl.cleanup.ServerCleanupManagerImpl$2.run(ServerCleanupManagerImpl.java:0) 
     at java.util.TimerThread.mainLoop(Unknown Source) 
     at java.util.TimerThread.run(Unknown Source) 

risposta

4

Per quanto ne so, TeamCity NuGet Server è soggetto alla politica manufatto pulitura definito in "Amministrazione | Impostazioni progetto-correlati | costruire Storia Clean-up", in modo da assicurarsi che il pacchetto è ancora lì !!

Il mio consiglio personale è SEMPRE impostato un server nuget dedicato. Puoi crearne uno gratuitamente clonando semplicemente lo NugetGallery project on GitHub ufficiale: questa è la stessa base di codice utilizzata da nuget.org, quindi avrai un'interfaccia utente familiare e prestazioni migliorate (NugetGallery sfrutta le capacità di indicizzazione di Lucene.NET).

1

Sembra che l'indice per TeamCity NuGet Server sia stato danneggiato in qualche modo, che i pacchetti fossero soddisfacenti, quindi la soluzione era la cancellazione della cache.

Tuttavia, non ho capito come l'indice potrebbe essere ripopolato.

Attenzione, svuotare la cache dei pacchetti NuGet rimuove tutti i pacchetti dalla TeamCity NuGet Server in modo da iniziare con una lavagna pulita ...

2

Come ha detto Remco, è possibile cancellare la cache dei pacchetti, andando a http: //{teamcity}/admin/admin.html?item=diagnostics & tab = cache e facendo clic su "reset" accanto a "buildsMetadata". Questo rimuoverà tutti i pacchetti NuGet dal tuo feed fino alla tua reindex.

È possibile reindicizzare i pacchetti NuGet generati da una singola build chiamando l'API REST di TeamCity. Per reindicizzare tutte le build, devi scrivere uno script per eseguire il loop su tutte le build e reindex ciascuna.

segnalazioni di bug:
http://youtrack.jetbrains.com/issue/TW-25384
http://youtrack.jetbrains.com/issue/TW-23576

esempio di script reindex:
http://youtrack.jetbrains.com/issue/TW-19411#comment=27-408230