[
https://issues.redhat.com/browse/ISPN-11022?page=com.atlassian.jira.plugi...
]
Dan Berindei commented on ISPN-11022:
-------------------------------------
Exception stack traces are pretty big, apparently big enough to make a bad situation
worse:
https://stackoverflow.com/questions/59236742/communicating-infinispan-rem...
With the triangle algorithm there shouldn't be any cases where the originator talks to
the primary owner, which waits for acks from all the backups before replying to the
primary. That being said, if there are still any O->P->B->P->O situations,
we're almost certainly using the same timeout for both RPCs, and it doesn't make
sense for P to send a stack trace to O because O's RPC is timing out at the same
time.
Maybe we should skip sending the stack trace for all exceptions and instead of adding a
fake stace in {{ThrowableExternalizer}} change the exception message to something like
{{"Please look up the full remote stack trace in the log of %s"}}
Remote exception stack traces are not serialized
------------------------------------------------
Key: ISPN-11022
URL:
https://issues.redhat.com/browse/ISPN-11022
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 10.0.0.Final, 10.1.0.Beta1
Reporter: Dan Berindei
Priority: Major
Fix For: 10.1.0.Final
Since ISPN-10345, we have an externalizer for all the exceptions we use internally, but
it does not serialize the stack trace, so the exception created on the originator has the
wrong stack trace:
{noformat}
Caused by: org.infinispan.remoting.RemoteException: ISPN000217: Received exception from
NonIndexedPojoQueryTest-NodeB-14679, see cause for remote stack trace
at
org.infinispan.remoting.transport.ResponseCollectors.wrapRemoteException(ResponseCollectors.java:26)
at
org.infinispan.remoting.transport.ValidSingleResponseCollector.withException(ValidSingleResponseCollector.java:37)
at
org.infinispan.remoting.transport.ValidSingleResponseCollector.addResponse(ValidSingleResponseCollector.java:21)
at
org.infinispan.remoting.transport.impl.SingleTargetRequest.addResponse(SingleTargetRequest.java:72)
at
org.infinispan.remoting.transport.impl.SingleTargetRequest.onResponse(SingleTargetRequest.java:42)
... 24 more
Caused by: org.infinispan.commons.CacheConfigurationException: Unable to inject
dependencies for component class
org.infinispan.query.dsl.embedded.impl.IckleFilterAndConverter, path null
at
org.infinispan.marshall.exts.ThrowableExternalizer.readObject(ThrowableExternalizer.java:177)
at
org.infinispan.marshall.exts.ThrowableExternalizer.readObject(ThrowableExternalizer.java:42)
at
org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
at
org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
at
org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
at
org.infinispan.marshall.core.BytesObjectInput.readObject(BytesObjectInput.java:32)
at
org.infinispan.remoting.responses.ExceptionResponse$Externalizer.readObject(ExceptionResponse.java:49)
at
org.infinispan.remoting.responses.ExceptionResponse$Externalizer.readObject(ExceptionResponse.java:41)
at
org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
at
org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
at
org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
at
org.infinispan.marshall.core.GlobalMarshaller.objectFromObjectInput(GlobalMarshaller.java:192)
at
org.infinispan.marshall.core.GlobalMarshaller.objectFromByteBuffer(GlobalMarshaller.java:221)
at
org.infinispan.remoting.transport.jgroups.JGroupsTransport.processResponse(JGroupsTransport.java:1405)
... 22 more
Caused by: org.infinispan.commons.CacheException: Expected component not found in
registry: org.infinispan.query.remote.impl.ObjectReflectionMatcher
at
org.infinispan.marshall.exts.ThrowableExternalizer.readObject(ThrowableExternalizer.java:181)
at
org.infinispan.marshall.exts.ThrowableExternalizer.readObject(ThrowableExternalizer.java:42)
at
org.infinispan.marshall.core.GlobalMarshaller.readWithExternalizer(GlobalMarshaller.java:728)
at
org.infinispan.marshall.core.GlobalMarshaller.readNonNullableObject(GlobalMarshaller.java:709)
at
org.infinispan.marshall.core.GlobalMarshaller.readNullableObject(GlobalMarshaller.java:358)
at
org.infinispan.marshall.core.BytesObjectInput.readObject(BytesObjectInput.java:32)
at
org.infinispan.marshall.exts.ThrowableExternalizer.readObject(ThrowableExternalizer.java:176)
... 35 more
{noformat}
We should include the stack trace when serializing remote exceptions, and use
{{Throwable.setStackTrace()}} to restore it on the originator.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)