dotnet / dotnet/orleans

F# host: Could not find an implementation for interface OrleansDashboard.IDashboardGrain - C# host ok

Open
#8,235 18 comments 0 reactions 0 assignees View on GitHub
Needs: triage :mag:
Dominant language
C#
Stars
10.9k
Forks
2.1k
Avg merge
14h 42m
Merged PRs (30d)
354

Description

Unable to host silo in F# console project. C# console project works fine. Please see attached minimal repo.

[FsGrains (2).zip](https://github.com/dotnet/orleans/files/10267813/FsGrains.2.zip)

Need to host in F# due to other F# frameworks (e.g. for web dev) required for the application.

Issue is with the 7.x version. This was not an issue with the 3.x.x version of Orleans.

F# hosting works if 'UseDashboard' is commented out.

Error seen:
```
fail: Orleans.Runtime.SiloLifecycleSubject[100450]
Orleans.Hosting.SiloBuilderStartupExtensions+StartupTask failed to start due to errors at stage Active (20000)
System.ArgumentException: Could not find an implementation for interface OrleansDashboard.IDashboardGrain
at Orleans.GrainInterfaceTypeToGrainTypeResolver.GetGrainType(GrainInterfaceType interfaceType) in /_/src/Orleans.Core/Core/GrainInterfaceTypeToGrainTypeResolver.cs:line 149
at Orleans.GrainFactory.GetGrain(Type interfaceType, IdSpan grainKey, String grainClassNamePrefix) in /_/src/Orleans.Core/Core/GrainFactory.cs:line 214
at Orleans.GrainFactory.GetGrain[TGrainInterface](Int64 primaryKey, String grainClassNamePrefix) in /_/src/Orleans.Core/Core/GrainFactory.cs:line 52
at OrleansDashboard.Dashboard.ActivateDashboardGrainAsync()
at OrleansDashboard.Dashboard.Execute(CancellationToken cancellationToken)
at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in /_/src/Orleans.Runtime/Lifecycle/SiloLifecycleSubject.cs:line 134
f
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure using the attached FsGrains minimal repository, comparing the F# and C# console hosts with UseDashboard enabled and disabled. Start from OrleansDashboard.Dashboard.ActivateDashboardGrainAsync and the GrainInterfaceTypeToGrainTypeResolver.GetGrainType stack trace; done means the F# silo starts with UseDashboard enabled without the missing-implementation error.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, fsharp
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.