Skip to content

Generic Grain Types cause a NullReference exception in CouchBaseDataManager #15

Description

@enashed

When using a generic grain types, I get this exception :

Exc level 0: System.NullReferenceException: Object reference not set to an instance of an object.
   at Orleans.Storage.CouchBaseDataManager.<Read>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Orleans.Storage.BaseJSONStorageProvider.<ReadStateAsync>d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Orleans.Runtime.Scheduler.SchedulerExtensions.<>c__DisplayClass1_0.<<QueueTask>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Orleans.Runtime.Catalog.<SetupActivationState>d__63.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Orleans.Runtime.Catalog.<InitActivation>d__59.MoveNext()	28.17s		

I notice the following line in BaseJSONStorageProvider
var grainTypeName = grainType.Split('.').Last();

So if there a generic argument to the type, it would be something like this:
Foo.Foo[Foo.Bar, Foo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]

Splitting on the . would not work in this case.

Also because the generic arguments makes the key too long, I can see a possibility to easily exceed 250 characters as a key for Couchbase.

For now I am avoiding any generic grain types, but not sure if there would be a solution in couchbase provider for this problem

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions