2013-07-17 39 views
5

Vì vậy, google-fu của tôi yếu ... Tôi không thể tìm thấy một trường hợp khác về lỗi của mình.Teamcity NuGet Repository tham nhũng

Tôi đã gặp sự cố với kho lưu trữ nhóm của mình từ một ngày. Tải xuống NuGet từ repo không thành công với cảnh báo gói bị hỏng hoặc hỏng của EOF.

Theo như tôi có thể nói đây không phải là lỗi phần cứng, máy chủ vm và vm không báo cáo lỗi đĩa.

Để thêm sự xúc phạm đến thương tích bản ghi nhóm 'teamcity-javaLogging-2013-07-17.log' phát triển không bị chặn (+ 3GB trong thời gian nhập loại này, trong đó 10 MB mỗi ngày là bình thường) với stacktraces như những cái dưới đây.

Phiên bản Teamcity của tôi là 7.1.5 (xây dựng 24400)

Bất kỳ ai biết cách khôi phục từ lỗi này?

Tôi chưa triệu tập đủ can đảm để chỉ xóa tất cả bộ đệm mà tôi có thể tìm thấy trên trang quản trị nhóm (Administration> Diagnostics> Caches) vì có cảnh báo màu vàng đáng sợ trên trang đó không làm điều đó.

Dưới đây là mẫu các ngăn xếp mà tôi đang nhận được.

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) 

Trả lời

4

Theo như tôi biết, TeamCity NuGet Server là tùy thuộc vào các chính sách tạo tác dọn dẹp quy định tại "Quản trị | Cài đặt dự án liên quan đến | Xây dựng History Clean-up", do đó hãy chắc chắn rằng gói của bạn vẫn còn đó !!

Tư vấn cá nhân của tôi LUÔN LUÔN thiết lập máy chủ chuyên dụng cho máy chủ nuget. Bạn có thể thiết lập miễn phí một cách đơn giản, nhân bản chính thức NugetGallery project on GitHub: đó là cùng một codebase được sử dụng bởi nuget.org, do đó bạn sẽ có giao diện người dùng quen thuộc và tăng hiệu suất (NugetGallery tận dụng khả năng lập chỉ mục Lucene.NET).

1

Dường như chỉ mục cho TeamCity NuGet Server bị hỏng bằng cách nào đó, các gói đã ổn, vì vậy việc xóa bộ nhớ cache là giải pháp.

Tuy nhiên, tôi không tìm ra cách chỉ mục có thể được tái lập.

Được cảnh báo, thanh toán bù trừ bộ nhớ cache gói NuGet loại bỏ tất cả các gói từ TeamCity NuGet Server để bạn bắt đầu với một slate sạch ...

2

Như Remco nói, bạn có thể xóa bộ nhớ cache gói, bằng cách vào http: //{teamcity}/admin/admin.html?item=diagnostics & tab = bộ nhớ cache và nhấp vào "đặt lại" bên cạnh "buildsMetadata". Điều này sẽ loại bỏ tất cả các gói NuGet từ nguồn cấp dữ liệu của bạn cho đến khi bạn reindex.

Bạn có thể reindex gói NuGet được tạo bởi một bản dựng riêng lẻ bằng cách gọi API REST của TeamCity. Để reindex tất cả các bản dựng, bạn phải viết một kịch bản để lặp qua tất cả các bản dựng và reindex.

báo cáo lỗi:
http://youtrack.jetbrains.com/issue/TW-25384
http://youtrack.jetbrains.com/issue/TW-23576

mẫu reindex kịch bản:
http://youtrack.jetbrains.com/issue/TW-19411#comment=27-408230