Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.10
-
None
-
None
-
Docs Required, Release Notes Required
Description
We seem to skip some essential dependencies for jclouds-based discovery, since trying to start a node results in the following error:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder#1877ab81' defined in URL [file:/home/ikasnacheev/Downloads/apache-ignite-2.11.0-SNAPSHOT-bin/config/cloud-config.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: Lorg/jclouds/compute/ComputeService; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ... 28 more Caused by: java.lang.NoClassDefFoundError: Lorg/jclouds/compute/ComputeService; at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Class.java:2583) at java.lang.Class.getDeclaredFields(Class.java:1916) at org.springframework.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:713) at org.springframework.util.ReflectionUtils.findField(ReflectionUtils.java:97) at org.springframework.util.ReflectionUtils.findField(ReflectionUtils.java:80) at org.springframework.core.convert.Property.getField(Property.java:225) at org.springframework.core.convert.Property.resolveAnnotations(Property.java:202) at org.springframework.core.convert.Property.getAnnotations(Property.java:123) at org.springframework.core.convert.TypeDescriptor.<init>(TypeDescriptor.java:115) at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:214) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1568) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1527) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1269) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) ... 30 more Caused by: java.lang.ClassNotFoundException: org.jclouds.compute.ComputeService at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ... 45 more
The following default config is used:
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> <property name="discoverySpi"> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> <property name="ipFinder"> <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder"> <property name="provider" value="google-compute-engine"/> <property name="identity" value="your_service_account_email"/> <property name="credentialPath" value="path_to_json_key"/> <property name="zones"> <list> <value>us-central1-a</value> <value>asia-east1-a</value> </list> </property> </bean> </property> </bean> </property> </bean>
By the way, there is extra closing slash in initial <bean> tag in org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder javadoc (line 112). Makes sense to fix.