From d081672cf3046193f885842d78ad74def0eba239 Mon Sep 17 00:00:00 2001 From: caoliang <245623257@qq.com> Date: Thu, 11 Jan 2024 11:52:47 +0800 Subject: [PATCH] Fix multiple concurrent import label duplication issues --- .../writer/doriswriter/DorisStreamLoadObserver.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java b/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java index 6f7e9a5a..e1f6e0ee 100644 --- a/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java +++ b/doriswriter/src/main/java/com/alibaba/datax/plugin/writer/doriswriter/DorisStreamLoadObserver.java @@ -22,6 +22,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -97,7 +98,7 @@ public class DorisStreamLoadObserver { "could not get the final state of label[%s].\n", label), null); } Map result = (Map)JSON.parse(EntityUtils.toString(respEntity)); - String labelState = (String)result.get("state"); + String labelState = (String)result.get("data"); if (null == labelState) { throw new IOException(String.format("Failed to flush data to Doris, Error " + "could not get the final state of label[%s]. response[%s]\n", label, EntityUtils.toString(respEntity)), null); @@ -210,12 +211,10 @@ public class DorisStreamLoadObserver { private String getLoadHost() { List hostList = options.getLoadUrlList(); - long tmp = pos + hostList.size(); - for (; pos < tmp; pos++) { - String host = new StringBuilder("http://").append(hostList.get((int) (pos % hostList.size()))).toString(); - if (checkConnection(host)) { - return host; - } + Collections.shuffle(hostList); + String host = new StringBuilder("http://").append(hostList.get((0))).toString(); + if (checkConnection(host)){ + return host; } return null; }