This is an automated email from the ASF dual-hosted git repository. ppa pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new 076ef80617a IGNITE-17499 Fixed propagation of service call exception stacktrace to the client side (#10186) 076ef80617a is described below commit 076ef80617a87db5dcb87b3ae34e4eadfe8167fb Author: Mikhail Petrov <32207922+ololo3...@users.noreply.github.com> AuthorDate: Wed Aug 31 18:21:45 2022 +0300 IGNITE-17499 Fixed propagation of service call exception stacktrace to the client side (#10186) --- .../client/service/ClientServiceInvokeRequest.java | 2 +- .../Client/ClientConnectionTest.cs | 32 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/service/ClientServiceInvokeRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/service/ClientServiceInvokeRequest.java index 907f95af020..57aabbb0ef0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/service/ClientServiceInvokeRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/service/ClientServiceInvokeRequest.java @@ -195,7 +195,7 @@ public class ClientServiceInvokeRequest extends ClientRequest { catch (PlatformNativeException e) { ctx.kernalContext().log(getClass()).error("Failed to invoke platform service", e); - throw new IgniteException("Failed to invoke platform service, see server logs for details"); + throw new IgniteException("Failed to invoke platform service, see server logs for details", e); } catch (Throwable e) { throw new IgniteException(e); diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/ClientConnectionTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/ClientConnectionTest.cs index 9d19fd881e5..6e5761a1db6 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/ClientConnectionTest.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Client/ClientConnectionTest.cs @@ -36,6 +36,7 @@ namespace Apache.Ignite.Core.Tests.Client using Apache.Ignite.Core.Tests.Client.Cache; using Apache.Ignite.Core.Tests.Client.Compute; using Apache.Ignite.Core.Tests.Compute; + using Apache.Ignite.Core.Tests.Services; using NUnit.Framework; /// <summary> @@ -954,6 +955,37 @@ namespace Apache.Ignite.Core.Tests.Client } } + /// <summary> + /// Tests that the stack trace of an exception that occurred during a service call is propagated to the thin + /// client side. + /// </summary> + [Test] + public void TestSendServerServiceExceptionStackTraceToClient() + { + var ignite = Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration()) + { + ClientConnectorConfiguration = new ClientConnectorConfiguration + { + ThinClientConfiguration = new ThinClientConfiguration + { + SendServerExceptionStackTraceToClient = true, + } + } + }); + + const string svcName = "PlatformTestService"; + + ignite.GetServices().DeployClusterSingleton(svcName, new PlatformTestService()); + + using var client = StartClient(); + + var ex = Assert.Catch<Exception>(() => + client.GetServices().GetServiceProxy<IJavaService>(svcName).testException("")).GetBaseException(); + + StringAssert.Contains("ClassName=System.NotImplementedException", ex.Message); + StringAssert.Contains("Message=The method or operation is not implemented.", ex.Message); + } + /// <summary> /// Tests that server exception stack trace is included in error details when enabled. /// </summary>