> manually specify the QueryEntity queryable fields and indexes in the
CacheConfiguration

No need to do that.

Just add those calls before ignite.GetOrCreateCache:
 ignite.GetBinary().GetBinaryType(typeof(TKey));
 ignite.GetBinary().GetBinaryType(typeof(TValue));

(substitute actual type names as necessary)

This will perform a forced type registration on .NET side and should
hopefully fix the issue with cache startup.

On Thu, Oct 28, 2021 at 4:27 PM Emilio Cherubini <emi...@ddrobotec.com>
wrote:

> Hi Pavel,
>
> Thanks for the clarification and for filing a ticket!
>
> Yes, I'm using a CacheConfiguration with a QueryEntity, like
> CacheConfiguration configuration = new CacheConfiguration(cacheName, new
> QueryEntity(typeof(TKey), typeof(TValue)))
> {
> }
>
> I tried to manually specify the QueryEntity queryable fields and indexes
> in the CacheConfiguration instead of relying on the [QuerySqlField]
> attributes like in
> https://ignite.apache.org/docs/latest/SQL/sql-api#query-entities.
>
> But no success.
>
> I don't know how to register QueryEntity types manually using
> ignite.GetBinary().GetBinaryType(typeof(YOUR_TYPE)). Or do I have to
> specify a BinaryConfiguration to do that?
>
> Thanks again,
>
> Emilio
> On 28/10/2021 13:56, Pavel Tupitsyn wrote:
>
> Hi Emilio,
>
> This is a bug, I've filed a ticket:
> https://issues.apache.org/jira/browse/IGNITE-15845
>
> What does the config look like? You have some QueryEntity defined, am I
> right?
>
> I think a workaround is to register QueryEntity types manually before
> creating the cache:
> ignite.GetBinary().GetBinaryType(typeof(YOUR_TYPE))
>
> Let me know if this works.
>
> Thanks,
> Pavel
>
>
> On Thu, Oct 28, 2021 at 2:21 PM Emilio Cherubini <emi...@ddrobotec.com>
> wrote:
>
>> Hi,
>>
>> Since we started using MassTransit Ignite struggles when creating or
>> getting a cache using ignite.GetOrCreateCache<TKey, TValue>(configuration).
>> Ignite exits after the error has been triggered.
>>
>> The relevant error I guess is
>> Failure in Java callback Apache.Ignite.Core.Common.IgniteException:
>> Invalid array specification:
>> MassTransit.Initializers.PropertyConverters.MessageDataPropertyConverter
>> +<MassTransit-Initializers-IPropertyConverter<MassTransit-MessageData<System-Byte\[\]>\,MassTransit-MessageData<System-String>>-Convert>d__4`
>> 1
>>
>> The failure happens under Windows and Linux (Docker) with .Net Core 3.1.
>> Using GridGain Ignite 8.8.10.
>>
>> Not sure what is happening here, GetOrCreateCache() fails in specific
>> locations, and in some unit tests.
>>
>> Any insights on this issue will be greatly appreciated.
>>
>> Regards,
>>
>> Emilio
>>
>> The relevant bits from the log are:
>> 2021-10-28 12:57:19.2740 | 0 | ERROR | VERTIGO | IgniteTests | Failure
>> in Java callback Apache.Ignite.Core.Common.IgniteException: Invalid
>> array specification:
>> MassTransit.Initializers.PropertyConverters.MessageDataPropertyConverter
>> +<MassTransit-Initializers-IPropertyConverter<MassTransit-MessageData<System-Byte\[\]>\,MassTransit-MessageData<System-String>>-Convert>d__4`
>> 1
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser.ParseArrayDefinition()
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser.Parse()
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser..ctor(String
>> typeName, Int32& pos)
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser.Parse(String typeName)
>>    at Apache.Ignite.Core.Binary.BinaryBasicNameMapper.GetTypeName(String
>> name)
>>    at
>> Apache.Ignite.Core.Impl.Binary.TypeResolver.<>c__DisplayClass8_0.<FindType>b__0(Type
>> x)
>>    at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source,
>> Func`2 predicate, Boolean& found)
>>    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1
>> source, Func`2 predicate)
>>    at Apache.Ignite.Core.Impl.Binary.TypeResolver.FindType(Assembly asm,
>> String typeName, IBinaryNameMapper mapper)
>>    at
>> Apache.Ignite.Core.Impl.Binary.TypeResolver.<>c__DisplayClass4_0.<ResolveNonGenericType>b__1(Assembly
>> a)
>>    at System.Linq.Enumerable.SelectArrayIterator`2.MoveNext()
>>    at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source,
>> Func`2 predicate, Boolean& found)
>>    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1
>> source, Func`2 predicate)
>>    at
>> Apache.Ignite.Core.Impl.Binary.TypeResolver.ResolveNonGenericType(String
>> assemblyName, String typeName, ICollection`1 assemblies, IBinaryNameMapper
>> nameMapper)
>>    at Apache.Ignite.Core.Impl.Binary.TypeResolver.ResolveType(String
>> assemblyName, TypeNameParser typeName, ICollection`1 assemblies,
>> IBinaryNameMapper nameMapper)
>>    at Apache.Ignite.Core.Impl.Binary.TypeResolver.ResolveType(String
>> typeName, String assemblyName, IBinaryNameMapper nameMapper)
>>    at Apache.Ignite.Core.Impl.Binary.Marshaller.ResolveType(String
>> typeName)
>>    at Apache.Ignite.Core.Impl.Binary.Marshaller.GetDescriptor(Boolean
>> userType, Int32 typeId, Boolean requiresType, String typeName, Type
>> knownType)
>>    at Apache.Ignite.Core.Impl.Binary.Marshaller.GetDescriptor(String
>> typeName, Boolean requiresType)
>>    at
>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.<>c__DisplayClass98_0.<BinaryTypeGet>b__0()
>>    at
>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.SafeCall[T](Func`1
>> func, Boolean allowUnitialized)
>> 2021-10-28 12:57:19.3055 | 0 | ERROR | VERTIGO | IgniteTests | Failure
>> in Java callback Apache.Ignite.Core.Common.IgniteException: Invalid
>> array specification:
>> MassTransit.Initializers.PropertyConverters.MessageDataPropertyConverter
>> +<MassTransit-Initializers-IPropertyConverter<MassTransit-MessageData<System-Byte\[\]>\,MassTransit-MessageData<System-String>>-Convert>d__4`
>> 1
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser.ParseArrayDefinition()
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser.Parse()
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser..ctor(String
>> typeName, Int32& pos)
>>    at Apache.Ignite.Core.Impl.Binary.TypeNameParser.Parse(String typeName)
>>    at Apache.Ignite.Core.Binary.BinaryBasicNameMapper.GetTypeName(String
>> name)
>>    at
>> Apache.Ignite.Core.Impl.Binary.TypeResolver.<>c__DisplayClass8_0.<FindType>b__0(Type
>> x)
>>    at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source,
>> Func`2 predicate, Boolean& found)
>>    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1
>> source, Func`2 predicate)
>>    at Apache.Ignite.Core.Impl.Binary.TypeResolver.FindType(Assembly asm,
>> String typeName, IBinaryNameMapper mapper)
>>    at
>> Apache.Ignite.Core.Impl.Binary.TypeResolver.<>c__DisplayClass4_0.<ResolveNonGenericType>b__1(Assembly
>> a)
>>    at System.Linq.Enumerable.SelectArrayIterator`2.MoveNext()
>>    at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source,
>> Func`2 predicate, Boolean& found)
>>    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1
>> source, Func`2 predicate)
>>    at
>> Apache.Ignite.Core.Impl.Binary.TypeResolver.ResolveNonGenericType(String
>> assemblyName, String typeName, ICollection`1 assemblies, IBinaryNameMapper
>> nameMapper)
>>    at Apache.Ignite.Core.Impl.Binary.TypeResolver.ResolveType(String
>> assemblyName, TypeNameParser typeName, ICollection`1 assemblies,
>> IBinaryNameMapper nameMapper)
>>    at Apache.Ignite.Core.Impl.Binary.TypeResolver.ResolveType(String
>> typeName, String assemblyName, IBinaryNameMapper nameMapper)
>>    at Apache.Ignite.Core.Impl.Binary.Marshaller.ResolveType(String
>> typeName)
>>    at Apache.Ignite.Core.Impl.Binary.Marshaller.GetDescriptor(Boolean
>> userType, Int32 typeId, Boolean requiresType, String typeName, Type
>> knownType)
>>    at Apache.Ignite.Core.Impl.Binary.Marshaller.GetDescriptor(String
>> typeName, Boolean requiresType)
>>    at
>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.<>c__DisplayClass98_0.<BinaryTypeGet>b__0()
>>    at
>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.SafeCall[T](Func`1
>> func, Boolean allowUnitialized)
>>    at
>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.BinaryTypeGet(Int64
>> memPtr)
>>    at
>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.InLongOutLong(Int32
>> type, Int64 val)
>> 2021-10-28 12:57:19.3081 | 0 | ERROR | VERTIGO | GridDiscoveryManager |
>> Exception in discovery notifier worker thread.
>> 2021-10-28 12:57:19.3081 | 0 | ERROR | VERTIGO | IgniteTests | Critical
>> system error detected. Will be handled accordingly to configured handler
>> [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0,
>> super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet
>> [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]],
>> failureCtx=FailureContext [type=SYSTEM_WORKER_TERMINATION, err=class
>> o.a.i.IgniteException: Invalid array specification:
>> MassTransit.Initializers.PropertyConverters.MessageDataPropertyConverter
>> +<MassTransit-Initializers-IPropertyConverter<MassTransit-MessageData<System-Byte\[\]>\,MassTransit-MessageData<System-String>>-Convert>d__4`
>> 1]]
>> 2021-10-28 12:57:19.3081 | 0 | ERROR | VERTIGO | FailureProcessor | No
>> deadlocked threads detected.
>> 2021-10-28 12:57:19.3567 | 0 | ERROR | VERTIGO | FailureProcessor |
>> Thread dump at 2021/10/28 10:57:19 UTC
>>
> --
> Emilio Cherubini
> Head of Software
> emi...@ddrobotec.com
>
> ddrobotec
> by Dynamic Devices AG
> Technoparkstrasse 1
> 8005 Zurich
> Switzerland
> www.ddrobotec.com
>
>

Reply via email to