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 <slava.kopti...@gmail.com> 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;