From f8ba8805275109632db1f22ad5040d6c3ec33f9f Mon Sep 17 00:00:00 2001 From: Anastasia Kostryukova Date: Fri, 18 Apr 2025 17:02:09 +0300 Subject: [PATCH 1/6] Delete StringBuilder/StringBuffer from fields --- dev-support/pmd/pmd-ruleset.xml | 1 + .../stream/DirstreamServerHandler.java | 3 +- .../TestOmRatisSnapshotProvider.java | 16 ++++-- .../admin/nssummary/DiskUsageSubCommand.java | 3 +- .../nssummary/FileSizeDistSubCommand.java | 3 +- .../admin/nssummary/QuotaUsageSubCommand.java | 3 +- .../admin/nssummary/SummarySubCommand.java | 3 +- .../admin/om/GetServiceRolesSubcommand.java | 3 +- .../admin/scm/GetScmRatisRolesSubcommand.java | 3 +- .../ozone/utils/FormattingCLIUtils.java | 49 +++++++++---------- 10 files changed, 44 insertions(+), 43 deletions(-) diff --git a/dev-support/pmd/pmd-ruleset.xml b/dev-support/pmd/pmd-ruleset.xml index 5e7f2db92aaf..1bdb2be45a51 100644 --- a/dev-support/pmd/pmd-ruleset.xml +++ b/dev-support/pmd/pmd-ruleset.xml @@ -26,6 +26,7 @@ PMD Ruleset for Apache Ozone + diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java index 9288e6dd4ca6..7d13d9cd631e 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java @@ -46,8 +46,6 @@ public class DirstreamServerHandler extends ChannelInboundHandlerAdapter { public static final String END_MARKER = "0 END"; - private final StringBuilder id = new StringBuilder(); - private StreamingSource source; private boolean headerProcessed = false; @@ -59,6 +57,7 @@ public DirstreamServerHandler(StreamingSource source) { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + final StringBuilder id = new StringBuilder(); if (!headerProcessed) { ByteBuf buffer = (ByteBuf) msg; int eolPosition = buffer.forEachByte(ByteProcessor.FIND_LF) - buffer diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java index dac7264d9d9e..9ae3e2be5aa4 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java @@ -42,6 +42,7 @@ import org.apache.hadoop.ozone.OzoneConsts; import org.apache.hadoop.ozone.om.helpers.OMNodeDetails; import org.apache.hadoop.security.authentication.client.AuthenticationException; +import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -60,7 +61,6 @@ public class TestOmRatisSnapshotProvider { "Content-Disposition: form-data; name=\"" + OzoneConsts.OZONE_DB_CHECKPOINT_REQUEST_TO_EXCLUDE_SST + "[]\"" + CR_NL + CR_NL; - private StringBuilder sb; private File targetFile; @BeforeEach @@ -79,16 +79,13 @@ public void setup(@TempDir File snapshotDir, omRatisSnapshotProvider = new OmRatisSnapshotProvider(snapshotDir, peerNodesMap, httpPolicy, false, connectionFactory); - - sb = new StringBuilder(); - sb.append("--").append(MULTIPART_FORM_DATA_BOUNDARY).append(CR_NL); - sb.append(CONTENT_DISPOSITION); } @Test public void testDownloadSnapshot() throws IOException, AuthenticationException { URL omCheckpointUrl = mock(URL.class); + StringBuilder sb = getStringBuilder(); when(leader.getOMDBCheckpointEndpointUrl(anyBoolean(), anyBoolean())) .thenReturn(omCheckpointUrl); @@ -117,6 +114,7 @@ public void testWriteFormDataWithSstFile() throws IOException { String fileName = "file1.sst"; sstFiles.add(fileName); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + StringBuilder sb = getStringBuilder(); when(connection.getOutputStream()).thenReturn(outputStream); @@ -132,6 +130,7 @@ public void testWriteFormDataWithSstFile() throws IOException { public void testWriteFormDataWithoutSstFile() throws IOException { HttpURLConnection connection = mock(HttpURLConnection.class); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + StringBuilder sb = getStringBuilder(); when(connection.getOutputStream()).thenReturn(outputStream); OmRatisSnapshotProvider.writeFormData(connection, new ArrayList<>()); @@ -141,4 +140,11 @@ public void testWriteFormDataWithoutSstFile() throws IOException { new String(outputStream.toByteArray(), StandardCharsets.UTF_8)); } + private static StringBuilder getStringBuilder() { + StringBuilder sb = new StringBuilder(); + sb.append("--").append(MULTIPART_FORM_DATA_BOUNDARY).append(CR_NL); + sb.append(CONTENT_DISPOSITION); + return sb; + } + } diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java index e2b889ce935d..682a511403d6 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java @@ -79,14 +79,13 @@ public class DiskUsageSubCommand implements Callable { private static final int DU_INDENT = 12; private static final int PATH_INDENT = 27; - private StringBuffer url = new StringBuffer(); - @Override public Void call() throws Exception { if (path == null || path.isEmpty()) { printEmptyPathRequest(); return null; } + StringBuffer url = new StringBuffer(); url.append(parent.getReconWebAddress()).append(ENDPOINT); String response = makeHttpCall(url, parseInputPath(path), listFiles, diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java index c06dcefd7173..4b5fcdb488fd 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java @@ -52,14 +52,13 @@ public class FileSizeDistSubCommand implements Callable { private static final String ENDPOINT = "/api/v1/namespace/dist"; - private StringBuffer url = new StringBuffer(); - @Override public Void call() throws Exception { if (path == null || path.isEmpty()) { printEmptyPathRequest(); return null; } + StringBuffer url = new StringBuffer(); url.append(parent.getReconWebAddress()).append(ENDPOINT); printNewLines(1); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java index 748acd0a036f..e9641b59c5b7 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java @@ -53,14 +53,13 @@ public class QuotaUsageSubCommand implements Callable { private static final String ENDPOINT = "/api/v1/namespace/quota"; - private StringBuffer url = new StringBuffer(); - @Override public Void call() throws Exception { if (path == null || path.isEmpty()) { printEmptyPathRequest(); return null; } + StringBuffer url = new StringBuffer(); url.append(parent.getReconWebAddress()).append(ENDPOINT); printNewLines(1); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java index 491337d7f862..f9ee8cd34d32 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java @@ -52,14 +52,13 @@ public class SummarySubCommand implements Callable { private static final String ENDPOINT = "/api/v1/namespace/summary"; - private StringBuffer url = new StringBuffer(); - @Override public Void call() throws Exception { if (path == null || path.isEmpty()) { printEmptyPathRequest(); return null; } + StringBuffer url = new StringBuffer(); url.append(parent.getReconWebAddress()).append(ENDPOINT); printNewLines(1); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java index 8518567ef446..63a481f900ed 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java @@ -87,7 +87,8 @@ public Void call() throws Exception { omRoleInfo.getNodeId(), omRoleInfo.getServerRole()}); } } - System.out.println(formattingCLIUtils.render()); + StringBuilder join = new StringBuilder(); + System.out.println(formattingCLIUtils.render(join)); } else { printOmServerRoles(ozoneManagerClient.getServiceList()); } diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java index da3076306d70..a43622bc5073 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java @@ -79,7 +79,8 @@ public void execute(ScmClient scmClient) throws IOException { } formattingCLIUtils.addLine(roleItems); } - System.out.println(formattingCLIUtils.render()); + StringBuilder join = new StringBuilder(); + System.out.println(formattingCLIUtils.render(join)); } else { for (String role: peerRoles) { System.out.println(role); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java index bcb55e7c6581..cd37827145e0 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java @@ -44,8 +44,6 @@ public final class FormattingCLIUtils { private String title; /** Last processed row type. */ private TableRowType lastTableRowType; - /** StringBuilder object used to concatenate strings. */ - private StringBuilder join; /** An ordered Map that holds each row of data. */ private List tableRows; /** Maps the maximum length of each column. */ @@ -64,7 +62,6 @@ public FormattingCLIUtils(String title) { * Initialize the data. */ private void init() { - this.join = new StringBuilder(); this.tableRows = new ArrayList<>(); this.maxColMap = new HashMap<>(); } @@ -122,7 +119,7 @@ private FormattingCLIUtils appendRows(TableRowType tableRowType, Object[] object /** * Builds the string for the row of the table title. */ - private void buildTitle() { + private void buildTitle(StringBuilder join) { if (this.title != null) { int maxTitleSize = 0; for (Integer maxColSize : this.maxColMap.values()) { @@ -132,11 +129,11 @@ private void buildTitle() { if (this.title.length() > maxTitleSize) { this.title = this.title.substring(0, maxTitleSize); } - this.join.append("+"); + join.append("+"); for (int i = 0; i < maxTitleSize + 2; i++) { - this.join.append("-"); + join.append("-"); } - this.join.append("+\n") + join.append("+\n") .append("|") .append(StrUtils.center(this.title, maxTitleSize + 2, ' ')) .append("|\n"); @@ -147,22 +144,22 @@ private void buildTitle() { /** * Build the table, first build the title, and then walk through each row of data to build. */ - private void buildTable() { - this.buildTitle(); + private void buildTable(StringBuilder join) { + this.buildTitle(join); for (int i = 0, len = this.tableRows.size(); i < len; i++) { List data = this.tableRows.get(i).data; switch (this.tableRows.get(i).tableRowType) { case HEADER: if (this.lastTableRowType != TableRowType.HEADER) { - this.buildRowBorder(data); + this.buildRowBorder(data, join); } - this.buildRowLine(data); - this.buildRowBorder(data); + this.buildRowLine(data, join); + this.buildRowBorder(data, join); break; case LINE: - this.buildRowLine(data); + this.buildRowLine(data, join); if (i == len - 1) { - this.buildRowBorder(data); + this.buildRowBorder(data, join); } break; default: @@ -175,37 +172,37 @@ private void buildTable() { * Method to build a border row. * @param data dataLine */ - private void buildRowBorder(List data) { - this.join.append("+"); + private void buildRowBorder(List data, StringBuilder join) { + join.append("+"); for (int i = 0, len = data.size(); i < len; i++) { for (int j = 0; j < this.maxColMap.get(i) + 2; j++) { - this.join.append("-"); + join.append("-"); } - this.join.append("+"); + join.append("+"); } - this.join.append("\n"); + join.append("\n"); } /** * A way to build rows of data. * @param data dataLine */ - private void buildRowLine(List data) { - this.join.append("|"); + private void buildRowLine(List data, StringBuilder join) { + join.append("|"); for (int i = 0, len = data.size(); i < len; i++) { - this.join.append(StrUtils.center(data.get(i), this.maxColMap.get(i) + 2, ' ')) + join.append(StrUtils.center(data.get(i), this.maxColMap.get(i) + 2, ' ')) .append("|"); } - this.join.append("\n"); + join.append("\n"); } /** * Rendering is born as a result. * @return ASCII string of Table */ - public String render() { - this.buildTable(); - return this.join.toString(); + public String render(StringBuilder join) { + this.buildTable(join); + return join.toString(); } /** From 6b43ece74552f139f32a259d4d5566e5f85ad57f Mon Sep 17 00:00:00 2001 From: Anastasia Kostryukova Date: Mon, 21 Apr 2025 11:20:53 +0300 Subject: [PATCH 2/6] HDDS-12861. Delete StringBuilder/StringBuffer from fields --- .../stream/DirstreamClientHandler.java | 1 + .../hadoop/ozone/audit/AuditLogger.java | 1 + .../TestOmRatisSnapshotProvider.java | 1 - .../admin/om/GetServiceRolesSubcommand.java | 3 +- .../admin/scm/GetScmRatisRolesSubcommand.java | 3 +- .../ozone/utils/FormattingCLIUtils.java | 40 ++++++++++--------- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java index d8f8b416bad2..c76b5d2e69b5 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java @@ -42,6 +42,7 @@ * ... (binary content) * END 0 */ +@SuppressWarnings(value = "PMD.AvoidStringBufferField") public class DirstreamClientHandler extends ChannelInboundHandlerAdapter { private final StreamingDestination destination; diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/audit/AuditLogger.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/audit/AuditLogger.java index 28ab88440bdd..53bed47203f6 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/audit/AuditLogger.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/audit/AuditLogger.java @@ -146,6 +146,7 @@ private String getLowerCaseOp(String op) { /** * Utility class for building performance log strings. */ + @SuppressWarnings(value = "PMD.AvoidStringBufferField") public static class PerformanceStringBuilder { private final StringBuilder builder = new StringBuilder(128).append('{'); /** diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java index 9ae3e2be5aa4..d2a8f92f29f1 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis_snapshot/TestOmRatisSnapshotProvider.java @@ -42,7 +42,6 @@ import org.apache.hadoop.ozone.OzoneConsts; import org.apache.hadoop.ozone.om.helpers.OMNodeDetails; import org.apache.hadoop.security.authentication.client.AuthenticationException; -import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java index 63a481f900ed..8518567ef446 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/GetServiceRolesSubcommand.java @@ -87,8 +87,7 @@ public Void call() throws Exception { omRoleInfo.getNodeId(), omRoleInfo.getServerRole()}); } } - StringBuilder join = new StringBuilder(); - System.out.println(formattingCLIUtils.render(join)); + System.out.println(formattingCLIUtils.render()); } else { printOmServerRoles(ozoneManagerClient.getServiceList()); } diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java index a43622bc5073..da3076306d70 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/GetScmRatisRolesSubcommand.java @@ -79,8 +79,7 @@ public void execute(ScmClient scmClient) throws IOException { } formattingCLIUtils.addLine(roleItems); } - StringBuilder join = new StringBuilder(); - System.out.println(formattingCLIUtils.render(join)); + System.out.println(formattingCLIUtils.render()); } else { for (String role: peerRoles) { System.out.println(role); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java index cd37827145e0..d0b751522f70 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java @@ -39,11 +39,14 @@ * | bigdata-ozone-online31 | om31 | LEADER | * +---------------------------------+---------+----------+ */ +@SuppressWarnings(value = "PMD.AvoidStringBufferField") public final class FormattingCLIUtils { /** Table title. */ private String title; /** Last processed row type. */ private TableRowType lastTableRowType; + /** StringBuilder object used to concatenate strings. */ + private StringBuilder join; /** An ordered Map that holds each row of data. */ private List tableRows; /** Maps the maximum length of each column. */ @@ -62,6 +65,7 @@ public FormattingCLIUtils(String title) { * Initialize the data. */ private void init() { + this.join = new StringBuilder(); this.tableRows = new ArrayList<>(); this.maxColMap = new HashMap<>(); } @@ -119,7 +123,7 @@ private FormattingCLIUtils appendRows(TableRowType tableRowType, Object[] object /** * Builds the string for the row of the table title. */ - private void buildTitle(StringBuilder join) { + private void buildTitle() { if (this.title != null) { int maxTitleSize = 0; for (Integer maxColSize : this.maxColMap.values()) { @@ -129,11 +133,11 @@ private void buildTitle(StringBuilder join) { if (this.title.length() > maxTitleSize) { this.title = this.title.substring(0, maxTitleSize); } - join.append("+"); + this.join.append("+"); for (int i = 0; i < maxTitleSize + 2; i++) { - join.append("-"); + this.join.append("-"); } - join.append("+\n") + this.join.append("+\n") .append("|") .append(StrUtils.center(this.title, maxTitleSize + 2, ' ')) .append("|\n"); @@ -144,8 +148,8 @@ private void buildTitle(StringBuilder join) { /** * Build the table, first build the title, and then walk through each row of data to build. */ - private void buildTable(StringBuilder join) { - this.buildTitle(join); + private void buildTable() { + this.buildTitle(); for (int i = 0, len = this.tableRows.size(); i < len; i++) { List data = this.tableRows.get(i).data; switch (this.tableRows.get(i).tableRowType) { @@ -172,37 +176,37 @@ private void buildTable(StringBuilder join) { * Method to build a border row. * @param data dataLine */ - private void buildRowBorder(List data, StringBuilder join) { - join.append("+"); + private void buildRowBorder(List data) { + this.join.append("+"); for (int i = 0, len = data.size(); i < len; i++) { for (int j = 0; j < this.maxColMap.get(i) + 2; j++) { - join.append("-"); + this.join.append("-"); } - join.append("+"); + this.join.append("+"); } - join.append("\n"); + this.join.append("\n"); } /** * A way to build rows of data. * @param data dataLine */ - private void buildRowLine(List data, StringBuilder join) { - join.append("|"); + private void buildRowLine(List data) { + this.join.append("|"); for (int i = 0, len = data.size(); i < len; i++) { - join.append(StrUtils.center(data.get(i), this.maxColMap.get(i) + 2, ' ')) + this.join.append(StrUtils.center(data.get(i), this.maxColMap.get(i) + 2, ' ')) .append("|"); } - join.append("\n"); + this.join.append("\n"); } /** * Rendering is born as a result. * @return ASCII string of Table */ - public String render(StringBuilder join) { - this.buildTable(join); - return join.toString(); + public String render() { + this.buildTable(); + return this.join.toString(); } /** From fac267bea209fdb63b06e2d27b9b417ca53ea63e Mon Sep 17 00:00:00 2001 From: Anastasia Kostryukova Date: Mon, 21 Apr 2025 11:43:51 +0300 Subject: [PATCH 3/6] Fix errors --- .../apache/hadoop/ozone/utils/FormattingCLIUtils.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java index d0b751522f70..143973ff17b5 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java @@ -155,15 +155,15 @@ private void buildTable() { switch (this.tableRows.get(i).tableRowType) { case HEADER: if (this.lastTableRowType != TableRowType.HEADER) { - this.buildRowBorder(data, join); + this.buildRowBorder(data); } - this.buildRowLine(data, join); - this.buildRowBorder(data, join); + this.buildRowLine(data); + this.buildRowBorder(data); break; case LINE: - this.buildRowLine(data, join); + this.buildRowLine(data); if (i == len - 1) { - this.buildRowBorder(data, join); + this.buildRowBorder(data); } break; default: From 1557d77cae972f75dc1ea5594c456ef91ac0bb2e Mon Sep 17 00:00:00 2001 From: Anastasia Kostryukova Date: Tue, 22 Apr 2025 10:49:17 +0300 Subject: [PATCH 4/6] Replace StringBuilder with String --- .../container/stream/DirstreamClientHandler.java | 15 ++++++--------- .../container/stream/DirstreamServerHandler.java | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java index c76b5d2e69b5..f65818374a18 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java @@ -42,12 +42,11 @@ * ... (binary content) * END 0 */ -@SuppressWarnings(value = "PMD.AvoidStringBufferField") public class DirstreamClientHandler extends ChannelInboundHandlerAdapter { private final StreamingDestination destination; private boolean headerMode = true; - private StringBuilder currentFileName = new StringBuilder(); + private String currentFileName; private RandomAccessFile destFile; private FileChannel destFileChannel; @@ -77,11 +76,10 @@ public void doRead(ChannelHandlerContext ctx, ByteBuf buffer) if (eolPosition > 0) { headerMode = false; final ByteBuf name = buffer.readBytes(eolPosition); - currentFileName.append(name - .toString(StandardCharsets.UTF_8)); + currentFileName += name.toString(StandardCharsets.UTF_8); name.release(); buffer.skipBytes(1); - String[] parts = currentFileName.toString().split(" ", 2); + String[] parts = currentFileName.split(" ", 2); remaining = Long.parseLong(parts[0]); Path destFilePath = destination.mapToDestination(parts[1]); final Path destfileParent = destFilePath.getParent(); @@ -95,8 +93,7 @@ public void doRead(ChannelHandlerContext ctx, ByteBuf buffer) destFileChannel = this.destFile.getChannel(); } else { - currentFileName - .append(buffer.toString(StandardCharsets.UTF_8)); + currentFileName += buffer.toString(StandardCharsets.UTF_8); } } if (!headerMode) { @@ -106,7 +103,7 @@ public void doRead(ChannelHandlerContext ctx, ByteBuf buffer) buffer.readBytes(destFileChannel, readableBytes); } else { remaining -= buffer.readBytes(destFileChannel, (int) remaining); - currentFileName = new StringBuilder(); + currentFileName = ""; headerMode = true; destFile.close(); if (readableBytes > 0) { @@ -143,6 +140,6 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { } public String getCurrentFileName() { - return currentFileName.toString(); + return currentFileName; } } diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java index 7d13d9cd631e..3f172f6f41da 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamServerHandler.java @@ -57,7 +57,7 @@ public DirstreamServerHandler(StreamingSource source) { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { - final StringBuilder id = new StringBuilder(); + StringBuilder id = new StringBuilder(); if (!headerProcessed) { ByteBuf buffer = (ByteBuf) msg; int eolPosition = buffer.forEachByte(ByteProcessor.FIND_LF) - buffer From f1772cf9b36234b3e73d213078f2fe8b67e5cff7 Mon Sep 17 00:00:00 2001 From: Anastasia Kostryukova Date: Tue, 22 Apr 2025 15:01:52 +0300 Subject: [PATCH 5/6] Fix String null --- .../hadoop/ozone/container/stream/DirstreamClientHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java index f65818374a18..2ad37dde9b53 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java @@ -46,7 +46,7 @@ public class DirstreamClientHandler extends ChannelInboundHandlerAdapter { private final StreamingDestination destination; private boolean headerMode = true; - private String currentFileName; + private String currentFileName = ""; private RandomAccessFile destFile; private FileChannel destFileChannel; From 76850ad6633f5904d14f94b8ff4979c784614187 Mon Sep 17 00:00:00 2001 From: Anastasia Kostryukova Date: Tue, 22 Apr 2025 18:00:55 +0300 Subject: [PATCH 6/6] StringBuffer replaced with StringBuilder --- .../hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java | 2 +- .../hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java | 2 +- .../hadoop/ozone/admin/nssummary/NSSummaryCLIUtils.java | 4 ++-- .../hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java | 2 +- .../hadoop/ozone/admin/nssummary/SummarySubCommand.java | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java index 682a511403d6..119ecb603fef 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/DiskUsageSubCommand.java @@ -85,7 +85,7 @@ public Void call() throws Exception { printEmptyPathRequest(); return null; } - StringBuffer url = new StringBuffer(); + StringBuilder url = new StringBuilder(); url.append(parent.getReconWebAddress()).append(ENDPOINT); String response = makeHttpCall(url, parseInputPath(path), listFiles, diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java index 4b5fcdb488fd..fb9d99a42d7b 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/FileSizeDistSubCommand.java @@ -58,7 +58,7 @@ public Void call() throws Exception { printEmptyPathRequest(); return null; } - StringBuffer url = new StringBuffer(); + StringBuilder url = new StringBuilder(); url.append(parent.getReconWebAddress()).append(ENDPOINT); printNewLines(1); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryCLIUtils.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryCLIUtils.java index dc71cd4836fb..5c6d744a4522 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryCLIUtils.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/NSSummaryCLIUtils.java @@ -43,14 +43,14 @@ private NSSummaryCLIUtils() { private static final String OFS_PREFIX = "ofs://"; - public static String makeHttpCall(StringBuffer url, String path, + public static String makeHttpCall(StringBuilder url, String path, boolean isSpnegoEnabled, ConfigurationSource conf) throws Exception { return makeHttpCall(url, path, false, false, isSpnegoEnabled, conf); } - public static String makeHttpCall(StringBuffer url, String path, + public static String makeHttpCall(StringBuilder url, String path, boolean listFile, boolean withReplica, boolean isSpnegoEnabled, ConfigurationSource conf) diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java index e9641b59c5b7..da223ba0ffce 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/QuotaUsageSubCommand.java @@ -59,7 +59,7 @@ public Void call() throws Exception { printEmptyPathRequest(); return null; } - StringBuffer url = new StringBuffer(); + StringBuilder url = new StringBuilder(); url.append(parent.getReconWebAddress()).append(ENDPOINT); printNewLines(1); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java index f9ee8cd34d32..0e850397248f 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/nssummary/SummarySubCommand.java @@ -58,7 +58,7 @@ public Void call() throws Exception { printEmptyPathRequest(); return null; } - StringBuffer url = new StringBuffer(); + StringBuilder url = new StringBuilder(); url.append(parent.getReconWebAddress()).append(ENDPOINT); printNewLines(1);