Scott Bale created CASSANDRA-13121: -------------------------------------- Summary: repair progress message breaks legacy JMX support Key: CASSANDRA-13121 URL: https://issues.apache.org/jira/browse/CASSANDRA-13121 Project: Cassandra Issue Type: Bug Components: Streaming and Messaging Reporter: Scott Bale Priority: Minor
The error progress message in {{RepairRunnable}} is not compliant with the {{LegacyJMXProgressSupport}} class, which uses a regex to match on the text of a progress event. Therefore, actual failures slip through as successes if using legacy JMX for repairs. In {{RepairRunnable}} {code} protected void fireErrorAndComplete(String tag, int progressCount, int totalProgress, String message) { fireProgressEvent(tag, new ProgressEvent(ProgressEventType.ERROR, progressCount, totalProgress, message)); fireProgressEvent(tag, new ProgressEvent(ProgressEventType.COMPLETE, progressCount, totalProgress, String.format("Repair command #%d finished with error", cmd))); } {code} Note the {{"Repair command #%d finished with error"}} See https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/repair/RepairRunnable.java#L109 In {{LegacyJMXProgressSupport}}: {code} protected static final Pattern SESSION_FAILED_MATCHER = Pattern.compile("Repair session .* for range .* failed with error .*"); protected static final Pattern SESSION_SUCCESS_MATCHER = Pattern.compile("Repair session .* for range .* finished"); {code} See https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/utils/progress/jmx/LegacyJMXProgressSupport.java#L38 Legacy JMX support was introduced for CASSANDRA-11430 (version 2.2.6) and the bug was introduced as part of CASSANDRA-12279 (version 2.2.8). -- This message was sent by Atlassian JIRA (v6.3.4#6332)