Search code examples
ignite

Apache Ignite won't start with shared file system config


It is supposed to be possible to form a cluster of Apache Ignite nodes by allowing them share their ip addresses via a shared file system such as NFS

https://apacheignite.readme.io/v1.9/docs/cluster-config#shared-file-system-based-discovery

I have tried this with the following config file:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:util="http://www.springframework.org/schema/util"
  xmlns:cache="http://www.springframework.org/schema/cache"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd
    http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache.xsd">
<!--
    Alter configuration below as needed.
-->
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
  <property name="includeEventTypes">
    <list>
        <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_STARTED"/>
        <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_FINISHED"/>
        <util:constant static-field="org.apache.ignite.events.EventType.EVT_TASK_FAILED"/>
    </list>
  </property>
  <property name="discoverySpi">
    <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
      <property name="ipFinder">
        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">
          <property name="path" ref="/nfs/ignite/addresses"/>
        </bean>
      </property>
    </bean>
  </property>
  <property name="peerClassLoadingEnabled" value="true"/>
</bean>

The path is valid:

[root@ignite-1 /]# ls -la /nfs/ignite/addresses
-rwxrwxrwx 1 root root 0 Jun 30 16:47 /nfs/ignite/addresses

But when I try to start Ignite, with:

/apache-ignite-fabric-1.9.0-bin/bin/ignite.sh /apache-ignite-fabric-1.9.0-bin/config/default-config.xml -J-Xmx3g -J-XX:+UseG1GC

Its as if this isn't supported?

class org.apache.ignite.IgniteException: Failed to instantiate Spring XML application context [springUrl=file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml, err=Error creating bean with name 'grid.cfg' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' of type [org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi] while setting bean property 'discoverySpi'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' of type [org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder] while setting bean property 'ipFinder'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot resolve reference to bean '/nfs/ignite/addresses' while setting bean property 'path'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined]
        at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:946)
        at org.apache.ignite.Ignition.start(Ignition.java:350)
        at org.apache.ignite.startup.cmdline.CommandLineStartup.main(CommandLineStartup.java:302)
    Caused by: class org.apache.ignite.IgniteCheckedException: Failed to instantiate Spring XML application context [springUrl=file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml, err=Error creating bean with name 'grid.cfg' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' of type [org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi] while setting bean property 'discoverySpi'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' of type [org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder] while setting bean property 'ipFinder'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot resolve reference to bean '/nfs/ignite/addresses' while setting bean property 'path'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined]
        at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:391)
        at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:104)
        at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:98)
        at org.apache.ignite.internal.IgnitionEx.loadConfigurations(IgnitionEx.java:639)
        at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:840)
        at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:749)
        at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:619)
        at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:589)
        at org.apache.ignite.Ignition.start(Ignition.java:347)
        ... 1 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grid.cfg' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' of type [org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi] while setting bean property 'discoverySpi'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' of type [org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder] while setting bean property 'ipFinder'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot resolve reference to bean '/nfs/ignite/addresses' while setting bean property 'path'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:290)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1471)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1216)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
        at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:381)
        ... 9 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' of type [org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder] while setting bean property 'ipFinder'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot resolve reference to bean '/nfs/ignite/addresses' while setting bean property 'path'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:290)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1471)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1216)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
        ... 22 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot resolve reference to bean '/nfs/ignite/addresses' while setting bean property 'path'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:336)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1471)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1216)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
        ... 28 more
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:660)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1157)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:280)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
        ... 34 more
    Failed to start grid: Failed to instantiate Spring XML application context [springUrl=file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml, err=Error creating bean with name 'grid.cfg' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' of type [org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi] while setting bean property 'discoverySpi'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi#67b92f0a' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot create inner bean 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' of type [org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder] while setting bean property 'ipFinder'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder#1d16f93d' defined in URL [file:/apache-ignite-fabric-1.9.0-bin/config/default-config.xml]: Cannot resolve reference to bean '/nfs/ignite/addresses' while setting bean property 'path'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '/nfs/ignite/addresses' is defined] 


Solution

  • it's a mistake in documentation.

    <property name="path" ref="/var/ignite/addresses"/>

    should be replaced with

    <property name="path" value="/var/ignite/addresses"/ >