Skip to content

Release v1.4.2

Choose a tag to compare

@github-actions github-actions released this 24 Sep 08:40
8a43f3a

Fixed

  • NullJob collided with Chronicle's NullJob the same way JobsManager did, 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.