Open zhangzhishuai opened 5 years ago
OracleFullRecordExtractor类 #start方法 中第77行代码:queue = new LinkedBlockingQueue<>(context.getOnceCrawNum() * 2); 假如放在71行之后,
71行-77行代码: 71 extractorThread = new NamedThreadFactory(this.getClass().getSimpleName() + "-" 72 + context.getTableMeta().getFullName()).newThread(new 73 ContinueExtractor(this, 74 context, 75 queue)); 76 extractorThread.start(); 77 queue = new LinkedBlockingQueue<>(context.getOnceCrawNum() * 2);
首次启动会导致: ContinueExtractor类 #run方法时,127行代码queue为null:于是 NullPointerException: null (调整77行代码顺序之后,可解决问题)
127行代码: for (Record record : result) { try { 127 queue.put(record); } catch (InterruptedException e) { Thread.currentThread().interrupt(); // 传递 throw new YuGongException(e); } }
2018-12-29 09:56:38.438 [OracleFullRecordExtractor-ZHEJIANGGRID5.YUGONG_EXAMPLE_JOIN-0] ERROR com.taobao.yugong.common.utils.thread.NamedThreadFactory - uncaught exception java.lang.NullPointerException: null at com.taobao.yugong.extractor.ContinueExtractor.lambda$run$1(ContinueExtractor.java:127) ~[classes/:na] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591) ~[spring-2.5.6.jar:2.5.6] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:619) ~[spring-2.5.6.jar:2.5.6] at com.taobao.yugong.extractor.ContinueExtractor.run(ContinueExtractor.java:92) ~[classes/:na] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_152] 2018-12-29 09:57:38.017 [pool-3-thread-2] INFO com.taobao.yugong.common.stats.ProgressTracer - {未启动:0,全量中:1,增量中:0,已追上:0,异常数:0} 2018-12-29 09:57:38.018 [pool-3-thread-2] INFO com.taobao.yugong.common.stats.ProgressTracer - 全量中:[ZHEJIANGGRID5.YUGONG_EXAMPLE_JOIN] 2018-12-29 09:57:38.018 [pool-3-thread-2] INFO com.taobao.yugong.common.stats.ProgressTracer - 已完成:[]
感谢,问题解决了。把77行代码改成71行之前就可以了。
我也遇到了,源码得改过来
OracleFullRecordExtractor类 #start方法 中第77行代码:queue = new LinkedBlockingQueue<>(context.getOnceCrawNum() * 2); 假如放在71行之后,
71行-77行代码: 71 extractorThread = new NamedThreadFactory(this.getClass().getSimpleName() + "-" 72 + context.getTableMeta().getFullName()).newThread(new 73 ContinueExtractor(this, 74 context, 75 queue)); 76 extractorThread.start(); 77 queue = new LinkedBlockingQueue<>(context.getOnceCrawNum() * 2);
首次启动会导致: ContinueExtractor类 #run方法时,127行代码queue为null:于是 NullPointerException: null (调整77行代码顺序之后,可解决问题)
127行代码: for (Record record : result) { try { 127 queue.put(record); } catch (InterruptedException e) { Thread.currentThread().interrupt(); // 传递 throw new YuGongException(e); } }
2018-12-29 09:56:38.438 [OracleFullRecordExtractor-ZHEJIANGGRID5.YUGONG_EXAMPLE_JOIN-0] ERROR com.taobao.yugong.common.utils.thread.NamedThreadFactory - uncaught exception java.lang.NullPointerException: null at com.taobao.yugong.extractor.ContinueExtractor.lambda$run$1(ContinueExtractor.java:127) ~[classes/:na] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591) ~[spring-2.5.6.jar:2.5.6] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:619) ~[spring-2.5.6.jar:2.5.6] at com.taobao.yugong.extractor.ContinueExtractor.run(ContinueExtractor.java:92) ~[classes/:na] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_152] 2018-12-29 09:57:38.017 [pool-3-thread-2] INFO com.taobao.yugong.common.stats.ProgressTracer - {未启动:0,全量中:1,增量中:0,已追上:0,异常数:0} 2018-12-29 09:57:38.018 [pool-3-thread-2] INFO com.taobao.yugong.common.stats.ProgressTracer - 全量中:[ZHEJIANGGRID5.YUGONG_EXAMPLE_JOIN] 2018-12-29 09:57:38.018 [pool-3-thread-2] INFO com.taobao.yugong.common.stats.ProgressTracer - 已完成:[]