2013-07-17 14 views
5

私のgoogle-fuは弱いです... 私のエラーの別のインスタンスを見つけることができませんでした。Teamcity NuGetリポジトリ破損

チームメイトのナゲットリポジトリに問題が発生しました。 予期しないEOFまたは破損したパッケージの警告が表示されて、リポジトリからのNuGetのダウンロードが失敗します。

これはハードウェアの障害ではないことがわかっている限り、vmおよびvm-hostはディスクエラーを報告しません。

傷害を追加するには、teamcityのログファイル 'teamcity-javaLogging-2013-07-17.log'が無制限に増えます(これを入力するには+ 3GB、通常は10MBが普通です)。以下のもの。

マイチームシティーのバージョンは7.1.5(24400の構築)

誰でもこの障害から回復する方法を知っているのですか?

チームシップの管理ページ(管理>診断>キャッシュ)に表示されるすべてのキャッシュをクリアするだけの勇気はまだ召喚していませんでした。

以下は、私が得ているスタックトレースのサンプルです。

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) 

答えて

4

私の知る限りでは、チームシティーNuGet Serverはで定義されたアーティファクトのクリーンアップポリシーの対象である「管理|プロジェクト関連の設定|歴史のクリーンアップを構築する」ので、あなたのパッケージがまだそこにあることを確認してください!

私の個人的なアドバイスは常に専用のナゲットサーバーをセットアップすることです。 公式NugetGallery project on GitHubを複製するだけで無料でセットアップできます。これはnuget.orgで使用されているのと同じコードベースなので、使い慣れたUIとパフォーマンスが向上します(NugetGalleryはLucene.NETのインデックス機能を活用します)。

1

TeamCity NuGet Serverのインデックスが何とか壊れているようですが、パッケージは問題なくキャッシュがクリアされていました。

しかし、私はどのようにインデックスを再投入することができないのか分かりませんでした。

nugetパッケージのキャッシュをクリアし、警告さはチームシティーNuGetサーバーからすべてのパッケージを削除しますので、レムコが言ったように

2

は、あなたがhttpに行くことによって、パッケージのキャッシュをクリアすることができます...白紙の状態で起動します。 //{teamcity}/admin/admin.html?item=diagnostics & tab =キャッシュし、 "buildsMetadata"の横にある "reset"をクリックします。これにより、再インデックスするまで、フィードからすべてのNuGetパッケージが削除されます。

TeamCityのREST APIを呼び出すことで、個々のビルドによって生成されたNuGetパッケージを再インデックスすることができます。すべてのビルドを再インデクシングするには、すべてのビルドをループし、それぞれを再作成するスクリプトを作成する必要があります。

バグレポート:
http://youtrack.jetbrains.com/issue/TW-25384
http://youtrack.jetbrains.com/issue/TW-23576

サンプルREINDEXスクリプト:
http://youtrack.jetbrains.com/issue/TW-19411#comment=27-408230