This is an automated email from the ASF dual-hosted git repository.
apkhmv pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 960f55fa72 IGNITE-21650 Extend PMD ruleset to cover performance and
multithreading issues (#3416)
960f55fa72 is described below
commit 960f55fa725bec88a563588c848b495671400635
Author: Viacheslav Blinov <[email protected]>
AuthorDate: Thu Mar 14 19:59:48 2024 +0300
IGNITE-21650 Extend PMD ruleset to cover performance and multithreading
issues (#3416)
* Add performance-related PMD rules to ruleset
* Add multithreading-related PMD rules to ruleset
---
check-rules/pmd-rules.xml | 37 ++++++++++++++++++++++
.../cli/call/cluster/unit/DeployUnitClient.java | 4 +--
.../ignite/internal/cli/config/ini/IniFile.java | 4 +--
.../ignite/internal/cli/config/ini/IniParser.java | 4 +--
.../core/repl/executor/IgnitePicocliCommands.java | 6 ++--
.../internal/cli/commands/flow/FlowTest.java | 1 +
.../apache/ignite/client/fakes/FakeSession.java | 8 ++---
.../internal/lang/IgniteStringFormatter.java | 8 +++--
.../tostring/IgniteToStringBuilderSelfTest.java | 26 +++++++--------
.../internal/network/file/ChunkedFileReader.java | 4 +--
.../internal/network/file/ChunkedFileWriter.java | 4 +--
.../internal/jdbc/ConnectionPropertiesImpl.java | 8 ++---
.../metrics/exporters/jmx/MetricSetMbean.java | 2 +-
...TransferableObjectProcessorIncrementalTest.java | 2 +-
.../network/ssl/SslContextProviderTest.java | 8 +++--
.../internal/pagememory/persistence/FastCrc.java | 4 +--
.../persistence/RobinHoodBackwardShiftHashMap.java | 14 ++++----
.../ignite/internal/pagememory/tree/BplusTree.java | 11 +++----
.../raft/client/TopologyAwareRaftGroupService.java | 2 +-
.../sql/engine/exec/exp/ExpressionFactoryImpl.java | 5 ++-
.../sql/engine/exec/mapping/FragmentPrinter.java | 2 +-
.../sql/engine/exec/mapping/MappingTestRunner.java | 30 +++++++++---------
.../internal/worker/CriticalWorkerWatchdog.java | 33 +++++++++----------
23 files changed, 133 insertions(+), 94 deletions(-)
diff --git a/check-rules/pmd-rules.xml b/check-rules/pmd-rules.xml
index 381d50e159..2f1627fca7 100644
--- a/check-rules/pmd-rules.xml
+++ b/check-rules/pmd-rules.xml
@@ -82,6 +82,7 @@
<rule ref="category/java/codestyle.xml/UnnecessarySemicolon" />
<rule ref="category/java/codestyle.xml/UseDiamondOperator" />
+
<!-- TODO: https://issues.apache.org/jira/browse/IGNITE-21652 -->
<!-- <rule ref="category/java/codestyle.xml/IdenticalCatchBranches"
/>-->
<!-- <rule
ref="category/java/codestyle.xml/UnnecessaryFullyQualifiedName" />-->
@@ -99,11 +100,44 @@
<!-- <rule ref="category/java/codestyle.xml/ConfusingTernary" />-->
<!-- <rule ref="category/java/codestyle.xml/PrematureDeclaration"
/>-->
+ <rule ref="category/java/performance.xml/AppendCharacterWithChar" />
+ <rule ref="category/java/performance.xml/AvoidArrayLoops" />
+ <rule ref="category/java/performance.xml/AvoidCalendarDateCreation" />
+ <rule ref="category/java/performance.xml/InefficientEmptyStringCheck" />
+ <rule ref="category/java/performance.xml/StringInstantiation" />
+ <rule ref="category/java/performance.xml/StringToString" />
+ <rule ref="category/java/performance.xml/UseArrayListInsteadOfVector" />
+ <rule ref="category/java/performance.xml/UseArraysAsList" />
+ <rule ref="category/java/performance.xml/UseIndexOfChar" />
+ <rule
ref="category/java/performance.xml/UseIOStreamsWithApacheCommonsFileItem" />
+ <rule ref="category/java/performance.xml/UselessStringValueOf" />
+ <rule ref="category/java/performance.xml/UseStringBufferForStringAppends"
/>
+ <rule ref="category/java/performance.xml/UseStringBufferLength" />
+ <rule ref="category/java/performance.xml/AvoidFileStream" />
+ <rule ref="category/java/performance.xml/OptimizableToArrayCall" />
+ <rule ref="category/java/performance.xml/ConsecutiveAppendsShouldReuse" />
+ <rule ref="category/java/performance.xml/InefficientStringBuffering" />
+ <rule ref="category/java/performance.xml/BigIntegerInstantiation">
+ <properties>
+ <!-- Ignore in tests -->
+ <property name="violationSuppressXPath"
value="//ClassOrInterfaceDeclaration['.*/src/test/java/.*']"/>
+ </properties>
+ </rule>
+
+
+ <rule ref="category/java/multithreading.xml/AvoidThreadGroup" />
+ <rule ref="category/java/multithreading.xml/DontCallThreadRun" />
+ <rule ref="category/java/multithreading.xml/DoubleCheckedLocking" />
+ <rule ref="category/java/multithreading.xml/NonThreadSafeSingleton" />
+ <rule ref="category/java/multithreading.xml/UnsynchronizedStaticFormatter"
/>
+ <rule ref="category/java/multithreading.xml/UseNotifyAllInsteadOfNotify" />
+
<!--
UnusedPrivateMethod has a known bug which leads to false positive
triggering if
method signature contains generic parameter and\or descendant class is
passed as parameter.
See for details: https://github.com/pmd/pmd/issues/770
+ This was fixed in PMD 7.0.0 so should be returned when we upgrade the
PMD
-->
<!-- <rule ref="category/java/bestpractices.xml/UnusedPrivateMethod"
/>-->
@@ -126,4 +160,7 @@
</properties>
</rule>
+
+ <!-- exclusions -->
+ <exclude-pattern>.*/src/main/java/com/facebook/presto/.*</exclude-pattern>
</ruleset>
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/call/cluster/unit/DeployUnitClient.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/call/cluster/unit/DeployUnitClient.java
index 40ba0feb28..e390e21154 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/call/cluster/unit/DeployUnitClient.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/call/cluster/unit/DeployUnitClient.java
@@ -99,8 +99,8 @@ public class DeployUnitClient {
StringBuilder url = new StringBuilder(apiClient.getBasePath());
url
.append("/management/v1/deployment/units")
- .append("/").append(apiClient.escapeString(unitId))
- .append("/").append(apiClient.escapeString(unitVersion));
+ .append('/').append(apiClient.escapeString(unitId))
+ .append('/').append(apiClient.escapeString(unitVersion));
List<Pair> queryParams = new ArrayList<>();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniFile.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniFile.java
index 977e302dd0..b10b1d011c 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniFile.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniFile.java
@@ -19,11 +19,11 @@ package org.apache.ignite.internal.cli.config.ini;
import java.io.BufferedWriter;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.util.Collection;
import java.util.Map;
import org.apache.ignite.internal.cli.config.exception.ConfigStoringException;
@@ -75,7 +75,7 @@ public class IniFile {
* Store current INI file to FS file.
*/
public void store() {
- try (OutputStream os = new FileOutputStream(file)) {
+ try (OutputStream os = Files.newOutputStream(file.toPath())) {
store(os);
} catch (IOException e) {
throw new ConfigStoringException("Can't store cli config file " +
file.getAbsolutePath(), e);
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniParser.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniParser.java
index 0ecc00dbe3..25606affe1 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniParser.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/config/ini/IniParser.java
@@ -21,11 +21,11 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.nio.file.Files;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Matcher;
@@ -70,7 +70,7 @@ public class IniParser {
* @throws IOException when parsing failed.
*/
public Map<String, IniSection> parse(File file) throws IOException {
- try (FileInputStream input = new FileInputStream(file)) {
+ try (InputStream input = Files.newInputStream(file.toPath())) {
return parse(input);
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
index d31bd5d23e..7a654326b7 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
@@ -126,7 +126,7 @@ public class IgnitePicocliCommands implements
CommandRegistry {
return null;
}
CommandSpec spec = sub.getCommandSpec();
- Help cmdhelp = new picocli.CommandLine.Help(spec);
+ Help cmdhelp = new Help(spec);
List<AttributedString> main = new ArrayList<>();
Map<String, List<AttributedString>> options = new HashMap<>();
String synopsis =
AttributedString.stripAnsi(spec.usageMessage().sectionMap().get("synopsis").render(cmdhelp));
@@ -140,7 +140,7 @@ public class IgnitePicocliCommands implements
CommandRegistry {
val.add(new AttributedString(d));
}
if (o.arity().max() > 0) {
- key += "=" + o.paramLabel();
+ key += "=" + o.paramLabel(); // NOPMD
}
options.put(key, val);
}
@@ -151,7 +151,7 @@ public class IgnitePicocliCommands implements
CommandRegistry {
@Override
public List<String> commandInfo(String command) {
CommandSpec spec = cmd.getSubcommands().get(command).getCommandSpec();
- Help cmdhelp = new picocli.CommandLine.Help(spec);
+ Help cmdhelp = new Help(spec);
String description =
AttributedString.stripAnsi(spec.usageMessage().sectionMap().get("description").render(cmdhelp));
return new ArrayList<>(Arrays.asList(description.split("\\r?\\n")));
}
diff --git
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/flow/FlowTest.java
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/flow/FlowTest.java
index d72613a933..dbbf942662 100644
---
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/flow/FlowTest.java
+++
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/flow/FlowTest.java
@@ -95,6 +95,7 @@ class FlowTest {
}
@BeforeEach
+ @SuppressWarnings("PMD.AvoidFileStream")
public void setup() throws IOException {
input = Files.createTempFile("input", "");
input.toFile().deleteOnExit();
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeSession.java
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeSession.java
index 92dfde0d84..7a87b387a1 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeSession.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeSession.java
@@ -206,10 +206,10 @@ public class FakeSession implements AbstractSession {
sb.append(']');
}
- sb.append(", ").append("defaultPageSize=").append(defaultPageSize);
- sb.append(", ").append("defaultSchema=").append(defaultSchema);
- sb.append(",
").append("defaultQueryTimeout=").append(defaultQueryTimeout);
- sb.append(",
").append("defaultSessionTimeout=").append(defaultSessionTimeout);
+ sb.append(", ").append("defaultPageSize=").append(defaultPageSize)
+ .append(", ").append("defaultSchema=").append(defaultSchema)
+ .append(",
").append("defaultQueryTimeout=").append(defaultQueryTimeout)
+ .append(",
").append("defaultSessionTimeout=").append(defaultSessionTimeout);
sql.lastScript = sb.toString();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteStringFormatter.java
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteStringFormatter.java
index c23c9762c9..acdbf4f037 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteStringFormatter.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteStringFormatter.java
@@ -223,9 +223,11 @@ public final class IgniteStringFormatter {
sbuf.append(s);
} catch (Throwable t) {
- sbuf.append("Failed toString() invocation on an object of type
[cls=" + o.getClass().getName()
- + ", errMsg=" + t.getClass().getName()
- + ", errMsg=" + t.getMessage() + ']');
+ sbuf.append("Failed toString() invocation on an object of type
[cls=")
+ .append(o.getClass().getName())
+ .append(", errMsg=").append(t.getClass().getName())
+ .append(", errMsg=").append(t.getMessage())
+ .append(']');
}
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/tostring/IgniteToStringBuilderSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/tostring/IgniteToStringBuilderSelfTest.java
index 5a77773bfe..3aaf671bc5 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/tostring/IgniteToStringBuilderSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/tostring/IgniteToStringBuilderSelfTest.java
@@ -708,24 +708,22 @@ public class IgniteToStringBuilderSelfTest extends
IgniteAbstractTest {
* @return Manual string.
*/
String toStringManual() {
- StringBuilder buf = new StringBuilder();
+ StringBuilder buf = new StringBuilder()
+ .append(getClass().getSimpleName()).append(" [")
+ .append("id=").append(id).append(", ")
+ .append("uuidVar=").append(uuidVar).append(", ")
+ .append("intVar=").append(intVar).append(", ");
- buf.append(getClass().getSimpleName()).append(" [");
-
- buf.append("id=").append(id).append(", ");
- buf.append("uuidVar=").append(uuidVar).append(", ");
- buf.append("intVar=").append(intVar).append(", ");
if (S.includeSensitive()) {
buf.append("longVar=").append(longVar).append(", ");
}
- buf.append("boolVar=").append(boolVar).append(", ");
- buf.append("byteVar=").append(byteVar).append(", ");
- buf.append("name=").append(name).append(", ");
- buf.append("finalInt=").append(finalInt).append(", ");
- buf.append("strMap=").append(strMap).append(", ");
- buf.append("strListIncl=").append(strListIncl);
-
- buf.append("]");
+ buf.append("boolVar=").append(boolVar).append(", ")
+ .append("byteVar=").append(byteVar).append(", ")
+ .append("name=").append(name).append(", ")
+ .append("finalInt=").append(finalInt).append(", ")
+ .append("strMap=").append(strMap).append(", ")
+ .append("strListIncl=").append(strListIncl)
+ .append(']');
return buf.toString();
}
diff --git
a/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileReader.java
b/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileReader.java
index 2513310af8..88cef4c2ce 100644
---
a/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileReader.java
+++
b/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileReader.java
@@ -19,9 +19,9 @@ package org.apache.ignite.internal.network.file;
import java.io.BufferedInputStream;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.nio.file.Files;
/**
* Chunked file reader. Reads the file in chunks. Each chunk has a fixed size.
The last chunk may be smaller than the chunk size. If the
@@ -57,7 +57,7 @@ class ChunkedFileReader implements AutoCloseable {
* @throws FileNotFoundException If the file does not exist.
*/
static ChunkedFileReader open(File file, int chunkSize) throws IOException
{
- return new ChunkedFileReader(chunkSize, new BufferedInputStream(new
FileInputStream(file)));
+ return new ChunkedFileReader(chunkSize, new
BufferedInputStream(Files.newInputStream(file.toPath())));
}
/**
diff --git
a/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileWriter.java
b/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileWriter.java
index 505bf6178a..30653709a7 100644
---
a/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileWriter.java
+++
b/modules/file-transfer/src/main/java/org/apache/ignite/internal/network/file/ChunkedFileWriter.java
@@ -20,8 +20,8 @@ package org.apache.ignite.internal.network.file;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import
org.apache.ignite.internal.network.file.exception.FileValidationException;
@@ -59,7 +59,7 @@ class ChunkedFileWriter implements AutoCloseable {
* @throws FileNotFoundException If the file is not found.
*/
static ChunkedFileWriter open(File file, long expectedFileLength) throws
IOException {
- return new ChunkedFileWriter(new BufferedOutputStream(new
FileOutputStream(file)), expectedFileLength);
+ return new ChunkedFileWriter(new
BufferedOutputStream(Files.newOutputStream(file.toPath())), expectedFileLength);
}
/**
diff --git
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
index 28644ea8f2..a34499b9c1 100644
---
a/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
+++
b/modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc/ConnectionPropertiesImpl.java
@@ -394,9 +394,9 @@ public class ConnectionPropertiesImpl implements
ConnectionProperties, Serializa
*/
private void parseUrl0(String url, Properties props) throws SQLException {
// Determine mode - semicolon or ampersand.
- int semicolonPos = url.indexOf(";");
- int slashPos = url.indexOf("/");
- int queryPos = url.indexOf("?");
+ int semicolonPos = url.indexOf(';');
+ int slashPos = url.indexOf('/');
+ int queryPos = url.indexOf('?');
boolean semicolonMode;
@@ -553,7 +553,7 @@ public class ConnectionPropertiesImpl implements
ConnectionProperties, Serializa
insideBrace = true;
}
} else {
- val += delimChar + token;
+ val += delimChar + token; // NOPMD
}
if (val.endsWith("}")) {
diff --git
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/MetricSetMbean.java
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/MetricSetMbean.java
index 86da7a92ac..95486794e1 100644
---
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/MetricSetMbean.java
+++
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/MetricSetMbean.java
@@ -137,7 +137,7 @@ public class MetricSetMbean implements DynamicMBean {
return new MBeanInfo(
MetricManager.class.getName(),
metricSet.name(),
- attrs.toArray(new MBeanAttributeInfo[attrs.size()]),
+ attrs.toArray(new MBeanAttributeInfo[0]),
null,
null,
null);
diff --git
a/modules/network/src/test/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessorIncrementalTest.java
b/modules/network/src/test/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessorIncrementalTest.java
index c81b5fc654..a8e6542ef0 100644
---
a/modules/network/src/test/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessorIncrementalTest.java
+++
b/modules/network/src/test/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessorIncrementalTest.java
@@ -246,7 +246,7 @@ public class TransferableObjectProcessorIncrementalTest
extends BaseIgniteAbstra
String line;
while ((line = bufferedReader.readLine()) != null) {
- builder.append(line).append("\n");
+ builder.append(line).append('\n');
}
return builder.toString();
diff --git
a/modules/network/src/test/java/org/apache/ignite/internal/network/ssl/SslContextProviderTest.java
b/modules/network/src/test/java/org/apache/ignite/internal/network/ssl/SslContextProviderTest.java
index 41056cfafb..e17fe49edc 100644
---
a/modules/network/src/test/java/org/apache/ignite/internal/network/ssl/SslContextProviderTest.java
+++
b/modules/network/src/test/java/org/apache/ignite/internal/network/ssl/SslContextProviderTest.java
@@ -26,9 +26,11 @@ import static org.junit.Assert.assertThrows;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.util.SelfSignedCertificate;
-import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
@@ -73,7 +75,7 @@ class SslContextProviderTest extends BaseIgniteAbstractTest {
KeyStore ts = KeyStore.getInstance("JKS");
ts.load(null, null);
ts.setCertificateEntry("cert", cert.cert());
- try (FileOutputStream fos = new FileOutputStream(trustStoreJks12Path))
{
+ try (OutputStream fos =
Files.newOutputStream(Paths.get(trustStoreJks12Path))) {
ts.store(fos, password.toCharArray());
}
}
@@ -83,7 +85,7 @@ class SslContextProviderTest extends BaseIgniteAbstractTest {
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(null, null);
ks.setKeyEntry("key", cert.key(), password.toCharArray(), new
Certificate[]{cert.cert()});
- try (FileOutputStream fos = new FileOutputStream(keyStorePkcs12Path)) {
+ try (OutputStream fos =
Files.newOutputStream(Paths.get(keyStorePkcs12Path))) {
ks.store(fos, password.toCharArray());
}
}
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/FastCrc.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/FastCrc.java
index e547da7edf..bd2df50b30 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/FastCrc.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/FastCrc.java
@@ -18,10 +18,10 @@
package org.apache.ignite.internal.pagememory.persistence;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
+import java.nio.file.Files;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;
@@ -100,7 +100,7 @@ public class FastCrc {
CRC32 algo = new CRC32();
- try (InputStream in = new CheckedInputStream(new
FileInputStream(file), algo)) {
+ try (InputStream in = new
CheckedInputStream(Files.newInputStream(file.toPath()), algo)) {
byte[] buf = new byte[1024];
while (in.read(buf) != -1) {
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/RobinHoodBackwardShiftHashMap.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/RobinHoodBackwardShiftHashMap.java
index 7b70537d5e..799b3f8a32 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/RobinHoodBackwardShiftHashMap.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/RobinHoodBackwardShiftHashMap.java
@@ -548,13 +548,13 @@ public class RobinHoodBackwardShiftHashMap implements
LoadedPagesMap {
sb.append("Empty: ");
}
- sb.append("i.buc=").append(getIdealBucket(base)).append(",");
- sb.append("(grp=").append(curGrpId).append(",");
- sb.append("page=").append(curPageId).append(")");
- sb.append("->");
- sb.append("(val=").append(curVal).append(",");
- sb.append("ver=").append(ver).append(")");
- sb.append("\n");
+ sb.append("i.buc=").append(getIdealBucket(base)).append(',')
+ .append("(grp=").append(curGrpId).append(',')
+ .append("page=").append(curPageId).append(')')
+ .append("->")
+ .append("(val=").append(curVal).append(',')
+ .append("ver=").append(ver).append(')')
+ .append('\n');
}
/**
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
index 7924751fc7..3b8dde9f64 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
@@ -1963,16 +1963,15 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
private String printPage(BplusIo<L> io, long pageAddr, boolean keys)
throws IgniteInternalCheckedException {
StringBuilder b = new StringBuilder();
- b.append(formatPageId(PageIo.getPageId(pageAddr)));
-
- b.append(" [ ");
- b.append(io.isLeaf() ? "L " : "I ");
+ b.append(formatPageId(PageIo.getPageId(pageAddr)))
+ .append(" [ ")
+ .append(io.isLeaf() ? "L " : "I ");
int cnt = io.getCount(pageAddr);
long fwdId = io.getForward(pageAddr, partId);
- b.append("cnt=").append(cnt).append(' ');
- b.append("fwd=").append(formatPageId(fwdId)).append(' ');
+ b.append("cnt=").append(cnt).append(' ')
+ .append("fwd=").append(formatPageId(fwdId)).append(' ');
if (!io.isLeaf()) {
b.append("lm=").append(formatPageId(inner(io).getLeft(pageAddr, 0,
partId))).append(' ');
diff --git
a/modules/replicator/src/main/java/org/apache/ignite/internal/raft/client/TopologyAwareRaftGroupService.java
b/modules/replicator/src/main/java/org/apache/ignite/internal/raft/client/TopologyAwareRaftGroupService.java
index daa5e7d64d..015a829e90 100644
---
a/modules/replicator/src/main/java/org/apache/ignite/internal/raft/client/TopologyAwareRaftGroupService.java
+++
b/modules/replicator/src/main/java/org/apache/ignite/internal/raft/client/TopologyAwareRaftGroupService.java
@@ -368,7 +368,7 @@ public class TopologyAwareRaftGroupService implements
RaftGroupService {
subscribersMap.clear();
- return allOf(futs.toArray(new CompletableFuture[futs.size()]));
+ return allOf(futs.toArray(new CompletableFuture[0]));
}
@Override
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/exp/ExpressionFactoryImpl.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/exp/ExpressionFactoryImpl.java
index 30c81c1705..6e4e604ca1 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/exp/ExpressionFactoryImpl.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/exp/ExpressionFactoryImpl.java
@@ -644,9 +644,8 @@ public class ExpressionFactoryImpl<RowT> implements
ExpressionFactory<RowT> {
}.apply(node);
}
- b.append(", biParam=").append(biParam);
-
- b.append(']');
+ b.append(", biParam=").append(biParam)
+ .append(']');
if (type != null) {
b.append(':').append(type.getFullTypeString());
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/FragmentPrinter.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/FragmentPrinter.java
index 4577a1eaca..f03bfc42ab 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/FragmentPrinter.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/FragmentPrinter.java
@@ -398,7 +398,7 @@ final class FragmentPrinter extends IgniteRelShuttle {
}
builder.setLength(builder.length() - 2);
- builder.append("]");
+ builder.append(']');
}
/** Writes string property: {@code name: value}. */
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/MappingTestRunner.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/MappingTestRunner.java
index c9e92c1d8c..52fd8a6e50 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/MappingTestRunner.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/mapping/MappingTestRunner.java
@@ -208,14 +208,13 @@ final class MappingTestRunner {
try {
mappedFragments = await(mappingService.map(plan,
MappingParameters.EMPTY));
} catch (Exception e) {
- StringBuilder sb = new StringBuilder();
- sb.append(System.lineSeparator());
- sb.append(RelOptUtil.toString(plan.root()));
- sb.append(System.lineSeparator());
+ String explanation = System.lineSeparator()
+ + RelOptUtil.toString(plan.root())
+ + System.lineSeparator();
Throwable cause = e instanceof CompletionException ? e.getCause()
: e;
- throw new IllegalStateException("Failed to map a plan: " + sb,
cause);
+ throw new IllegalStateException("Failed to map a plan: " +
explanation, cause);
}
if (mappedFragments == null) {
@@ -299,16 +298,17 @@ final class MappingTestRunner {
testCaseStr.append(System.lineSeparator());
}
- testCaseStr.append(testCaseDef.nodeName);
- testCaseStr.append(System.lineSeparator());
- testCaseStr.append(testCaseDef.sql);
- testCaseStr.append(System.lineSeparator());
- testCaseStr.append("---");
- testCaseStr.append(System.lineSeparator());
- testCaseStr.append(result);
- testCaseStr.append(System.lineSeparator());
- testCaseStr.append("---");
- testCaseStr.append(System.lineSeparator());
+ testCaseStr
+ .append(testCaseDef.nodeName)
+ .append(System.lineSeparator())
+ .append(testCaseDef.sql)
+ .append(System.lineSeparator())
+ .append("---")
+ .append(System.lineSeparator())
+ .append(result)
+ .append(System.lineSeparator())
+ .append("---")
+ .append(System.lineSeparator());
}
enum ParseState {
diff --git
a/modules/workers/src/main/java/org/apache/ignite/internal/worker/CriticalWorkerWatchdog.java
b/modules/workers/src/main/java/org/apache/ignite/internal/worker/CriticalWorkerWatchdog.java
index edfc442108..767883e5d5 100644
---
a/modules/workers/src/main/java/org/apache/ignite/internal/worker/CriticalWorkerWatchdog.java
+++
b/modules/workers/src/main/java/org/apache/ignite/internal/worker/CriticalWorkerWatchdog.java
@@ -169,23 +169,24 @@ public class CriticalWorkerWatchdog implements
CriticalWorkerRegistry, IgniteCom
return delayedThreadIdsToDelays;
}
- @SuppressWarnings("StringConcatenationInsideStringBufferAppend")
private static String toString(ThreadInfo threadInfo) {
// This method is based on code taken from ThreadInfo#toString(). The
original method limits the depth of the
// stacktrace it includes in the string representation to just 8
frames, which is too few. Here, we
// removed this limitation and include the stack trace in its entirety.
- StringBuilder sb = new StringBuilder("\"" + threadInfo.getThreadName()
+ "\""
- + (threadInfo.isDaemon() ? " daemon" : "")
- + " prio=" + threadInfo.getPriority()
- + " Id=" + threadInfo.getThreadId() + " "
- + threadInfo.getThreadState());
+ StringBuilder sb = new StringBuilder()
+ .append('\"').append(threadInfo.getThreadName()).append('\"')
+ .append(threadInfo.isDaemon() ? " daemon" : "")
+ .append(" prio=").append(threadInfo.getPriority())
+ .append(" Id=").append(threadInfo.getThreadId()).append(' ')
+ .append(threadInfo.getThreadState());
+
if (threadInfo.getLockName() != null) {
- sb.append(" on " + threadInfo.getLockName());
+ sb.append(" on ").append(threadInfo.getLockName());
}
if (threadInfo.getLockOwnerName() != null) {
- sb.append(" owned by \"" + threadInfo.getLockOwnerName()
- + "\" Id=" + threadInfo.getLockOwnerId());
+ sb.append(" owned by \"").append(threadInfo.getLockOwnerName())
+ .append("\" Id=").append(threadInfo.getLockOwnerId());
}
if (threadInfo.isSuspended()) {
sb.append(" (suspended)");
@@ -197,21 +198,21 @@ public class CriticalWorkerWatchdog implements
CriticalWorkerRegistry, IgniteCom
int i = 0;
for (; i < threadInfo.getStackTrace().length; i++) {
StackTraceElement ste = threadInfo.getStackTrace()[i];
- sb.append("\tat " + ste.toString());
+ sb.append("\tat ").append(ste.toString());
sb.append('\n');
if (i == 0 && threadInfo.getLockInfo() != null) {
Thread.State ts = threadInfo.getThreadState();
switch (ts) {
case BLOCKED:
- sb.append("\t- blocked on " +
threadInfo.getLockInfo());
+ sb.append("\t- blocked on
").append(threadInfo.getLockInfo());
sb.append('\n');
break;
case WAITING:
- sb.append("\t- waiting on " +
threadInfo.getLockInfo());
+ sb.append("\t- waiting on
").append(threadInfo.getLockInfo());
sb.append('\n');
break;
case TIMED_WAITING:
- sb.append("\t- waiting on " +
threadInfo.getLockInfo());
+ sb.append("\t- waiting on
").append(threadInfo.getLockInfo());
sb.append('\n');
break;
default:
@@ -220,7 +221,7 @@ public class CriticalWorkerWatchdog implements
CriticalWorkerRegistry, IgniteCom
for (MonitorInfo mi : threadInfo.getLockedMonitors()) {
if (mi.getLockedStackDepth() == i) {
- sb.append("\t- locked " + mi);
+ sb.append("\t- locked ").append(mi);
sb.append('\n');
}
}
@@ -228,10 +229,10 @@ public class CriticalWorkerWatchdog implements
CriticalWorkerRegistry, IgniteCom
LockInfo[] locks = threadInfo.getLockedSynchronizers();
if (locks.length > 0) {
- sb.append("\n\tNumber of locked synchronizers = " + locks.length);
+ sb.append("\n\tNumber of locked synchronizers =
").append(locks.length);
sb.append('\n');
for (LockInfo li : locks) {
- sb.append("\t- " + li);
+ sb.append("\t- ").append(li);
sb.append('\n');
}
}