This is an automated email from the ASF dual-hosted git repository.
sk0x50 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 cfb3b11893 IGNITE-17539 Fix error groups initialization on start-up
(#2507)
cfb3b11893 is described below
commit cfb3b11893b63ba368061d95ba0645d1b6724625
Author: Slava Koptilin <[email protected]>
AuthorDate: Wed Aug 30 16:41:47 2023 +0300
IGNITE-17539 Fix error groups initialization on start-up (#2507)
---
.../java/org/apache/ignite/lang/ErrorGroup.java | 80 +-------------
.../java/org/apache/ignite/lang/ErrorGroups.java | 119 ++++++++++++++++++---
.../apache/ignite/lang/IgniteCheckedException.java | 4 +-
.../org/apache/ignite/lang/IgniteException.java | 4 +-
.../ignite/internal/client/TcpIgniteClient.java | 3 +
.../lang/IgniteInternalCheckedException.java | 4 +-
.../ignite/lang/IgniteInternalException.java | 4 +-
.../org/apache/ignite/lang/ErrorGroupTest.java | 13 +++
.../ErrorGroupsGenerator.cs | 2 +-
.../dotnet/Apache.Ignite.Tests/ErrorGroupTests.cs | 4 +-
.../apache/ignite/internal/app/IgnitionImpl.java | 3 +
.../tx/TransactionInternalCheckedException.java | 4 +-
12 files changed, 139 insertions(+), 105 deletions(-)
diff --git a/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroup.java
b/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroup.java
index b76cf37b7f..b564afbd2c 100755
--- a/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroup.java
+++ b/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroup.java
@@ -18,12 +18,10 @@
package org.apache.ignite.lang;
import static java.util.regex.Pattern.DOTALL;
+import static org.apache.ignite.lang.ErrorGroups.errorGroupByCode;
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
-import java.util.Locale;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -41,9 +39,6 @@ public class ErrorGroup {
private static final Pattern EXCEPTION_MESSAGE_PATTERN =
Pattern.compile("(.*)(IGN)-([A-Z]+)-(\\d+)\\s(TraceId:)([a-f0-9]{8}(?:-[a-f0-9]{4}){4}[a-f0-9]{8})(\\s?)(.*)",
DOTALL);
- /** List of all registered error groups. */
- private static final Int2ObjectMap<ErrorGroup> registeredGroups = new
Int2ObjectOpenHashMap<>();
-
/** Group name. */
private final String groupName;
@@ -59,7 +54,7 @@ public class ErrorGroup {
* @param groupName Group name.
* @param groupCode Group code.
*/
- private ErrorGroup(String groupName, short groupCode) {
+ ErrorGroup(String groupName, short groupCode) {
this.groupName = groupName;
this.groupCode = groupCode;
}
@@ -99,53 +94,6 @@ public class ErrorGroup {
return (groupCode() << 16) | (errorCode & 0xFFFF);
}
- /**
- * Creates a new error group with the given {@code groupName} and {@code
groupCode}.
- *
- * @param groupName Group name to be created.
- * @param groupCode Group code to be created.
- * @return New error group.
- * @throws IllegalArgumentException If the specified name or group code
already registered.
- * Also, this exception is thrown if the given {@code groupName} is
{@code null} or empty.
- */
- public static synchronized ErrorGroup newGroup(String groupName, short
groupCode) {
- if (groupName == null || groupName.isEmpty()) {
- throw new IllegalArgumentException("Group name is null or empty");
- }
-
- String grpName = groupName.toUpperCase(Locale.ENGLISH);
-
- if (registeredGroups.containsKey(groupCode)) {
- throw new IllegalArgumentException(
- "Error group already registered [groupName=" + groupName +
", groupCode=" + groupCode
- + ", registeredGroup=" +
registeredGroups.get(groupCode) + ']');
- }
-
- for (ErrorGroup group : registeredGroups.values()) {
- if (group.name().equals(groupName)) {
- throw new IllegalArgumentException(
- "Error group already registered [groupName=" + groupName +
", groupCode=" + groupCode
- + ", registeredGroup=" + group + ']');
- }
- }
-
- ErrorGroup newGroup = new ErrorGroup(grpName, groupCode);
-
- registeredGroups.put(groupCode, newGroup);
-
- return newGroup;
- }
-
- /**
- * Returns group code extracted from the given full error code.
- *
- * @param code Full error code.
- * @return Group code.
- */
- public static short extractGroupCode(int code) {
- return (short) (code >>> 16);
- }
-
/**
* Returns error code extracted from the given full error code.
*
@@ -156,26 +104,6 @@ public class ErrorGroup {
return (short) (code & 0xFFFF);
}
- /**
- * Returns error group identified by the given {@code groupCode}.
- *
- * @param groupCode Group code
- * @return Error Group.
- */
- public static ErrorGroup errorGroupByGroupCode(short groupCode) {
- return registeredGroups.get(groupCode);
- }
-
- /**
- * Returns error group identified by the given error {@code code}.
- *
- * @param code Full error code
- * @return Error Group.
- */
- public static ErrorGroup errorGroupByCode(int code) {
- return registeredGroups.get(extractGroupCode(code));
- }
-
/**
* Creates a new error message with predefined prefix.
*
@@ -185,7 +113,7 @@ public class ErrorGroup {
* @return New error message with predefined prefix.
*/
public static String errorMessage(UUID traceId, int code, String message) {
- return errorMessage(traceId,
registeredGroups.get(extractGroupCode(code)).name(), code, message);
+ return errorMessage(traceId, errorGroupByCode(code).name(), code,
message);
}
/**
@@ -211,7 +139,7 @@ public class ErrorGroup {
* @return New error message with predefined prefix.
*/
public static String errorMessageFromCause(UUID traceId, int code,
Throwable cause) {
- return errorMessageFromCause(traceId,
registeredGroups.get(extractGroupCode(code)).name(), code, cause);
+ return errorMessageFromCause(traceId, errorGroupByCode(code).name(),
code, cause);
}
/**
diff --git a/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroups.java
b/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroups.java
index 50f85f0049..c6a54f049d 100755
--- a/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroups.java
+++ b/modules/api/src/main/java/org/apache/ignite/lang/ErrorGroups.java
@@ -17,15 +17,102 @@
package org.apache.ignite.lang;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import java.util.Locale;
+
/**
* Defines error groups and its errors.
*/
@SuppressWarnings("PublicInnerClass")
public class ErrorGroups {
+ /** List of all registered error groups. */
+ private static final Int2ObjectMap<ErrorGroup> registeredGroups = new
Int2ObjectOpenHashMap<>();
+
+ /**
+ * Initializes and register all error groups and error codes.
+ */
+ public static synchronized void initialize() {
+ for (Class<?> cls : ErrorGroups.class.getDeclaredClasses()) {
+ try {
+ cls.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to initialize error
groups", e);
+ }
+ }
+ }
+
+ /**
+ * Creates a new error group with the given {@code groupName} and {@code
groupCode}.
+ *
+ * @param groupName Group name to be created.
+ * @param groupCode Group code to be created.
+ * @return New error group.
+ * @throws IllegalArgumentException If the specified name or group code
already registered.
+ * Also, this exception is thrown if the given {@code groupName} is
{@code null} or empty.
+ */
+ public static synchronized ErrorGroup registerGroup(String groupName,
short groupCode) {
+ if (groupName == null || groupName.isEmpty()) {
+ throw new IllegalArgumentException("Group name is null or empty");
+ }
+
+ String grpName = groupName.toUpperCase(Locale.ENGLISH);
+
+ if (registeredGroups.containsKey(groupCode)) {
+ throw new IllegalArgumentException(
+ "Error group already registered [groupName=" + groupName +
", groupCode=" + groupCode
+ + ", registeredGroup=" +
registeredGroups.get(groupCode) + ']');
+ }
+
+ for (ErrorGroup group : registeredGroups.values()) {
+ if (group.name().equals(groupName)) {
+ throw new IllegalArgumentException(
+ "Error group already registered [groupName=" +
groupName + ", groupCode=" + groupCode
+ + ", registeredGroup=" + group + ']');
+ }
+ }
+
+ ErrorGroup newGroup = new ErrorGroup(grpName, groupCode);
+
+ registeredGroups.put(groupCode, newGroup);
+
+ return newGroup;
+ }
+
+ /**
+ * Returns group code extracted from the given full error code.
+ *
+ * @param code Full error code.
+ * @return Group code.
+ */
+ public static short extractGroupCode(int code) {
+ return (short) (code >>> 16);
+ }
+
+ /**
+ * Returns error group identified by the given {@code groupCode}.
+ *
+ * @param groupCode Group code
+ * @return Error Group.
+ */
+ public static ErrorGroup errorGroupByGroupCode(short groupCode) {
+ return registeredGroups.get(groupCode);
+ }
+
+ /**
+ * Returns error group identified by the given error {@code code}.
+ *
+ * @param code Full error code
+ * @return Error Group.
+ */
+ public static ErrorGroup errorGroupByCode(int code) {
+ return registeredGroups.get(extractGroupCode(code));
+ }
+
/** Common error group. */
public static class Common {
/** Common error group. */
- public static final ErrorGroup COMMON_ERR_GROUP =
ErrorGroup.newGroup("CMN", (short) 1);
+ public static final ErrorGroup COMMON_ERR_GROUP = registerGroup("CMN",
(short) 1);
/** Node stopping error. */
public static final int NODE_STOPPING_ERR =
COMMON_ERR_GROUP.registerErrorCode((short) 1);
@@ -52,7 +139,7 @@ public class ErrorGroups {
/** Tables error group. */
public static class Table {
/** Table error group. */
- public static final ErrorGroup TABLE_ERR_GROUP =
ErrorGroup.newGroup("TBL", (short) 2);
+ public static final ErrorGroup TABLE_ERR_GROUP = registerGroup("TBL",
(short) 2);
/** Table already exists. */
public static final int TABLE_ALREADY_EXISTS_ERR =
TABLE_ERR_GROUP.registerErrorCode((short) 1);
@@ -79,7 +166,7 @@ public class ErrorGroups {
/** Client error group. */
public static class Client {
/** Client error group. */
- public static final ErrorGroup CLIENT_ERR_GROUP =
ErrorGroup.newGroup("CLIENT", (short) 3);
+ public static final ErrorGroup CLIENT_ERR_GROUP =
registerGroup("CLIENT", (short) 3);
/** Connection failed. */
public static final int CONNECTION_ERR =
CLIENT_ERR_GROUP.registerErrorCode((short) 1);
@@ -115,7 +202,7 @@ public class ErrorGroups {
/** SQL error group. */
public static class Sql {
/** SQL error group. */
- public static final ErrorGroup SQL_ERR_GROUP =
ErrorGroup.newGroup("SQL", (short) 4);
+ public static final ErrorGroup SQL_ERR_GROUP = registerGroup("SQL",
(short) 4);
/** No more pages in the cursor error. */
public static final int CURSOR_NO_MORE_PAGES_ERR =
SQL_ERR_GROUP.registerErrorCode((short) 1);
@@ -172,7 +259,7 @@ public class ErrorGroups {
/** Meta storage error group. */
public static class MetaStorage {
/** Meta storage error group. */
- public static final ErrorGroup META_STORAGE_ERR_GROUP =
ErrorGroup.newGroup("META", (short) 5);
+ public static final ErrorGroup META_STORAGE_ERR_GROUP =
registerGroup("META", (short) 5);
/** Failed to start the underlying key value storage. */
public static final int STARTING_STORAGE_ERR =
META_STORAGE_ERR_GROUP.registerErrorCode((short) 1);
@@ -193,7 +280,7 @@ public class ErrorGroups {
/** Index error group. */
public static class Index {
/** Index error group. */
- public static final ErrorGroup INDEX_ERR_GROUP =
ErrorGroup.newGroup("IDX", (short) 6);
+ public static final ErrorGroup INDEX_ERR_GROUP = registerGroup("IDX",
(short) 6);
/** Invalid index definition. */
public static final int INVALID_INDEX_DEFINITION_ERR =
INDEX_ERR_GROUP.registerErrorCode((short) 1);
@@ -208,7 +295,7 @@ public class ErrorGroups {
/** Transactions error group. */
public static class Transactions {
/** Transactions error group. */
- public static final ErrorGroup TX_ERR_GROUP =
ErrorGroup.newGroup("TX", (short) 7);
+ public static final ErrorGroup TX_ERR_GROUP = registerGroup("TX",
(short) 7);
/** Error of tx state storage. */
public static final int TX_STATE_STORAGE_ERR =
TX_ERR_GROUP.registerErrorCode((short) 1);
@@ -250,7 +337,7 @@ public class ErrorGroups {
/** Replicator error group. */
public static class Replicator {
/** Replicator error group. */
- public static final ErrorGroup REPLICATOR_ERR_GROUP =
ErrorGroup.newGroup("REP", (short) 8);
+ public static final ErrorGroup REPLICATOR_ERR_GROUP =
registerGroup("REP", (short) 8);
/** Common error for the replication procedure. */
public static final int REPLICA_COMMON_ERR =
REPLICATOR_ERR_GROUP.registerErrorCode((short) 1);
@@ -281,7 +368,7 @@ public class ErrorGroups {
/** Storage error group. */
public static class Storage {
/** Storage error group. */
- public static final ErrorGroup STORAGE_ERR_GROUP =
ErrorGroup.newGroup("STORAGE", (short) 9);
+ public static final ErrorGroup STORAGE_ERR_GROUP =
registerGroup("STORAGE", (short) 9);
/** Default error code when nothing else is specified. */
public static final int GENERIC_ERR =
STORAGE_ERR_GROUP.registerErrorCode((short) 1);
@@ -299,7 +386,7 @@ public class ErrorGroups {
/** Distribution zones error group. */
public static class DistributionZones {
/** Distribution zones group. */
- public static final ErrorGroup DISTRIBUTION_ZONES_ERR_GROUP =
ErrorGroup.newGroup("DISTRZONES", (short) 10);
+ public static final ErrorGroup DISTRIBUTION_ZONES_ERR_GROUP =
registerGroup("DISTRZONES", (short) 10);
/** Distribution zone already exists. */
public static final int ZONE_ALREADY_EXISTS_ERR =
DISTRIBUTION_ZONES_ERR_GROUP.registerErrorCode((short) 1);
@@ -320,7 +407,7 @@ public class ErrorGroups {
/** Network error group. */
public static class Network {
/** Network error group. */
- public static final ErrorGroup NETWORK_ERR_GROUP =
ErrorGroup.newGroup("NETWORK", (short) 11);
+ public static final ErrorGroup NETWORK_ERR_GROUP =
registerGroup("NETWORK", (short) 11);
/** Unresolvable consistent ID. */
public static final int UNRESOLVABLE_CONSISTENT_ID_ERR =
NETWORK_ERR_GROUP.registerErrorCode((short) 1);
@@ -332,7 +419,7 @@ public class ErrorGroups {
/** Node configuration error group. */
public static class NodeConfiguration {
/** Node configuration error group. */
- public static final ErrorGroup NODE_CONFIGURATION_ERR_GROUP =
ErrorGroup.newGroup("NODECFG", (short) 12);
+ public static final ErrorGroup NODE_CONFIGURATION_ERR_GROUP =
registerGroup("NODECFG", (short) 12);
/** Config read error. */
public static final int CONFIG_READ_ERR =
NODE_CONFIGURATION_ERR_GROUP.registerErrorCode((short) 1);
@@ -350,7 +437,7 @@ public class ErrorGroups {
/** Code deployment error group. */
public static class CodeDeployment {
/** Code deployment error group. */
- public static final ErrorGroup CODE_DEPLOYMENT_ERR_GROUP =
ErrorGroup.newGroup("CODEDEPLOY", (short) 13);
+ public static final ErrorGroup CODE_DEPLOYMENT_ERR_GROUP =
registerGroup("CODEDEPLOY", (short) 13);
/** Access to non-existing deployment unit. */
public static final int UNIT_NOT_FOUND_ERR =
CODE_DEPLOYMENT_ERR_GROUP.registerErrorCode((short) 1);
@@ -370,7 +457,7 @@ public class ErrorGroups {
*/
public static class GarbageCollector {
/** Garbage collector error group. */
- public static final ErrorGroup GC_ERR_GROUP =
ErrorGroup.newGroup("GC", (short) 14);
+ public static final ErrorGroup GC_ERR_GROUP = registerGroup("GC",
(short) 14);
/** Garbage collector closed error. */
public static final int CLOSED_ERR =
GC_ERR_GROUP.registerErrorCode((short) 1);
@@ -381,7 +468,7 @@ public class ErrorGroups {
*/
public static class Authentication {
/** Authentication error group. */
- public static final ErrorGroup AUTHENTICATION_ERR_GROUP =
ErrorGroup.newGroup("AUTHENTICATION", (short) 15);
+ public static final ErrorGroup AUTHENTICATION_ERR_GROUP =
registerGroup("AUTHENTICATION", (short) 15);
/** General authentication error. */
public static final int COMMON_AUTHENTICATION_ERR =
AUTHENTICATION_ERR_GROUP.registerErrorCode((short) 1);
@@ -392,7 +479,7 @@ public class ErrorGroups {
*/
public static class Compute {
/** Compute error group. */
- public static final ErrorGroup COMPUTE_ERR_GROUP =
ErrorGroup.newGroup("COMPUTE", (short) 16);
+ public static final ErrorGroup COMPUTE_ERR_GROUP =
registerGroup("COMPUTE", (short) 16);
/** Classpath error. */
public static final int CLASS_PATH_ERR =
COMPUTE_ERR_GROUP.registerErrorCode((short) 1);
diff --git
a/modules/api/src/main/java/org/apache/ignite/lang/IgniteCheckedException.java
b/modules/api/src/main/java/org/apache/ignite/lang/IgniteCheckedException.java
index ed4c9b691a..aaccd9a4cb 100755
---
a/modules/api/src/main/java/org/apache/ignite/lang/IgniteCheckedException.java
+++
b/modules/api/src/main/java/org/apache/ignite/lang/IgniteCheckedException.java
@@ -18,10 +18,10 @@
package org.apache.ignite.lang;
import static org.apache.ignite.lang.ErrorGroup.ERR_PREFIX;
-import static org.apache.ignite.lang.ErrorGroup.errorGroupByCode;
import static org.apache.ignite.lang.ErrorGroup.errorMessage;
import static org.apache.ignite.lang.ErrorGroup.extractErrorCode;
-import static org.apache.ignite.lang.ErrorGroup.extractGroupCode;
+import static org.apache.ignite.lang.ErrorGroups.errorGroupByCode;
+import static org.apache.ignite.lang.ErrorGroups.extractGroupCode;
import static org.apache.ignite.lang.util.TraceIdUtils.getOrCreateTraceId;
import java.util.UUID;
diff --git
a/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
b/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
index af8d4cd0f2..5e43c721e0 100644
--- a/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
+++ b/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
@@ -18,11 +18,11 @@
package org.apache.ignite.lang;
import static org.apache.ignite.lang.ErrorGroup.ERR_PREFIX;
-import static org.apache.ignite.lang.ErrorGroup.errorGroupByCode;
import static org.apache.ignite.lang.ErrorGroup.errorMessage;
import static org.apache.ignite.lang.ErrorGroup.extractErrorCode;
-import static org.apache.ignite.lang.ErrorGroup.extractGroupCode;
import static org.apache.ignite.lang.ErrorGroups.Common.INTERNAL_ERR;
+import static org.apache.ignite.lang.ErrorGroups.errorGroupByCode;
+import static org.apache.ignite.lang.ErrorGroups.extractGroupCode;
import static org.apache.ignite.lang.util.TraceIdUtils.getOrCreateTraceId;
import java.util.UUID;
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
index 111f1655ff..8c77eba74d 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
@@ -34,6 +34,7 @@ import
org.apache.ignite.internal.client.tx.ClientTransactions;
import org.apache.ignite.internal.jdbc.proto.ClientMessage;
import org.apache.ignite.internal.metrics.MetricManager;
import org.apache.ignite.internal.metrics.exporters.jmx.JmxExporter;
+import org.apache.ignite.lang.ErrorGroups;
import org.apache.ignite.network.ClusterNode;
import org.apache.ignite.network.NetworkAddress;
import org.apache.ignite.sql.IgniteSql;
@@ -131,6 +132,8 @@ public class TcpIgniteClient implements IgniteClient {
* @return Future representing pending completion of the operation.
*/
public static CompletableFuture<IgniteClient>
startAsync(IgniteClientConfiguration cfg) {
+ ErrorGroups.initialize();
+
//noinspection resource: returned from method
var client = new TcpIgniteClient(cfg);
diff --git
a/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalCheckedException.java
b/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalCheckedException.java
index 52491241ab..62f2409402 100644
---
a/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalCheckedException.java
+++
b/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalCheckedException.java
@@ -18,11 +18,11 @@
package org.apache.ignite.lang;
import static org.apache.ignite.lang.ErrorGroup.ERR_PREFIX;
-import static org.apache.ignite.lang.ErrorGroup.errorGroupByCode;
import static org.apache.ignite.lang.ErrorGroup.errorMessage;
import static org.apache.ignite.lang.ErrorGroup.extractErrorCode;
-import static org.apache.ignite.lang.ErrorGroup.extractGroupCode;
import static org.apache.ignite.lang.ErrorGroups.Common.INTERNAL_ERR;
+import static org.apache.ignite.lang.ErrorGroups.errorGroupByCode;
+import static org.apache.ignite.lang.ErrorGroups.extractGroupCode;
import static org.apache.ignite.lang.util.TraceIdUtils.getOrCreateTraceId;
import java.util.UUID;
diff --git
a/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalException.java
b/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalException.java
index 2610630c46..57181d35f5 100644
---
a/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalException.java
+++
b/modules/core/src/main/java/org/apache/ignite/lang/IgniteInternalException.java
@@ -18,11 +18,11 @@
package org.apache.ignite.lang;
import static org.apache.ignite.lang.ErrorGroup.ERR_PREFIX;
-import static org.apache.ignite.lang.ErrorGroup.errorGroupByCode;
import static org.apache.ignite.lang.ErrorGroup.errorMessage;
import static org.apache.ignite.lang.ErrorGroup.extractErrorCode;
-import static org.apache.ignite.lang.ErrorGroup.extractGroupCode;
import static org.apache.ignite.lang.ErrorGroups.Common.INTERNAL_ERR;
+import static org.apache.ignite.lang.ErrorGroups.errorGroupByCode;
+import static org.apache.ignite.lang.ErrorGroups.extractGroupCode;
import static org.apache.ignite.lang.util.TraceIdUtils.getOrCreateTraceId;
import java.util.UUID;
diff --git
a/modules/core/src/test/java/org/apache/ignite/lang/ErrorGroupTest.java
b/modules/core/src/test/java/org/apache/ignite/lang/ErrorGroupTest.java
index db90b14341..7e775429bc 100644
--- a/modules/core/src/test/java/org/apache/ignite/lang/ErrorGroupTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/lang/ErrorGroupTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.lang;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.notNullValue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.Arrays;
@@ -29,6 +30,18 @@ import org.apache.ignite.lang.ErrorGroups.Common;
import org.junit.jupiter.api.Test;
class ErrorGroupTest {
+ @Test
+ public void testErrorCodeInitialization() throws Exception {
+ ErrorGroups.initialize();
+
+ // Check that all error codes are initialized.
+ int errGroupsCount = ErrorGroups.class.getDeclaredClasses().length;
+ for (int groupCode = 1; groupCode <= errGroupsCount; groupCode++) {
+ ErrorGroup errGroup = ErrorGroups.errorGroupByCode(groupCode <<
16);
+ assertThat("Error group is not initialized for code: " +
groupCode, errGroup, notNullValue());
+ }
+ }
+
@Test
void extractsCauseMessageFromIgniteExceptionMessage() {
// Given
diff --git
a/modules/platforms/dotnet/Apache.Ignite.Internal.Generators/ErrorGroupsGenerator.cs
b/modules/platforms/dotnet/Apache.Ignite.Internal.Generators/ErrorGroupsGenerator.cs
index 5a7242d241..d1c25d5872 100644
---
a/modules/platforms/dotnet/Apache.Ignite.Internal.Generators/ErrorGroupsGenerator.cs
+++
b/modules/platforms/dotnet/Apache.Ignite.Internal.Generators/ErrorGroupsGenerator.cs
@@ -58,7 +58,7 @@ namespace Apache.Ignite.Internal.Generators
// ErrorGroup TX_ERR_GROUP = ErrorGroup.newGroup("TX", 7);
var javaErrorGroups = Regex.Matches(
javaErrorGroupsText,
- @"public static class ([A-Za-z]+) {\s+/\*\*.*?\*/\s+public
static final ErrorGroup ([\w_]+)_ERR_GROUP = ErrorGroup.newGroup\(""([\w_]+)"",
\(short\)\s*(\d+)",
+ @"public static class ([A-Za-z]+) {\s+/\*\*.*?\*/\s+public
static final ErrorGroup ([\w_]+)_ERR_GROUP = registerGroup\(""([\w_]+)"",
\(short\)\s*(\d+)",
RegexOptions.Singleline | RegexOptions.CultureInvariant)
.Cast<Match>()
.Select(x => (ClassName: x.Groups[1].Value, GroupName:
x.Groups[2].Value, ShortGroupName: x.Groups[3].Value, Code:
short.Parse(x.Groups[4].Value, CultureInfo.InvariantCulture)))
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/ErrorGroupTests.cs
b/modules/platforms/dotnet/Apache.Ignite.Tests/ErrorGroupTests.cs
index 5c6b8efbae..c75221b3aa 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/ErrorGroupTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/ErrorGroupTests.cs
@@ -97,10 +97,10 @@ namespace Apache.Ignite.Tests
var javaErrorGroupsText = File.ReadAllText(JavaErrorGroupsFile);
- // ErrorGroup TX_ERR_GROUP = ErrorGroup.newGroup("TX", 7);
+ // ErrorGroup TX_ERR_GROUP = registerGroup("TX", 7);
var javaErrorGroups = Regex.Matches(
javaErrorGroupsText,
- @"ErrorGroup ([\w_]+)_ERR_GROUP =
ErrorGroup.newGroup\(""(\w+)"", \(short\)\s*(\d+)\);")
+ @"ErrorGroup ([\w_]+)_ERR_GROUP = registerGroup\(""(\w+)"",
\(short\)\s*(\d+)\);")
.Select(x => (Name: x.Groups[1].Value, ShortName:
x.Groups[2].Value, Code: short.Parse(x.Groups[3].Value,
CultureInfo.InvariantCulture)))
.ToList();
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
index 9b8dde4969..ff0ccf52c1 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
@@ -34,6 +34,7 @@ import org.apache.ignite.InitParameters;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.properties.IgniteProductVersion;
+import org.apache.ignite.lang.ErrorGroups;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.NodeStoppingException;
import org.jetbrains.annotations.Nullable;
@@ -87,6 +88,8 @@ public class IgnitionImpl implements Ignition {
Path workDir,
@Nullable ClassLoader serviceLoaderClassLoader
) {
+ ErrorGroups.initialize();
+
Objects.requireNonNull(cfgPath, "Config path must not be null");
if (Files.notExists(cfgPath)) {
throw new IgniteException("Config file doesn't exist");
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TransactionInternalCheckedException.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TransactionInternalCheckedException.java
index 70a848f2a0..6193c33d9b 100755
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TransactionInternalCheckedException.java
+++
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TransactionInternalCheckedException.java
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.tx;
-import static org.apache.ignite.lang.ErrorGroup.errorGroupByCode;
-import static org.apache.ignite.lang.ErrorGroup.extractGroupCode;
import static org.apache.ignite.lang.ErrorGroups.Transactions.TX_ERR_GROUP;
+import static org.apache.ignite.lang.ErrorGroups.errorGroupByCode;
+import static org.apache.ignite.lang.ErrorGroups.extractGroupCode;
import java.util.UUID;
import org.apache.ignite.lang.IgniteInternalCheckedException;