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

huginn updated HBASE-30397:
---------------------------
    Description: 
What happens

When ReplicationSourceShipper.clearWALEntryBatch is interrupted while waiting 
for the shipper and reader threads to stop, the warning log contains an extra 
unresolved placeholder in the message.

When it happens

During replication source shutdown or termination, if the wait in 
clearWALEntryBatch is interrupted before both threads stop.

Impact

The replication cleanup behavior is unchanged, but the incomplete warning makes 
the log harder to read and obscures the intended shutdown context.

Root cause

In 
hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.java,
 the InterruptedException branch uses a message with three placeholders but 
passes the exception as the final Throwable argument. SLF4J treats a final 
Throwable specially and excludes it from placeholder substitution, so only the 
peer ID and thread name fill placeholders.

Proposed fix

Remove the final placeholder and keep the InterruptedException as the final 
Throwable argument. This makes the two placeholders match the peer ID and 
thread name while preserving the full exception stack trace.

Reproduction

Trigger an interruption while clearWALEntryBatch is waiting for the shipper and 
reader threads to stop, then inspect the warning log. Validation is limited to 
source review and logging behavior; no unit test is included for this 
logging-only change.

  was:
What happens

When ReplicationSourceShipper.clearWALEntryBatch is interrupted while waiting 
for the shipper and reader threads to stop, the warning log can leave its final 
placeholder unresolved instead of including the interruption value in the 
message.

When it happens

During replication source shutdown or termination, if the wait in 
clearWALEntryBatch is interrupted before both threads stop.

Impact

The warning is incomplete and makes it harder to identify the interruption that 
prevented cleanup from completing.

Root cause

In 
hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.java,
 the InterruptedException branch passes the exception as the last argument to a 
message with three placeholders. SLF4J treats a final Throwable specially, so 
the last placeholder is not populated as intended.

Proposed fix

Format the interrupted exception explicitly with e.toString() for the final 
placeholder, preserving the peer ID and thread name in the warning message.

Reproduction

Testing evidence will be added by the reporter.


> Correct interrupted log message in ReplicationSourceShipper.clearWALEntryBatch
> ------------------------------------------------------------------------------
>
>                 Key: HBASE-30397
>                 URL: https://issues.apache.org/jira/browse/HBASE-30397
>             Project: HBase
>          Issue Type: Bug
>            Reporter: huginn
>            Priority: Major
>              Labels: pull-request-available
>
> What happens
> When ReplicationSourceShipper.clearWALEntryBatch is interrupted while waiting 
> for the shipper and reader threads to stop, the warning log contains an extra 
> unresolved placeholder in the message.
> When it happens
> During replication source shutdown or termination, if the wait in 
> clearWALEntryBatch is interrupted before both threads stop.
> Impact
> The replication cleanup behavior is unchanged, but the incomplete warning 
> makes the log harder to read and obscures the intended shutdown context.
> Root cause
> In 
> hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.java,
>  the InterruptedException branch uses a message with three placeholders but 
> passes the exception as the final Throwable argument. SLF4J treats a final 
> Throwable specially and excludes it from placeholder substitution, so only 
> the peer ID and thread name fill placeholders.
> Proposed fix
> Remove the final placeholder and keep the InterruptedException as the final 
> Throwable argument. This makes the two placeholders match the peer ID and 
> thread name while preserving the full exception stack trace.
> Reproduction
> Trigger an interruption while clearWALEntryBatch is waiting for the shipper 
> and reader threads to stop, then inspect the warning log. Validation is 
> limited to source review and logging behavior; no unit test is included for 
> this logging-only change.



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

Reply via email to