[ https://issues.apache.org/jira/browse/IGNITE-13094?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17121062#comment-17121062 ]
Ivan Pavlukhin commented on IGNITE-13094: ----------------------------------------- [~AK47Sonic], thank you for sharing the code. I tried to launch it and everything worked fine. One unclear thing is how the Ignite server (or cluster) is started and configured. I used the same xml config as _default-config.xml_ with enabled server mode. > java.lang.ClassNotFoundException: ch.qos.logback for distributed compute > ------------------------------------------------------------------------ > > Key: IGNITE-13094 > URL: https://issues.apache.org/jira/browse/IGNITE-13094 > Project: Ignite > Issue Type: Bug > Components: compute > Affects Versions: 2.8.1 > Environment: Ignite 2.8.0 > Spring Boot 2.1.0.RELEASE > Java 1.8 > Reporter: AK47Sonic > Priority: Major > > I try to use spring boot (2.1.0.RELEASE) to run ignite.compute. As spring > boot + lombok use logback as default, the following codes always throw > exceptions (2020-05-28 07:00:48.979 WARN 8460 --- [ p2p-#49] > o.a.i.i.m.d.GridDeploymentCommunication : Failed to resolve class: > ch.qos.logback). The result (28) could be returned. Seems we see log4j and > log4j2 on official website. I try to use log4j2 to replace logback. And it > works fine. Does ignite support logback for distributed compute? Or It is > just a bug? > {panel:title=pom.xml} > <dependencies> > <dependency> > <groupId>org.springframework.boot</groupId> > <artifactId>spring-boot-starter-web</artifactId> > <exclusions> > <exclusion> > <groupId>org.springframework.boot</groupId> > <artifactId>spring-boot-starter-log4j</artifactId> > </exclusion> > </exclusions> > </dependency> > <dependency> > <groupId>org.apache.ignite</groupId> > <artifactId>ignite-core</artifactId> > <version>2.8.0</version> > </dependency> > <dependency> > <groupId>org.apache.ignite</groupId> > <artifactId>ignite-spring</artifactId> > <version>2.8.0</version> > </dependency> > <dependency> > <groupId>org.projectlombok</groupId> > <artifactId>lombok</artifactId> > <version>1.18.12</version> > <scope>provided</scope> > </dependency> > </dependencies> > {panel} > {panel:title=config.xml} > <?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" > 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"> > <bean id="igniteCfg" > class="org.apache.ignite.configuration.IgniteConfiguration"> > <property name="clientMode" value="true"/> > <property name="peerClassLoadingEnabled" value="true"/> > <property name="discoverySpi"> > <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> > <property name="localPort" value="48500"/> > <property name="localPortRange" value="20"/> > <property name="ipFinder"> > <bean > class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> > <property name="addresses"> > <list> > <value>127.0.0.1:48500..48520</value> > </list> > </property> > </bean> > </property> > </bean> > </property> > <property name="communicationSpi"> > <bean > class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi"> > <property name="localPort" value="48100"/> > </bean> > </property> > </bean> > </beans> > {panel} > {code:java} > @Configuration > @ImportResource(locations={"classpath:default-config.xml"}) > public class IgniteConfig { > @Bean > public Ignite ignite(IgniteConfiguration igniteConfiguration) { > Ignite ignite = Ignition.start(igniteConfiguration); > Ignition.setClientMode(true); > return ignite; > } > } > @Slf4j > @RestController > public class WebController { > @Autowired > private Ignite ignite; > @GetMapping("/compute") > public void compute() { > Collection<IgniteCallable<Integer>> calls = new ArrayList<>(); > // Iterate through all the words in the sentence and create Callable > jobs. > for (final String word : "Count characters using callable".split(" ")) > calls.add(word::length); > // Execute collection of Callables on the grid. > Collection<Integer> res = ignite.compute().call(calls); > // Add up all the results. > int sum = res.stream().mapToInt(Integer::intValue).sum(); > log.info("Total number of characters is '" + sum + "'."); > } > } > {code} > {panel:title=Exception} > 2020-05-28 07:00:48.786 INFO 8460 --- [nio-8080-exec-1] > o.a.i.i.m.d.GridDeploymentLocalStore : Class locally deployed: class > com.sonic.sample.springboot.controller.WebController > 2020-05-28 07:00:48.890 WARN 8460 --- [ p2p-#49] > o.a.i.i.m.d.GridDeploymentCommunication : Failed to resolve class: > ch.qos.logback > java.lang.ClassNotFoundException: ch.qos.logback > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > ~[na:1.8.0_121] > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_121] > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) > ~[na:1.8.0_121] > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_121] > at java.lang.Class.forName0(Native Method) ~[na:1.8.0_121] > at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_121] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.processResourceRequest(GridDeploymentCommunication.java:216) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.processDeploymentRequest(GridDeploymentCommunication.java:152) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.access$000(GridDeploymentCommunication.java:55) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication$1.onMessage(GridDeploymentCommunication.java:88) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1843) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$5100(GridIoManager.java:229) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager$8.run(GridIoManager.java:1325) > [ignite-core-2.8.0.jar:2.8.0] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > [na:1.8.0_121] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > [na:1.8.0_121] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] > 2020-05-28 07:00:49.000 WARN 8460 --- [ p2p-#50] > o.a.i.i.m.d.GridDeploymentCommunication : Failed to resolve class: > ch.qos.logback > java.lang.ClassNotFoundException: ch.qos.logback > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > ~[na:1.8.0_121] > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_121] > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) > ~[na:1.8.0_121] > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_121] > at java.lang.Class.forName0(Native Method) ~[na:1.8.0_121] > at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_121] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.processResourceRequest(GridDeploymentCommunication.java:216) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.processDeploymentRequest(GridDeploymentCommunication.java:152) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.access$000(GridDeploymentCommunication.java:55) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication$1.onMessage(GridDeploymentCommunication.java:88) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1843) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$5100(GridIoManager.java:229) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager$8.run(GridIoManager.java:1325) > [ignite-core-2.8.0.jar:2.8.0] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > [na:1.8.0_121] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > [na:1.8.0_121] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] > 2020-05-28 07:00:49.000 WARN 8460 --- [ p2p-#50] > o.a.i.i.m.d.GridDeploymentCommunication : Failed to resolve class: > ch.qos.logback > java.lang.ClassNotFoundException: ch.qos.logback > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > ~[na:1.8.0_121] > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_121] > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) > ~[na:1.8.0_121] > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_121] > at java.lang.Class.forName0(Native Method) ~[na:1.8.0_121] > at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_121] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.processResourceRequest(GridDeploymentCommunication.java:216) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.processDeploymentRequest(GridDeploymentCommunication.java:152) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.access$000(GridDeploymentCommunication.java:55) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication$1.onMessage(GridDeploymentCommunication.java:88) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1843) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$5100(GridIoManager.java:229) > [ignite-core-2.8.0.jar:2.8.0] > at > org.apache.ignite.internal.managers.communication.GridIoManager$8.run(GridIoManager.java:1325) > [ignite-core-2.8.0.jar:2.8.0] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > [na:1.8.0_121] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > [na:1.8.0_121] > at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] > 2020-05-28 07:00:49.025 INFO 8460 --- [nio-8080-exec-1] > c.s.s.s.controller.WebController : Total number of characters is '28'. > {panel} -- This message was sent by Atlassian Jira (v8.3.4#803005)