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/DirstreamClientHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/stream/DirstreamClientHandler.java index d8f8b416bad2..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 StringBuilder currentFileName = new StringBuilder(); + private String currentFileName = ""; private RandomAccessFile destFile; private FileChannel destFileChannel; @@ -76,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(); @@ -94,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) { @@ -105,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) { @@ -142,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 9288e6dd4ca6..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 @@ -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 { + StringBuilder id = new StringBuilder(); if (!headerProcessed) { ByteBuf buffer = (ByteBuf) msg; int eolPosition = buffer.forEachByte(ByteProcessor.FIND_LF) - buffer 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 dac7264d9d9e..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 @@ -60,7 +60,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 +78,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 +113,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 +129,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 +139,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..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 @@ -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; } + 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 c06dcefd7173..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 @@ -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; } + 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 748acd0a036f..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 @@ -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; } + 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 491337d7f862..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 @@ -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; } + 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/utils/FormattingCLIUtils.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/utils/FormattingCLIUtils.java index bcb55e7c6581..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 @@ -39,6 +39,7 @@ * | bigdata-ozone-online31 | om31 | LEADER | * +---------------------------------+---------+----------+ */ +@SuppressWarnings(value = "PMD.AvoidStringBufferField") public final class FormattingCLIUtils { /** Table title. */ private String title;