You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ivan Daschinskiy (Jira)" <ji...@apache.org> on 2020/06/25 13:29:00 UTC

[jira] [Updated] (IGNITE-13187) Jar hell in classpath leads to failed tests in C++ and .NET suites

     [ https://issues.apache.org/jira/browse/IGNITE-13187?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ivan Daschinskiy updated IGNITE-13187:
--------------------------------------
    Description: 
On some agents tests and examples start failing with this calltrace:

{code:java}
[13:53:52]java.lang.NoSuchFieldError: logger
[13:53:52]	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:723)
[13:53:52]	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:881)
[13:53:52]	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
[13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:381)
[13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:104)
[13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:98)
[13:53:52]	at org.apache.ignite.internal.IgnitionEx.loadConfigurations(IgnitionEx.java:709)
[13:53:52]	at org.apache.ignite.internal.IgnitionEx.loadConfiguration(IgnitionEx.java:767)
[13:53:52]	at org.apache.ignite.internal.processors.platform.PlatformIgnition.configuration(PlatformIgnition.java:152)
[13:53:52]	at org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:67)
{code}


The main reason of failure is jar-hell. When .NET or C++ tests are started, if IGNITE_NATIVE_TEST_CLASSPATH is set to true, source directory is iterated and files libs, target/classes etc.are added to classpath. But neither readdir(), FindNextFileA() or Directory.EnumerateDirectories() do guarantee any ordering. But in spring-data-2.0 and spring-data-2.2 there are different version of spring. So jar hell occurs and tests fails. 


I created small patch that excluded spring-data from directories, that create classpath and tests start working.
See links attached.

  was:
On some agents tests and examples start failing with this calltrace:

{code:java}
[13:53:52]java.lang.NoSuchFieldError: logger
[13:53:52]	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:723)
[13:53:52]	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:881)
[13:53:52]	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
[13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:381)
[13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:104)
[13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:98)
[13:53:52]	at org.apache.ignite.internal.IgnitionEx.loadConfigurations(IgnitionEx.java:709)
[13:53:52]	at org.apache.ignite.internal.IgnitionEx.loadConfiguration(IgnitionEx.java:767)
[13:53:52]	at org.apache.ignite.internal.processors.platform.PlatformIgnition.configuration(PlatformIgnition.java:152)
[13:53:52]	at org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:67)
{code}


The main reason of failure is jar-hell. When .NET or C++ tests are started, if IGNITE_NATIVE_TEST_CLASSPATH is set to true, source directory is iterated and files libs, target/classes etc.are added to classpath. But neither readdir(), FindNextFileA() or Directory.EnumerateDirectories() do guarantee any ordering. But in spring-data-2.0 and spring-data-2.2 there are different version of spring. So jar hell occurs and tests fails. 


> Jar hell in classpath leads to failed tests in C++ and .NET suites
> ------------------------------------------------------------------
>
>                 Key: IGNITE-13187
>                 URL: https://issues.apache.org/jira/browse/IGNITE-13187
>             Project: Ignite
>          Issue Type: Test
>          Components: platforms
>    Affects Versions: 2.8.1
>         Environment: Apache Ignite TC.
>            Reporter: Ivan Daschinskiy
>            Priority: Major
>
> On some agents tests and examples start failing with this calltrace:
> {code:java}
> [13:53:52]java.lang.NoSuchFieldError: logger
> [13:53:52]	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:723)
> [13:53:52]	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:881)
> [13:53:52]	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
> [13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:381)
> [13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:104)
> [13:53:52]	at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:98)
> [13:53:52]	at org.apache.ignite.internal.IgnitionEx.loadConfigurations(IgnitionEx.java:709)
> [13:53:52]	at org.apache.ignite.internal.IgnitionEx.loadConfiguration(IgnitionEx.java:767)
> [13:53:52]	at org.apache.ignite.internal.processors.platform.PlatformIgnition.configuration(PlatformIgnition.java:152)
> [13:53:52]	at org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:67)
> {code}
> The main reason of failure is jar-hell. When .NET or C++ tests are started, if IGNITE_NATIVE_TEST_CLASSPATH is set to true, source directory is iterated and files libs, target/classes etc.are added to classpath. But neither readdir(), FindNextFileA() or Directory.EnumerateDirectories() do guarantee any ordering. But in spring-data-2.0 and spring-data-2.2 there are different version of spring. So jar hell occurs and tests fails. 
> I created small patch that excluded spring-data from directories, that create classpath and tests start working.
> See links attached.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)