Closed apuchkov closed 8 years ago
Silo seems to be starting successfully, but then client can't invoke grain method.
What exactly happens? I don't see anything in the client log about it.
BTW, thank you for the beautiful and very informative report with all relevant information included! We should promote this as a gold standard for reporting issues.
Thanks @sergeybykov.
Exception stack trace is at the very end of Grains\bin\Debug\CWI-ALEX-2016-01-26-16.39.40.232Z.log
:
[2016-01-26 16:39:59.705 GMT 8 WARNING 100329 InsideRuntimeClient 127.0.0.1:11111] Exception during Invoke of message: Request S127.0.0.1:11111:191522380*cli/3c2ce48d@f6d3a488->S127.0.0.1:11111:191522380*grn/E698344A/00000001@b336088e #5: global::GrainInterfaces.IClientGrain:ProcessClient()
Exc level 0: Orleans.Runtime.OrleansException: Cannot find an invoker for interface GrainInterfaces.IClientGrain (ID=-865503811,0xCC6975BD).
at Orleans.Runtime.GrainTypeManager.GetInvoker(Int32 interfaceId, String genericGrainType)
at Orleans.Runtime.InsideRuntimeClient.GetInvoker(Int32 interfaceId, String genericGrainType)
at Orleans.Runtime.ActivationData.GetInvoker(Int32 interfaceId, String genericGrainType)
at Orleans.Runtime.InsideRuntimeClient.<Invoke>d__6.MoveNext()
It is thrown on this line of Program.cs
Console.WriteLine(c1.ProcessClient().Result);
You need to add https://www.nuget.org/packages/Microsoft.Orleans.Templates.Interfaces/ to the grain interface project to enable compile time codegen.
There is a separate but related question why run time codegen didn't automatically kick in. /cc @ReubenBond
It helped, thanks a lot for a quick response!
I see - I was looking for error in the wrong place (client log).
To clarify, the guide is correct as it mentions the steps of adding the template nugets?
Add Microsoft.Orleans.Templates.Interfaces to GrainInterfaces 2.Add Microsoft.Orleans.Templates.Grains to GrainCollection
There's still a question of why run time codegen didn't work here. I think we better keep this issue open for now, until we confirm that.
There's still a question of why run time codegen didn't work here. I think we better keep this issue open for now, until we confirm that.
@sergeybykov runtime codegen didn't work because it was not included in any of the projects on the server. If Microsoft.Orleans.OrleansCodeGenerator
was explicitly included or the *.Server
package was used, then it would have run.
Thank you, @ReubenBond. Makes sense. Microsoft.Orleans.OrleansCodeGenerator
in included in the client project, but not in the server one which is the Grains project.
<package id="Microsoft.Orleans.OrleansCodeGenerator" version="1.1.2" targetFramework="net452" />
Looks like we can close this.
I'm trying to create an app similar to Minimal Orleans Application, but with stand alone silo.
All packages are added from nuget, no Orleans templates were used, so no version conflicts.
Silo seems to be starting successfully, but then client can't invoke grain method.
Is it a bug or am I missing something?
Solution overview
GrainInterfaces Project
IClientGrain.cs
packages.config
Grains Project
ClientGrain.cs
packages.config
Debug Properties
bin/Debug/OrleansConfiguration.xml
MemberExtractOrleans Project
Program.cs
ClientConfiguration.xml
packages.config
Log Files
Grains\bin\Debug\CWI-ALEX-2016-01-26-16.39.40.232Z.log
Grains\bin\Debug\help-2016-01-26-14.29.42.903Z.log
\MemberExtractOrleans\bin\Debug\Client-2016-01-26-16.39.53.073Z.log