microsoft/GraphEngine

System.ExecutionEngineException HResult=0x80131506 Message=Exception of type 'System.ExecutionEngineException' was thrown.

TaviTruman opened this issue · 5 comments

@yatli Please take a peek at this exception. Whenever I pass data in a method call I am getting an execution error; if have a method defined as TSL protocol "Syn, void, void" that works. I've uploaded the project so that you can look at the project yourself; here is the link to my repro: https://github.com/TaviTruman/GraphEngineTripleStoreMemoryCloud

image

image

System.ExecutionEngineException
HResult=0x80131506
Message=Exception of type 'System.ExecutionEngineException' was thrown.

image

@yatli This one is a head-scratcher still - I am not getting this exact error and am making progress in getting it to behave as expected. I'm still learning how to use the Trinity Communications APIs. Still getting errors but different ones now. I'm updating the project I have sited above via the link to my GitHub repo.

@yatli I am working from the "Trinity.ServiceFabric.SampleApplication", Trinity.ServiceFabric.GraphEngineRemotingClient and Trinity.ServiceFabric.GraphEngineService. I have tried a number of project configurations in an attempt to duplicate expected behavior and I've had some difficulty thus far.

The Trinity-GraphEngine Service Fabric implementation is mostly undocumented; however, the sample code and library source code is the best working examples of how to proceed. I have the time to dig into the code, and I'm fine with that, but others will not attempt to get started without additional documentation, working beyond what is supplied.

I am having problems getting coded workflows to generated expected results: no problem with storing and accessing data, but I am having trouble getting Trinity MessagePassing to work as expected. Also, as long as I use the Sample GE/SF suppled code, things seem to work as expected; however, when I create a new Service Fabric app and SF Services from scratch, then Trinity Message passing does not work as expected.

I am getting errors like this:

image

So I want to be very clear here; as long as I extend and modify the supplied samples, things seem to work well . I can add new productions to TSL and everything seems to work.

  • Passing simple data types over Sync and Async defined protocol definitions
  • Passing complex data types over Sync and Async defined protocol definitions

If, however, I create new projects (GE+Service Fabric), things don't work as expected; I have tied the following project configurations:

  • SF targeting .net461. netstandard20
  • SF targeting .net core 3.0

In order to create a working reference programming model, not based on supplied sample code, I've written a few sample programs that use the TrinityClient API, Trinity.Network and Trinity.Config APIs - please note, these aren't Service Fabric instrumented programs.

I'm following coded workflows in the samples found in the GraphEngine.Client solution and those samples found in the "Samples" repro directory, I have been able to cerate programs that can send simple and complex data types; it all works as expected. I did this to convience myself the technology works and to gain confidence as well.

I'm certain that I am doing something wrong, as this codebase has been around a long time, and it's used by Microsoft commmerically and on many noteworthy technolgies.

Here is the error encounted when calling a generated RPC method passing a complex data type over a Sync defiend interface:

image

Here's one more bit of data and information:

image

{
"Timestamp": "2019-10-14T17:27:28.7587683-07:00",
"ProviderName": "Microsoft-ServiceFabric.Trinity.StatefulService",
"Id": 3,
"Message": "[P0-Wallflower]\t at Trinity.Client.TrinityClientModule.TrinityClientModule.b__30_0(Int32 _)
at System.Collections.Concurrent.ConcurrentDictionary2.AddOrUpdate(TKey key, Func2 addValueFactory, Func3 updateValueFactory) at Trinity.Client.TrinityClientModule.TrinityClientModule.RegisterClientHandler(RegisterClientRequestReader request, RegisterClientResponseWriter response) at Trinity.Client.TrinityClientModuleBase._RegisterClientHandler(SynReqRspArgs args) at Trinity.Network.Messaging.SynReqRspArgs.MessageProcess()", "ProcessId": 57256, "Level": "Error", "Keywords": "0x0000F00000000001", "EventName": "GraphEngineLogErr", "ActivityID": null, "RelatedActivityID": null, "Payload": { "message": "[P0-Wallflower]\t at Trinity.Client.TrinityClientModule.TrinityClientModule.<RegisterClientHandler>b__30_0(Int32 _) at System.Collections.Concurrent.ConcurrentDictionary2.AddOrUpdate(TKey key, Func2 addValueFactory, Func3 updateValueFactory)
at Trinity.Client.TrinityClientModule.TrinityClientModule.RegisterClientHandler(RegisterClientRequestReader request, RegisterClientResponseWriter response)
at Trinity.Client.TrinityClientModuleBase._RegisterClientHandler(SynReqRspArgs args)
at Trinity.Network.Messaging.SynReqRspArgs.MessageProcess()"
}
}

I'm going to close this issue because I have been able to solve part of the problem in part; I do feel there is something wrong with the behavior of the GE when working in the Service Fabric environment. As I don't have any working examples of anything more than just very simple functioning this is a taxing discovery task and process. I have a better working understanding of the Trinity API set the documentation is insufficient, but the working code is an available resource to learn from.

The Trinity Graph Engine is a very powerful technology and it supports many network programming models, powerful techniques, and amazing graph data management facilities; however, again, the existing documentation is too thin in my opinion. I'm also closing this issue because it documents a serious error and it has not received any support attention from the team and I feel like I need to learn and know more and it does not feel right to me to air the problem quite yet.

I'm able to improve the stability of my program's intended behavior as I learn more about the Trinity/GE technology in the Service Fabric environment - so the problems I'm running into is a result of my lack of knowledge and not the fault of the Graph Engine.