Reputation: 83
I got "no matching type found for object" error when query cache keys from apache ignite cache.
Ignite server instance runs on Linux Server and my query runs on ignite client instance that started by Microsoft Server .Net Web Forms application. The dll for this type already exists in application's bin folder.
My Query:
List<string> cacheKeys = cache.Select(e => e.Key).Where(e => e.StartsWith(cacheItemKeyPrefix)).ToList();
Error :
Apache.Ignite.Core.Binary.BinaryObjectException: No matching type found for object [typeId=-274908056, typeName=System.Collections.Generic.Dictionary2[[System.Decimal],[CUST.CompositionTypes.PrivateBankingCustomer]]]. This usually indicates that assembly with specified type is not loaded on a node. When using Apache.Ignite.exe, make sure to load assemblies with -assembly parameter. Alternatively, set IgniteConfiguration.PeerAssemblyLoadingEnabled to true. at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type typeOverride) at Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type typeOverride) at Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadBinaryObject[T](Boolean doDetach) at Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type typeOverride) at Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) at Apache.Ignite.Core.Impl.Cache.CacheEnumerator
2.b__0(IBinaryStream stream) at Apache.Ignite.Core.Impl.PlatformJniTarget.OutStream[T](Int32 type, Func2 readAction) at Apache.Ignite.Core.Impl.Cache.CacheEnumeratorProxy
2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator
1.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable
1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
Upvotes: 1
Views: 240
Reputation: 19343
You can only run .Net closures remotely if the whole cluster is .Net cluster, including server nodes. If they already are, I suggest some mismatch between windows and linux assemblies.
Do you have PrivateBankingCustomer
type in your linux nodes' assemblies? Note that cache key/value types cannot be peer assembly loaded.
Upvotes: 0