2013-07-17 3 views
5

그래서 내 google-fu는 약합니다 ... 내 오류의 다른 인스턴스를 찾을 수 없습니다.Teamcity NuGet 저장소 손상

나는 하루 이후로 내 teamcity nuget 저장소에 문제가 발생했습니다. 예기치 않은 EOF 또는 손상된 패키지 경고로 repo에서 NuGet 다운로드가 실패합니다.

하드웨어 장애가 아니라면 vm 및 VM 호스트는 디스크 오류를보고하지 않습니다.

상해에 대한 모욕을 더하기 위해 팀십 로그 파일 'teamcity-javaLogging-2013-07-17.log'는 무제한으로 증가하며 (이 경우 입력하는 데 + 3GB, 하루 10MB가 정상입니다) 아래에있는 것들.

내 인 TeamCity 버전은 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

는 지금까지 내가 아는 한, 인 TeamCity NuGet 서버에 정의 된 유물 정리 정책의 적용을받습니다 "관리 | 프로젝트 관련 설정 | 역사 정리 빌드"그래서 패키지는 아직 거기 있는지 확인하십시오!

개인적인 조언은 항상 전용 누 겟 (nuget) 서버를 설정하는 것입니다. 무료로 하나만 설정할 수 있습니다. NugetGallery project on GitHub : nuget.org에서 사용하는 것과 동일한 코드베이스이므로 익숙한 UI와 성능이 향상됩니다 (NugetGallery는 Lucene.NET 색인 기능을 사용합니다).

1

TeamCity NuGet Server의 인덱스가 손상된 것으로 보입니다. 패키지는 괜찮 았기 때문에 캐시를 지우는 것이 해결책이었습니다.

그러나 인덱스를 다시 채울 수있는 방법을 알지 못했습니다.

nuget 패키지 캐시를 지우고,주의 할이 인 TeamCity NuGet 서버에서 모든 패키지를 제거합니다 그래서 당신은 Remco의 말처럼

2

, 당신은 http로 이동하여, 패키지 캐시를 지울 수 있습니다 ... 깨끗한 상태로 시작 : //{teamcity}/admin/admin.html?item=diagnostics & tab = 캐시 및 "buildsMetadata"옆의 "재설정"을 클릭하십시오. 이렇게하면 다시 색인 할 때까지 피드에서 모든 NuGet 패키지가 제거됩니다.

TeamCity의 REST API를 호출하여 개별 빌드에서 생성 된 NuGet 패키지를 다시 인덱싱 할 수 있습니다. 모든 빌드를 다시 인덱싱하려면 모든 빌드를 반복하고 각각을 다시 색인화하는 스크립트를 작성해야합니다.

버그 리포트 :
http://youtrack.jetbrains.com/issue/TW-25384
http://youtrack.jetbrains.com/issue/TW-23576

샘플 재 인덱싱 스크립트
http://youtrack.jetbrains.com/issue/TW-19411#comment=27-408230

관련 문제