yusuf öndersever
yusuf öndersever

Reputation: 83

Apache Ignite Query - No matching type found for object

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.CacheEnumerator2.b__0(IBinaryStream stream) at Apache.Ignite.Core.Impl.PlatformJniTarget.OutStream[T](Int32 type, Func2 readAction) at Apache.Ignite.Core.Impl.Cache.CacheEnumeratorProxy2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator1.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

Upvotes: 1

Views: 240

Answers (1)

alamar
alamar

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

Related Questions