Skip to content

Commit 5317336

Browse files
FlechazoWHiLany
authored andcommitted
[hotfix-35548][hbase] 修复hbase批量写入,对返回的result判断有误,导致脏数据记录错误。
1 parent 0057f44 commit 5317336

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

hbase/hbase-sink/src/main/java/com/dtstack/flink/sql/sink/hbase/HbaseOutputFormat.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.dtstack.flink.sql.sink.hbase;
2121

2222
import com.dtstack.flink.sql.dirtyManager.manager.DirtyDataManager;
23+
import com.dtstack.flink.sql.exception.ExceptionTrace;
2324
import com.dtstack.flink.sql.factory.DTThreadFactory;
2425
import com.dtstack.flink.sql.outputformat.AbstractDtRichOutputFormat;
2526
import com.google.common.collect.Maps;
@@ -240,12 +241,12 @@ protected synchronized void dealBatchOperation(List<Row> records) {
240241
} finally {
241242
// 判断数据是否插入成功
242243
for (int i = 0; i < results.length; i++) {
243-
if (results[i] != null) {
244+
if (results[i] instanceof Exception) {
244245
dirtyDataManager.execute();
245246
// 脏数据记录
246247
dirtyDataManager.collectDirtyData(
247-
records.get(i).toString(),
248-
((Exception) results[i]).getMessage()
248+
records.get(i).toString(),
249+
ExceptionTrace.traceOriginalCause((Exception) results[i])
249250
);
250251
outDirtyRecords.inc();
251252
} else {
@@ -273,8 +274,8 @@ protected void dealInsert(Row record) {
273274
}
274275
} catch (Exception e) {
275276
dirtyDataManager.collectDirtyData(
276-
record.toString()
277-
, e.getMessage());
277+
record.toString(),
278+
ExceptionTrace.traceOriginalCause(e));
278279
outDirtyRecords.inc();
279280
}
280281

@@ -348,6 +349,10 @@ public synchronized void close() throws IOException {
348349
conn.close();
349350
conn = null;
350351
}
352+
353+
if (dirtyDataManager != null) {
354+
dirtyDataManager.close();
355+
}
351356
}
352357

353358
private void fillSyncKerberosConfig(org.apache.hadoop.conf.Configuration config,

0 commit comments

Comments
 (0)