You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A mismatch in actor interface contracts can be reported in a way that makes sense.
Actual Behavior
Having a mismatch in details like what namespace an interface or DTO is declared in results in a cryptic error message.
No interface found with this Id 403064080
This error can't really be reasoned about since it's a generated checksum. Fixing the problem is a matter of trial and error. I don't have in my head yet a clear picture of what exactly has to match for communication to work properly.
It seems like the best way (right now) to use actors with Dapr is to rely on binary dependencies to share contracts. This fights with the rationale for using microservices in the first place (to version and deploy separately).
Steps to Reproduce the Problem
Using the actor sample in the repo - remove the project reference from the sample client. Copy the IDemoActor interface into the sample project, and change the namespace used to declare to be inconsistent with the hosting project.
The text was updated successfully, but these errors were encountered:
Hi @MattCosturos - It's a been a while since I opened this issue, so I'm remembering to the best of my ability ....
What I remember about this issue is that the C# strongly-typed actor programming model requires you to share interface definitions between the client and the server. It's not good enough for for the interfaces to have the same members and names, they need to actually be shared via project-references.
I ended up having some mixed up reference in my new project docker builds. I was using Actor binary from project 1, but client binary from the new project 2, so in my case it was an actual mismatch interface.
It would be great if the error message could be improved to be something like "Actor with Interface definition Task<string> DoSomething(int param) not found"
Somewhat related, I have a proposal/PR (#1158) that would eliminate the need for applications to share compiled definitions when using strongly-typed interfaces.
Expected Behavior
A mismatch in actor interface contracts can be reported in a way that makes sense.
Actual Behavior
Having a mismatch in details like what namespace an interface or DTO is declared in results in a cryptic error message.
This error can't really be reasoned about since it's a generated checksum. Fixing the problem is a matter of trial and error. I don't have in my head yet a clear picture of what exactly has to match for communication to work properly.
It seems like the best way (right now) to use actors with Dapr is to rely on binary dependencies to share contracts. This fights with the rationale for using microservices in the first place (to version and deploy separately).
Steps to Reproduce the Problem
Using the actor sample in the repo - remove the project reference from the sample client. Copy the
IDemoActor
interface into the sample project, and change the namespace used to declare to be inconsistent with the hosting project.The text was updated successfully, but these errors were encountered: