Azure Pipeline DB 构建随机失败并出现 EsentVersionStoreOutOfMemoryException:版本存储内存不足
Azure Pipeline DB Build Fails Randomly with EsentVersionStoreOutOfMemoryException: Version store out of memory
我们为我们的 SSDT DACPAC 项目构建了 Azure DevOps Pipeline,在持续集成上设置为 运行。它已经 运行ning 几年了,我们定期和随机地看到以下构建失败的错误:
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% 的时间会解决问题。直到今天。现在,我连续 3 次对新的 CI 构建进行排队,每次都因相同的异常而失败。该项目在本地构建,因此管道构建过程存在一些问题。
我们是否可以在 MSBuild 管道构建过程中进行一些修复以消除此错误?
使用“/p:Storage=File”会占用更少的内存
将 /p:CmdLineInMemoryStorage=true
添加到管道构建任务的 MSBuild 参数为我解决了这个问题。到目前为止。
我发现发现了许多类似错误和修复的参考资料,但 none 确实必须专门针对 SSDT 构建 Azure DevOps 管道。
参见:
- SSDT build error with TeamCity MSBuild argument
- MSBuild argument for large DB builds
- 正在通过 Powershell 部署 SSDT - 版本存储内存不足
错误
我们为我们的 SSDT DACPAC 项目构建了 Azure DevOps Pipeline,在持续集成上设置为 运行。它已经 运行ning 几年了,我们定期和随机地看到以下构建失败的错误:
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% 的时间会解决问题。直到今天。现在,我连续 3 次对新的 CI 构建进行排队,每次都因相同的异常而失败。该项目在本地构建,因此管道构建过程存在一些问题。
我们是否可以在 MSBuild 管道构建过程中进行一些修复以消除此错误?
使用“/p:Storage=File”会占用更少的内存
将 /p:CmdLineInMemoryStorage=true
添加到管道构建任务的 MSBuild 参数为我解决了这个问题。到目前为止。
我发现发现了许多类似错误和修复的参考资料,但 none 确实必须专门针对 SSDT 构建 Azure DevOps 管道。
参见:
- SSDT build error with TeamCity MSBuild argument
- MSBuild argument for large DB builds
- 正在通过 Powershell 部署 SSDT - 版本存储内存不足 错误