为什么我的最小StatefulActorService可能抛出COMException?

时间:2015-12-10 15:53:32

标签: azure-service-fabric stateful-actor-service

我想开始服务结构有状态的actor服务,所以我在VS2015.1中创建了一个合适的项目,并且没有对生成的代码进行任何更改。然后我运行/调试了解决方案。我收到以下错误:

System.Runtime.InteropServices.COMException was unhandled
Message: An exception of type 'System.Runtime.InteropServices.COMException' occurred in System.Fabric.dll and wasn't handled before a managed/native boundary
Additional information: Exception from HRESULT: 0x80071BC5

考虑到我的应用程序中现有服务之间可能存在某些干扰,我还构建了一个全新的服务结构解决方案和有状态的actor服务项目(采用所有默认值)。该项目以完全相同的方式失败。

  1. 其他人可以确认这种行为吗? (这可能是我开发环境中的事情)
  2. 有关可能发生的事情的任何建议?
  3. 获取有关失败的更多信息的最佳方法是什么? (似乎没有太多的com界限,似乎)
  4. 我应该在visual studio工具之外尝试这个吗?
  5. 更新1:

    解雇COMException后,我也得到:

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    Unable to start debugging 'C:\SfDevCluster\Data\_App\Node.3\Application1Type_App41\Actor1Pkg.Code.1.0.0\Actor1.exe'.
    
    The process has been terminated. 
    
    Refresh the process list before attempting another attach.
    ---------------------------
    OK   
    ---------------------------
    

    更新2:

    由于我在Visual Studio 2015.1安装/升级时出现问题,我不确定是否可能与此问题有关。此外,一名同事遵循相同的步骤,没有任何问题。所以我刚刚完成了VS2015.1的直接重新安装,SF SDK和所有先决条件。不幸的是没有变化。 :(

    我还应该说,每次遇到此错误,Service Fabric Local Cluster Manager都会中断。如果我尝试打开管理器,我会收到通知:“无法打开本地集群管理器”

    另外,我确实将SF应用程序项目作为我的解决方案中的启动项目。 (再次,我有其他SF应用程序工作......它只是在我尝试新的或现有的SF应用程序中的有状态演员服务时就死了。)

    更新3:

    我应该想早点提供这个,但这里是callstack ......与提醒有什么关系?

    [Managed to Native Transition]  
    System.Fabric.dll!System.Fabric.KeyValueStoreItemEnumerator.MoveNextHelper()    Unknown
    System.Fabric.dll!System.Fabric.Interop.Utility.WrapNativeSyncInvoke<bool>(System.Func<bool> func, string functionTag, string functionArgs) Unknown
    System.Fabric.dll!System.Fabric.KeyValueStoreItemEnumerator.MoveNext()  Unknown
    Microsoft.ServiceFabric.Actors.dll!Microsoft.ServiceFabric.Actors.KvsActorStateProvider.Enumerate<Microsoft.ServiceFabric.Actors.ActorReminderData>(string keyPrefix, System.Func<byte[], Microsoft.ServiceFabric.Actors.ActorReminderData> deserializeFunc)    Unknown
    Microsoft.ServiceFabric.Actors.dll!Microsoft.ServiceFabric.Actors.KvsActorStateProvider.Microsoft.ServiceFabric.Actors.IActorStateProvider.LoadRemindersAsync.AnonymousMethod__2a() Unknown
    mscorlib.dll!System.Threading.Tasks.Task.Execute()  Unknown
    mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)   Unknown
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)   Unknown
    mscorlib.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task currentTaskSlot)    Unknown
    mscorlib.dll!System.Threading.Tasks.Task.ExecuteEntry(bool bPreventDoubleExecution) Unknown
    mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()    Unknown
    

    更新4

    我使用了更有力(更少诊断)的方法。我重建了我的开发机器。基于我在Update 1安装中遇到的奇怪行为,我担心我已经破坏了我的构建盒。我重建了操作系统,重新安装了vs2015.1和SF SDK,现在它运行正常。您的里程可能会有所不同:|

2 个答案:

答案 0 :(得分:1)

上面提到的HRESULT对应于结构错误代码NoWriteQuorum。有关错误代码的详情,请参阅https://msdn.microsoft.com/en-us/library/azure/system.fabric.fabricerrorcode.aspx。您的群集是如何配置的 - 节点数量是多少?如何配置您的actor服务(多少分区/分钟和目标副本计数)?

如果你没有调试就开始部署你的应用程序?如果是这样,您是否尝试在服务结构资源管理器或Powershell中查看应用程序的运行状况?

答案 1 :(得分:0)

Visual Studio中的启动项目应设置为Service Fabric应用程序。例如,Actor的Console应用程序项目无法直接启动,因为它们需要通过Service Fabric进行部署和激活。