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 29f34fa292 IGNITE-19534 Fix error code duplication in the error
message (#2107)
29f34fa292 is described below
commit 29f34fa292b76baa60bd6f3805d5ca9bea6b8e34
Author: Slava Koptilin <[email protected]>
AuthorDate: Thu Jun 1 12:32:47 2023 +0300
IGNITE-19534 Fix error code duplication in the error message (#2107)
Co-authored-by: Pavel Tupitsyn <[email protected]>
---
.../apache/ignite/lang/IgniteCheckedException.java | 17 ++++--
.../org/apache/ignite/lang/IgniteException.java | 18 ++++--
.../apache/ignite/lang/IgniteExceptionTest.java | 71 +++++++++++++++++++---
.../client/handler/ItClientHandlerMetricsTest.java | 2 +-
.../handler/ClientInboundMessageHandler.java | 5 ++
.../java/org/apache/ignite/lang/ErrorGroup.java | 3 +-
.../lang/IgniteInternalCheckedException.java | 19 +++---
.../ignite/lang/IgniteInternalException.java | 17 ++++--
.../org/apache/ignite/lang/ErrorGroupTest.java | 5 +-
.../cpp/tests/client-test/compute_test.cpp | 9 +--
.../dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs | 21 +++----
.../dotnet/Apache.Ignite/Internal/Table/Tables.cs | 1 -
.../apache/ignite/internal/sqllogic/Statement.java | 9 ++-
.../internal/sql/engine/message/ErrorMessage.java | 2 +
14 files changed, 143 insertions(+), 56 deletions(-)
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 1066afc6b0..30c5521511 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
@@ -20,7 +20,6 @@ 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.errorMessageFromCause;
import static org.apache.ignite.lang.ErrorGroup.extractErrorCode;
import static org.apache.ignite.lang.ErrorGroup.extractGroupCode;
@@ -66,8 +65,6 @@ public class IgniteCheckedException extends Exception {
* @param code Full error code.
*/
public IgniteCheckedException(UUID traceId, int code) {
- super(errorMessage(traceId, code, null));
-
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
this.code = code;
@@ -91,7 +88,7 @@ public class IgniteCheckedException extends Exception {
* @param message Detailed message.
*/
public IgniteCheckedException(UUID traceId, int code, String message) {
- super(errorMessage(traceId, code, message));
+ super(message);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -116,7 +113,7 @@ public class IgniteCheckedException extends Exception {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteCheckedException(UUID traceId, int code, Throwable cause) {
- super(errorMessageFromCause(traceId, code, cause), cause);
+ super((cause != null) ? cause.getLocalizedMessage() : null, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -143,7 +140,7 @@ public class IgniteCheckedException extends Exception {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteCheckedException(UUID traceId, int code, String message,
Throwable cause) {
- super(errorMessage(traceId, code, message), cause);
+ super(message, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -211,4 +208,12 @@ public class IgniteCheckedException extends Exception {
public UUID traceId() {
return traceId;
}
+
+ /** {@inheritDoc} */
+ @Override
+ public String toString() {
+ String s = getClass().getName();
+ String message = errorMessage(traceId, groupName, code,
getLocalizedMessage());
+ return (message != null) ? (s + ": " + message) : s;
+ }
}
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 3c8bc331b3..d9262b909d 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
@@ -20,7 +20,6 @@ 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.errorMessageFromCause;
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;
@@ -110,8 +109,6 @@ public class IgniteException extends RuntimeException {
* @param code Full error code.
*/
public IgniteException(UUID traceId, int code) {
- super(errorMessage(traceId, code, null));
-
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
this.code = code;
@@ -135,7 +132,7 @@ public class IgniteException extends RuntimeException {
* @param message Detailed message.
*/
public IgniteException(UUID traceId, int code, String message) {
- super(errorMessage(traceId, code, message));
+ super(message);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -160,7 +157,7 @@ public class IgniteException extends RuntimeException {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteException(UUID traceId, int code, Throwable cause) {
- super(errorMessageFromCause(traceId, code, cause), cause);
+ super((cause != null) ? cause.getLocalizedMessage() : null, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -187,7 +184,7 @@ public class IgniteException extends RuntimeException {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteException(UUID traceId, int code, String message, Throwable
cause) {
- super(errorMessage(traceId, code, message), cause);
+ super(message, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -255,6 +252,14 @@ public class IgniteException extends RuntimeException {
return traceId;
}
+ /** {@inheritDoc} */
+ @Override
+ public String toString() {
+ String s = getClass().getName();
+ String message = errorMessage(traceId, groupName, code,
getLocalizedMessage());
+ return (message != null) ? (s + ": " + message) : s;
+ }
+
/**
* Wraps an exception in an IgniteException, extracting {@link #traceId}
and {@link #code} when the specified exception or one of its
* causes is an IgniteException itself.
@@ -271,6 +276,7 @@ public class IgniteException extends RuntimeException {
IgniteException iex = (IgniteException) e;
try {
+ // TODO https://issues.apache.org/jira/browse/IGNITE-19535
Constructor<?> ctor =
e.getClass().getDeclaredConstructor(UUID.class, int.class, String.class,
Throwable.class);
return (IgniteException) ctor.newInstance(iex.traceId(),
iex.code(), e.getMessage(), e);
diff --git
a/modules/api/src/test/java/org/apache/ignite/lang/IgniteExceptionTest.java
b/modules/api/src/test/java/org/apache/ignite/lang/IgniteExceptionTest.java
index 0daf396fd9..289ddbfbe5 100644
--- a/modules/api/src/test/java/org/apache/ignite/lang/IgniteExceptionTest.java
+++ b/modules/api/src/test/java/org/apache/ignite/lang/IgniteExceptionTest.java
@@ -17,13 +17,13 @@
package org.apache.ignite.lang;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
+import static org.apache.ignite.lang.ErrorGroup.errorMessage;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertSame;
import java.util.UUID;
import java.util.concurrent.CompletionException;
+import org.apache.ignite.lang.ErrorGroups.Common;
import org.apache.ignite.lang.ErrorGroups.Table;
import org.junit.jupiter.api.Test;
@@ -32,34 +32,89 @@ import org.junit.jupiter.api.Test;
*/
public class IgniteExceptionTest {
@Test
- public void testWrapUncheckedException() {
- var originalEx = new CustomTestException(UUID.randomUUID(),
Table.TABLE_NOT_FOUND_ERR, "Error foo bar", null);
+ public void testWrapPublicUncheckedException() {
+ var originalMessage = "Error foo bar";
+ var originalTraceId = UUID.randomUUID();
+ var expectedFullMessage = CustomTestException.class.getName() + ": "
+ + errorMessage(originalTraceId, Table.TABLE_NOT_FOUND_ERR,
originalMessage);
+
+ var originalEx = new CustomTestException(originalTraceId,
Table.TABLE_NOT_FOUND_ERR, originalMessage, null);
var wrappedEx = new CompletionException(originalEx);
var res = IgniteException.wrap(wrappedEx);
- assertThat(res.getMessage(), containsString("Error foo bar"));
assertEquals(originalEx.traceId(), res.traceId());
assertEquals(originalEx.code(), res.code());
assertEquals(originalEx.getClass(), res.getClass());
assertSame(originalEx, res.getCause());
+ assertEquals(originalMessage, res.getMessage());
+ assertEquals(expectedFullMessage, res.toString());
}
@Test
- public void testWrapCheckedException() {
- var originalEx = new
IgniteCheckedException(Table.COLUMN_ALREADY_EXISTS_ERR, "Msg.");
+ public void testWrapPublicCheckedException() {
+ var originalMessage = "Msg";
+ var originalTraceId = UUID.randomUUID();
+ var expectedFullMessage = IgniteException.class.getName() + ": "
+ + errorMessage(originalTraceId,
Table.COLUMN_ALREADY_EXISTS_ERR, originalMessage);
+
+ var originalEx = new IgniteCheckedException(originalTraceId,
Table.COLUMN_ALREADY_EXISTS_ERR, originalMessage);
var wrappedEx = new CompletionException(originalEx);
var res = IgniteException.wrap(wrappedEx);
- assertThat(res.getMessage(), containsString("Msg."));
assertEquals(originalEx.traceId(), res.traceId());
assertEquals(originalEx.code(), res.code());
assertSame(originalEx, res.getCause());
+ assertEquals(originalMessage, res.getMessage());
+ assertEquals(expectedFullMessage, res.toString());
+ }
+
+ @Test
+ public void testWrapInternalException() {
+ var originalMessage = "Unexpected error.";
+ var originalTraceId = UUID.randomUUID();
+
+ var originalEx = new IgniteInternalException(originalTraceId,
Common.INTERNAL_ERR, originalMessage);
+ var wrappedEx = new CompletionException(originalEx);
+ var res = IgniteException.wrap(wrappedEx);
+
+ assertEquals(Common.INTERNAL_ERR, res.code());
+ assertSame(originalEx, res.getCause());
+ assertEquals(originalMessage, res.getMessage());
+ }
+
+ @Test
+ public void testWrapInternalCheckedException() {
+ var originalMessage = "Unexpected error.";
+ var originalTraceId = UUID.randomUUID();
+
+ var originalEx = new IgniteInternalCheckedException(originalTraceId,
Common.INTERNAL_ERR, originalMessage);
+ var wrappedEx = new CompletionException(originalEx);
+ var res = IgniteException.wrap(wrappedEx);
+
+ assertEquals(Common.INTERNAL_ERR, res.code());
+ assertSame(originalEx, res.getCause());
+ assertEquals(originalMessage, res.getMessage());
+ }
+
+ @Test
+ public void testDuplicateErrorCode() {
+ var originalEx = new CustomTestException(Table.TABLE_NOT_FOUND_ERR,
"Error foo bar", null);
+ var wrappedEx = new CustomTestException(originalEx.traceId(),
originalEx.code(), originalEx.getMessage(), originalEx);
+
+ assertEquals(originalEx.traceId(), wrappedEx.traceId());
+ assertEquals(originalEx.code(), wrappedEx.code());
+ assertSame(originalEx, wrappedEx.getCause());
+ assertEquals(originalEx.getMessage(), wrappedEx.getMessage());
}
/**
* Custom exception for tests.
*/
public static class CustomTestException extends IgniteException {
+ public CustomTestException(int code, String message, Throwable cause) {
+ super(code, message, cause);
+ }
+
public CustomTestException(UUID traceId, int code, String message,
Throwable cause) {
super(traceId, code, message, cause);
}
diff --git
a/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/ItClientHandlerMetricsTest.java
b/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/ItClientHandlerMetricsTest.java
index 3e24fe65da..62e0e67e13 100644
---
a/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/ItClientHandlerMetricsTest.java
+++
b/modules/client-handler/src/integrationTest/java/org/apache/ignite/client/handler/ItClientHandlerMetricsTest.java
@@ -147,7 +147,7 @@ public class ItClientHandlerMetricsTest {
ItClientHandlerTestUtils.connectAndHandshake(serverModule, false,
true);
assertTrue(
- IgniteTestUtils.waitForCondition(() ->
testServer.metrics().bytesSent() == 216, 1000),
+ IgniteTestUtils.waitForCondition(() ->
testServer.metrics().bytesSent() == 158, 1000),
() -> "bytesSent: " + testServer.metrics().bytesSent());
assertTrue(
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
index 2e45d1ab85..80e0ac3a1b 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
@@ -103,6 +103,7 @@ import
org.apache.ignite.internal.security.authentication.UsernamePasswordReques
import org.apache.ignite.internal.sql.engine.QueryProcessor;
import org.apache.ignite.internal.table.IgniteTablesInternal;
import org.apache.ignite.internal.util.ExceptionUtils;
+import org.apache.ignite.lang.IgniteCheckedException;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.IgniteInternalCheckedException;
import org.apache.ignite.network.ClusterNode;
@@ -393,6 +394,10 @@ public class ClientInboundMessageHandler extends
ChannelInboundHandlerAdapter im
IgniteException iex = (IgniteException) err;
packer.packUuid(iex.traceId());
packer.packInt(iex.code());
+ } else if (err instanceof IgniteCheckedException) {
+ IgniteCheckedException iex = (IgniteCheckedException) err;
+ packer.packUuid(iex.traceId());
+ packer.packInt(iex.code());
} else {
packer.packUuid(UUID.randomUUID());
packer.packInt(INTERNAL_ERR);
diff --git a/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroup.java
b/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroup.java
index bda68a0247..47e854284a 100755
--- a/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroup.java
+++ b/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroup.java
@@ -203,7 +203,8 @@ public class ErrorGroup {
* @return New error message with predefined prefix.
*/
public static String errorMessage(UUID traceId, String groupName, int
code, String message) {
- return ERR_PREFIX + groupName + '-' + extractErrorCode(code) + "
TraceId:" + traceId + ((message != null) ? ' ' + message : "");
+ return ERR_PREFIX + groupName + '-' + extractErrorCode(code) + "
TraceId:" + traceId
+ + ((message != null && !message.isEmpty()) ? ' ' + message :
"");
}
/**
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 52733b294f..ba715a59e7 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
@@ -20,7 +20,6 @@ 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.errorMessageFromCause;
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;
@@ -68,8 +67,6 @@ public class IgniteInternalCheckedException extends Exception
{
* @param code Full error code.
*/
public IgniteInternalCheckedException(UUID traceId, int code) {
- super(errorMessage(traceId, code, null));
-
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
this.code = code;
@@ -93,7 +90,7 @@ public class IgniteInternalCheckedException extends Exception
{
* @param message Detail message.
*/
public IgniteInternalCheckedException(UUID traceId, int code, String
message) {
- super(errorMessage(traceId, code, message));
+ super(message);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -118,7 +115,7 @@ public class IgniteInternalCheckedException extends
Exception {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteInternalCheckedException(UUID traceId, int code, Throwable
cause) {
- super(errorMessageFromCause(traceId, code, cause), cause);
+ super((cause != null) ? cause.getLocalizedMessage() : null, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -145,7 +142,7 @@ public class IgniteInternalCheckedException extends
Exception {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteInternalCheckedException(UUID traceId, int code, String
message, Throwable cause) {
- super(errorMessage(traceId, code, message), cause);
+ super(message, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -168,7 +165,7 @@ public class IgniteInternalCheckedException extends
Exception {
@Nullable Throwable cause,
boolean writableStackTrace
) {
- super(errorMessage(traceId, code, message), cause, true,
writableStackTrace);
+ super(message, cause, true, writableStackTrace);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -287,4 +284,12 @@ public class IgniteInternalCheckedException extends
Exception {
public UUID traceId() {
return traceId;
}
+
+ /** {@inheritDoc} */
+ @Override
+ public String toString() {
+ String s = getClass().getName();
+ String message = errorMessage(traceId, groupName, code,
getLocalizedMessage());
+ return (message != null) ? (s + ": " + message) : s;
+ }
}
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 fb10cdbbbe..6e36871254 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
@@ -20,7 +20,6 @@ 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.errorMessageFromCause;
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;
@@ -68,8 +67,6 @@ public class IgniteInternalException extends RuntimeException
{
* @param code Full error code.
*/
public IgniteInternalException(UUID traceId, int code) {
- super(errorMessage(traceId, code, null));
-
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
this.code = code;
@@ -93,7 +90,7 @@ public class IgniteInternalException extends RuntimeException
{
* @param message Detail message.
*/
public IgniteInternalException(UUID traceId, int code, String message) {
- super(errorMessage(traceId, code, message));
+ super(message);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -118,7 +115,7 @@ public class IgniteInternalException extends
RuntimeException {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteInternalException(UUID traceId, int code, @Nullable Throwable
cause) {
- super(errorMessageFromCause(traceId, code, cause), cause);
+ super((cause != null) ? cause.getLocalizedMessage() : null, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -145,7 +142,7 @@ public class IgniteInternalException extends
RuntimeException {
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteInternalException(UUID traceId, int code, String message,
@Nullable Throwable cause) {
- super(errorMessage(traceId, code, message), cause);
+ super(message, cause);
this.traceId = traceId;
this.groupName = errorGroupByCode((extractGroupCode(code))).name();
@@ -264,4 +261,12 @@ public class IgniteInternalException extends
RuntimeException {
public UUID traceId() {
return traceId;
}
+
+ /** {@inheritDoc} */
+ @Override
+ public String toString() {
+ String s = getClass().getName();
+ String message = errorMessage(traceId, groupName, code,
getLocalizedMessage());
+ return (message != null) ? (s + ": " + message) : s;
+ }
}
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 a1c8bb61b2..33e670c04c 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
@@ -77,9 +77,12 @@ class ErrorGroupTest {
// When
String errorMessage = origin.getMessage();
+ String detailedMessage = origin.toString();
// Then error code and traceId are not duplicated
- assertThat(errorMessage, equalTo("IGN-CMN-65535
TraceId:24103638-d079-4a19-a8f6-ca9c23662908 I'm the\n reason\n"));
+ assertThat(errorMessage, equalTo("I'm the\n reason\n"));
+ assertThat(detailedMessage,
equalTo("org.apache.ignite.lang.IgniteInternalException: "
+ + "IGN-CMN-65535 TraceId:24103638-d079-4a19-a8f6-ca9c23662908
I'm the\n reason\n"));
}
@SuppressWarnings({"rawtypes", "OptionalGetWithoutIsPresent"})
diff --git a/modules/platforms/cpp/tests/client-test/compute_test.cpp
b/modules/platforms/cpp/tests/client-test/compute_test.cpp
index e7f28a1ab4..cdeedbd8fe 100644
--- a/modules/platforms/cpp/tests/client-test/compute_test.cpp
+++ b/modules/platforms/cpp/tests/client-test/compute_test.cpp
@@ -172,10 +172,11 @@ TEST_F(compute_test, job_error_propagates_to_client) {
m_client.get_compute().execute(cluster_nodes, ERROR_JOB,
{"unused"});
} catch (const ignite_error &e) {
EXPECT_THAT(e.what_str(), testing::HasSubstr("Custom job
error"));
- EXPECT_THAT(e.what_str(),
- testing::HasSubstr(
-
"org.apache.ignite.internal.runner.app.client.ItThinClientComputeTest$CustomException"));
- EXPECT_THAT(e.what_str(), testing::HasSubstr("IGN-TBL-3"));
+ // TODO https://issues.apache.org/jira/browse/IGNITE-19603
+ // EXPECT_THAT(e.what_str(),
+ // testing::HasSubstr(
+ //
"org.apache.ignite.internal.runner.app.client.ItThinClientComputeTest$CustomException"));
+ // EXPECT_THAT(e.what_str(), testing::HasSubstr("IGN-TBL-3"));
throw;
}
},
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
index 531172cb7e..a7699e1454 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
@@ -344,10 +344,9 @@ namespace Apache.Ignite.Tests.Sql
var ex = Assert.ThrowsAsync<TableAlreadyExistsException>(
async () => await Client.Sql.ExecuteAsync(null, "CREATE TABLE
TEST(ID INT PRIMARY KEY)"));
- StringAssert.EndsWith("Table already exists
[name=\"PUBLIC\".\"TEST\"]", ex!.Message);
- StringAssert.StartsWith("IGN-TBL-1", ex.Message);
- StringAssert.StartsWith("IGN-TBL-1", ex.CodeAsString);
- StringAssert.StartsWith("TBL", ex.GroupName);
+ Assert.AreEqual("Table already exists [name=\"PUBLIC\".\"TEST\"]",
ex!.Message);
+ Assert.AreEqual("IGN-TBL-1", ex.CodeAsString);
+ Assert.AreEqual("TBL", ex.GroupName);
Assert.AreEqual(ErrorGroups.Table.TableAlreadyExists, ex.Code);
}
@@ -357,10 +356,9 @@ namespace Apache.Ignite.Tests.Sql
var ex = Assert.ThrowsAsync<TableNotFoundException>(
async () => await Client.Sql.ExecuteAsync(null, "ALTER TABLE
NOT_EXISTS_TABLE ADD COLUMN VAL1 VARCHAR"));
- StringAssert.EndsWith("The table does not exist
[name=\"PUBLIC\".\"NOT_EXISTS_TABLE\"]", ex!.Message);
- StringAssert.StartsWith("IGN-TBL-2", ex.Message);
- StringAssert.StartsWith("IGN-TBL-2", ex.CodeAsString);
- StringAssert.StartsWith("TBL", ex.GroupName);
+ Assert.AreEqual("The table does not exist
[name=\"PUBLIC\".\"NOT_EXISTS_TABLE\"]", ex!.Message);
+ Assert.AreEqual("IGN-TBL-2", ex.CodeAsString);
+ Assert.AreEqual("TBL", ex.GroupName);
Assert.AreEqual(ErrorGroups.Table.TableNotFound, ex.Code);
}
@@ -370,10 +368,9 @@ namespace Apache.Ignite.Tests.Sql
var ex = Assert.ThrowsAsync<ColumnAlreadyExistsException>(
async () => await Client.Sql.ExecuteAsync(null, "ALTER TABLE
TEST ADD COLUMN ID INT"));
- StringAssert.EndsWith("Column already exists [name=\"ID\"]",
ex!.Message);
- StringAssert.StartsWith("IGN-TBL-3", ex.Message);
- StringAssert.StartsWith("IGN-TBL-3", ex.CodeAsString);
- StringAssert.StartsWith("TBL", ex.GroupName);
+ Assert.AreEqual("Column already exists [name=\"ID\"]",
ex!.Message);
+ Assert.AreEqual("IGN-TBL-3", ex.CodeAsString);
+ Assert.AreEqual("TBL", ex.GroupName);
Assert.AreEqual(ErrorGroups.Table.ColumnAlreadyExists, ex.Code);
}
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Tables.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Tables.cs
index aa61d0fb2e..cde9b136ba 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Tables.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Tables.cs
@@ -17,7 +17,6 @@
namespace Apache.Ignite.Internal.Table
{
- using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/Statement.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/Statement.java
index f1d6c1a6bb..c2e5a0e9bd 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/Statement.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/Statement.java
@@ -17,6 +17,10 @@
package org.apache.ignite.internal.sqllogic;
+import static org.hamcrest.CoreMatchers.any;
+import static org.hamcrest.CoreMatchers.anyOf;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import com.google.common.base.Strings;
@@ -24,7 +28,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import org.hamcrest.CoreMatchers;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.Assertions;
@@ -146,11 +149,11 @@ final class Statement extends Command {
}
static ExpectedStatementStatus error() {
- return new ExpectedStatementStatus(false,
CoreMatchers.any(String.class));
+ return new ExpectedStatementStatus(false,
anyOf(nullValue(String.class), any(String.class)));
}
static ExpectedStatementStatus error(String errorMessage) {
- return new ExpectedStatementStatus(false,
CoreMatchers.containsString(errorMessage));
+ return new ExpectedStatementStatus(false,
containsString(errorMessage));
}
@Override
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/ErrorMessage.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/ErrorMessage.java
index 43900c918e..efcc218269 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/ErrorMessage.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/ErrorMessage.java
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.util.UUID;
import org.apache.ignite.network.NetworkMessage;
import org.apache.ignite.network.annotations.Transferable;
+import org.jetbrains.annotations.Nullable;
/**
* ErrorMessage interface.
@@ -51,5 +52,6 @@ public interface ErrorMessage extends NetworkMessage,
Serializable {
/**
* Gets original error message.
*/
+ @Nullable
String message();
}