[ 
https://issues.apache.org/jira/browse/IGNITE-22597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladislav Pyatkov updated IGNITE-22597:
---------------------------------------
    Description: 
h3. Motivation
The trace id is generated at the place where the original exception was created 
and should be propogated to other derevatives. Right now, we send only an 
exception message and class name to the RAFT listener response.
{code:java}
private void sendSMError(RpcContext ctx, Throwable th, boolean compacted) {
    RpcRequests.SMErrorResponse resp = factory.sMErrorResponse()
        .error(compacted ? new SMCompactedThrowable(th) : new 
SMFullThrowable(th))
        .build();

    ctx.sendResponse(resp);

    LOG.info("Error occurred on a user's state machine", th);
}
{code}
Hence, we cannot restore the trace id and create an exception with a new trace 
id:
{code:java}
Throwable restoredTh = (Throwable) 
Class.forName(compactedThrowable.throwableClassName())
        .getConstructor(String.class)
        .newInstance(compactedThrowable.throwableMessage());

fut.completeExceptionally(restoredTh);
{code}

h3. Definition of done
* Both attached logs should be logged with the same trace id.
* Massage in the RAFT listener should be logged in error (or warning) level.


  was:
h3. Motivation
The trace id is generated at the place where the original exception was created 
and should be propogated to other derevatives. Right now, we send only an 
exception message and class name to the RAFT listener response.
{code:java}
private void sendSMError(RpcContext ctx, Throwable th, boolean compacted) {
    RpcRequests.SMErrorResponse resp = factory.sMErrorResponse()
        .error(compacted ? new SMCompactedThrowable(th) : new 
SMFullThrowable(th))
        .build();

    ctx.sendResponse(resp);

    LOG.info("Error occurred on a user's state machine", th);
}
{code}
Hence, we cannot restore the trace id and create an exception with a new trace 
id:
{code:java}
Throwable restoredTh = (Throwable) 
Class.forName(compactedThrowable.throwableClassName())
        .getConstructor(String.class)
        .newInstance(compactedThrowable.throwableMessage());

fut.completeExceptionally(restoredTh);
{code}

h3 Definition of done
* Both attached logs should be logged with the same trace id.
* Massage in the RAFT listener should be logged in error (or warning) level.



> Exception trace id is not propagated from RAFT listener
> -------------------------------------------------------
>
>                 Key: IGNITE-22597
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22597
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>         Attachments: error_log.txt
>
>
> h3. Motivation
> The trace id is generated at the place where the original exception was 
> created and should be propogated to other derevatives. Right now, we send 
> only an exception message and class name to the RAFT listener response.
> {code:java}
> private void sendSMError(RpcContext ctx, Throwable th, boolean compacted) {
>     RpcRequests.SMErrorResponse resp = factory.sMErrorResponse()
>         .error(compacted ? new SMCompactedThrowable(th) : new 
> SMFullThrowable(th))
>         .build();
>     ctx.sendResponse(resp);
>     LOG.info("Error occurred on a user's state machine", th);
> }
> {code}
> Hence, we cannot restore the trace id and create an exception with a new 
> trace id:
> {code:java}
> Throwable restoredTh = (Throwable) 
> Class.forName(compactedThrowable.throwableClassName())
>         .getConstructor(String.class)
>         .newInstance(compactedThrowable.throwableMessage());
> fut.completeExceptionally(restoredTh);
> {code}
> h3. Definition of done
> * Both attached logs should be logged with the same trace id.
> * Massage in the RAFT listener should be logged in error (or warning) level.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to