【发布时间】:2017-09-15 19:07:08
【问题描述】:
尝试恢复 ActorService 的备份并收到以下错误:Method not found: 'Void System.Fabric.RestoreSettings..ctor(Boolean, Boolean)'
没有内在的例外。
这是一个自定义actor服务,扩展ActorService并实现扩展IActorService的接口
我检查了传入的备份文件夹,它是有效的并且里面有备份。鉴于它已恢复,我认为它无关紧要,但这是从 Azure blob 存储中检索到的备份
这是引发异常的行:
await restoreCtx.RestoreAsync(restoreRescription, cancellationToken);
这是它所在的方法:
protected override async Task<bool> OnDataLossAsync(RestoreContext restoreCtx, CancellationToken cancellationToken)
{
try
{
string backupFolder;
backupFolder = await this.backupManager.RestoreLatestBackupToTempLocation(cancellationToken);
RestoreDescription restoreRescription = new RestoreDescription(backupFolder, RestorePolicy.Force);
await restoreCtx.RestoreAsync(restoreRescription, cancellationToken);
DirectoryInfo tempRestoreDirectory = new DirectoryInfo(backupFolder);
tempRestoreDirectory.Delete(true);
return true;
}
catch (Exception e)
{
ActorEventSource.Current.Message("Restoration failed: " + "{0} {1}" + e.GetType() + e.Message);
throw;
}
}
【问题讨论】:
-
通常一个 Method not found 异常是由使用比运行它们的 SF 运行时更新的 SF Nuget 包的版本引起的。检查您已安装的 SF 运行时版本,并确保次要版本大于或等于您正在使用的 SF NuGet 包。例如,5.4 运行时支持 NuGet 包 2.4 及更低版本,但不支持 2.5。
-
@VaclavTurecek 成功了,非常感谢,这是阻止 Actor 备份工作的最后一个小问题!
-
酷。顺便说一句,这会发生,因为有时我们需要向运行时添加新功能以支持 SDK 中的新功能。因此,我们不能保证其中一个 NuGet 包的新版本将始终在较旧的运行时上运行。但是您始终可以使用最新的运行时,而无需更新您的 NuGet 包以匹配,它们应该可以继续工作。
标签: azure-service-fabric service-fabric-actor