Repository navigation
Release v1.4.2
Fixed
NullJobcollided with Chronicle'sNullJobthe same wayJobsManagerdid, so a silo referencing both libraries still could not start
Follow-up to #18, which named JobsManager and left the underlying problem in place.
Orleans derives a grain type name from the class name alone, ignoring the namespace. A grain that does not name itself therefore claims a name that every other assembly's same-named grain also claims, and the silo refuses to start:
System.InvalidOperationException: An entry with the key nulljob is already present.
Naming JobsManager simply moved the failure to the next grain in the list. Both are now named, and the spec no longer checks the two classes that happened to be found — it asserts that every grain in the assembly names itself, so the next grain added here cannot reintroduce the failure. Nothing in a normal build or spec run starts a silo, which is why this class of defect reaches deployment.
Orleans' own generated proxies are excluded; they are not grain implementations and never carry the attribute. The spec also asserts it found grains at all, so it cannot pass by matching nothing.
Verified non-vacuous: removing either attribute fails it.