From 08c68b5348fedd7cfbce569dcee9266dc13d28f0 Mon Sep 17 00:00:00 2001 From: pyzhou Date: Fri, 12 Nov 2021 09:56:22 +0800 Subject: [PATCH] fix(TDI-46992): ResumeUtil throw BufferOverflowException (#4771) * fix(TDI-46992): ResumeUtil throw BufferOverflowException * replace variable --- .../resources/java/routines/system/ResumeUtil.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/main/plugins/org.talend.librariesmanager/resources/java/routines/system/ResumeUtil.java b/main/plugins/org.talend.librariesmanager/resources/java/routines/system/ResumeUtil.java index 7b19a4414b..38f3d28bf2 100644 --- a/main/plugins/org.talend.librariesmanager/resources/java/routines/system/ResumeUtil.java +++ b/main/plugins/org.talend.librariesmanager/resources/java/routines/system/ResumeUtil.java @@ -502,10 +502,12 @@ public class ResumeUtil { // sun.security.action.GetPropertyAction("line.separator")); private String lineSeparator = System.getProperty("line.separator"); + + private int capibility = 2<<14; //32k public SimpleCsvWriter(FileChannel channel) { this.channel = channel; - buf = ByteBuffer.allocate(2<<14);//32k buffer size + buf = ByteBuffer.allocate(capibility); } /** @@ -530,8 +532,15 @@ public class ResumeUtil { } else {// support double mode content = replace(content, "" + TextQualifier, "" + TextQualifier + TextQualifier); } + + byte[] contentByte = content.getBytes(); + if(contentByte.length > capibility - 1024) { + flush(); + capibility = contentByte.length * 2; + buf = ByteBuffer.allocate(capibility); + } - buf.put(content.getBytes()); + buf.put(contentByte); buf.put(TextQualifier.getBytes());