Details
-
Bug
-
Resolution: Fixed
-
Major
-
2.7.15
-
None
-
None
-
1
Description
Raised by gitter user mfeerick.
I am wondering if you can help with an issue I am facing regarding SubDoc LookupIn chaining as I am getting a ClientFailure and looking at the Exception message it is nable to cast object of type 'System.Collections.Generic.List`1[Couchbase.Core.IO.SubDocument.OperationSpec]' to type 'My Document POCO Type'
|
var lookupBuilder = bucket.LookupIn<T>(identifier);
|
lookupBuilder.Get(lookup.Path1).Get(lookup.Path2)
|
var documentFragmentResult = await lookupBuilder.ExecuteAsync();
|
this is failing, however if I do not chain the Get() and only do one Get() it works
|
what am i doing wrong?
|
|
Jeffry Morris @jeffrymorris Dec 27 2019 22:42
|
@mfeerick sounds like a bug. What is the SDK version you are using?
|
|
mfeerick @mfeerick Jan 06 08:52
|
@jeffrymorris I am using 2.7.15 which afaik is the latest.
|
|
mfeerick @mfeerick Jan 06 10:53
|
couchbase-net-client/src/Couchbase/IO/Operations/SubDocument/MultiLookup.cs:line 115
|
return (T)_lookupCommands;
|
|
Mike Goldsmith @MikeGoldsmith Jan 06 13:13
|
Hi @mfeerick - just FYI @jeffrymorris is based on West coast so won’t be available to respond for a little while.
|
Can you give some context to the cs file & line number you pointed out?
|
|
mfeerick @mfeerick Jan 06 14:25
|
@MikeGoldsmith This is where an exception is thrown when attempting to do a MultiLookup
|
var lookupBuilder = bucket.LookupIn<T>(identifier);
|
lookupBuilder.Get(lookup.Path1).Get(lookup.Path2)
|
var documentFragmentResult = await lookupBuilder.ExecuteAsync();
|
|
Mike Goldsmith @MikeGoldsmith Jan 06 15:35
|
Please can you provide a full example with both code and JSON document you’re using that generates the error?
|
|
mfeerick @mfeerick Jan 07 22:33
|
@MikeGoldsmith sure ive created a simple example at: https://dotnetfiddle.net/lsLpqH
|
The result of the lookupBuilder.Execute() will be a "ClientFailure"
|
My debugging the CouchbaseNetClient source shows the issue on line 115 of couchbase-net-client/src/Couchbase/IO/Operations/SubDocument/MultiLookup.cs
|
|
mfeerick @mfeerick Jan 07 22:40
|
where it is attempting to cast a List<Couchbase.Core.IO.SubDocument.OperationSpec> to a <T> so in my example a "Test"
|
I also figured out why it works if you dont chain multiple Gets, and that is because it runs different code.
|
|
@jeffrymorris @MikeGoldsmith I have fixed this issue in MultiLookup.cs with a small change, do you accept pull requests on github?
|