From ffb35a883cd9be5a0e80c1c494d9b604b08de9cc Mon Sep 17 00:00:00 2001 From: Tony Zhai Date: Thu, 5 Dec 2019 16:28:25 +0800 Subject: [PATCH] Fix potential NPE exception Since the queue initialization line is after the thread start, so there is a potential NPE once the `ContinueExtractor` is initialized before the queue is initialized, so move the queue initlialization code before the thread start line. [Ticket: #92] --- .../yugong/extractor/oracle/OracleFullRecordExtractor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/taobao/yugong/extractor/oracle/OracleFullRecordExtractor.java b/src/main/java/com/taobao/yugong/extractor/oracle/OracleFullRecordExtractor.java index cc0cc72..64f3130 100644 --- a/src/main/java/com/taobao/yugong/extractor/oracle/OracleFullRecordExtractor.java +++ b/src/main/java/com/taobao/yugong/extractor/oracle/OracleFullRecordExtractor.java @@ -68,13 +68,14 @@ public void start() { this.getMinPkSql = new MessageFormat(MIN_PK_FORMAT).format(new Object[] { primaryKey, schemaName, tableName }); } + queue = new LinkedBlockingQueue<>(context.getOnceCrawNum() * 2); + extractorThread = new NamedThreadFactory(this.getClass().getSimpleName() + "-" + context.getTableMeta().getFullName()).newThread(new ContinueExtractor(this, context, queue)); extractorThread.start(); - queue = new LinkedBlockingQueue<>(context.getOnceCrawNum() * 2); tracer.update(context.getTableMeta().getFullName(), ProgressStatus.FULLING); }