Hi Pavel,

Yes, this works! No more failures. Thanks a lot Pavel.

Emilio

On 28/10/2021 15:44, Pavel Tupitsyn wrote:
> 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

    CacheConfigurationconfiguration= newCacheConfiguration(cacheName,
    newQueryEntity(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-2812: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-2812: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-2812:57:19.3081| 0| ERROR| VERTIGO |
        GridDiscoveryManager | Exceptionin discovery notifier worker
        thread.
        2021-10-2812: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-2812:57:19.3081| 0| ERROR| VERTIGO | FailureProcessor
        | No deadlocked threads detected.
        2021-10-2812:57:19.3567| 0| ERROR| VERTIGO | FailureProcessor
        | Thread dump at 2021/10/2810:57:19UTC

Reply via email to