Произвольная сборка БД конвейера Azure с EsentVersionStoreOutOfMemoryException: хранилище версий не хватает памяти - PullRequest
0 голосов
/ 22 мая 2019

У нас есть сборка Azure DevOps Pipeline для наших проектов SSDT DACPAC, настроенная на непрерывную интеграцию. Он работал в течение нескольких лет, и мы периодически и случайно видели следующую ошибку, приводящую к сбою сборки:

Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryException: Version store out of memory (cleanup already attempted)
   at Microsoft.Isam.Esent.Interop.Api.Check(Int32 err)
   at Microsoft.Isam.Esent.Interop.Api.JetUpdate(JET_SESID sesid, JET_TABLEID tableid, Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize)
   at Microsoft.Isam.Esent.Interop.Update.Save(Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize)
   ...

Наше исправление до сих пор заключалось в том, чтобы просто поставить новую очередь в очередь. 99% времени, которое решило бы проблему. До сегодняшнего дня. Теперь я ставил в очередь новую сборку CI 3 раза подряд, и каждый раз она терпела неудачу с одним и тем же исключением. Проект создается локально, поэтому возникли некоторые проблемы с процессом сборки Pipeline.

Есть ли какое-то исправление, которое мы можем добавить в процесс сборки MSBuild Pipeline, чтобы устранить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Добавление /p:CmdLineInMemoryStorage=true к аргументам MSBuild для задачи сборки конвейера решило эту проблему для меня. Пока что.

Я обнаружил множество ссылок на похожие ошибки и исправления, но ни одна из них не имела отношения к сборкам Azure DevOps Pipeline для SSDT.

См:

0 голосов
/ 22 мая 2019

Используйте «/ p: Storage = File», который будет использовать меньше памяти

...