You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by Apache Wiki <wi...@apache.org> on 2014/07/29 18:08:22 UTC

[Cassandra Wiki] Update of "RepairAsyncAPI" by yukim

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "RepairAsyncAPI" page has been changed by yukim:
https://wiki.apache.org/cassandra/RepairAsyncAPI

New page:
= Repair Async API =

Repair used to be invoked through sync JMX interface, but since repair takes time to finish, JMX connection timeout happens sometimes.
So [[https://issues.apache.org/jira/browse/CASSANDRA-4767|CASSANDRA-4767]] added asynchronous repair API which once invoked users can track repair progress through JMX notification.

== Repair JMX Notification ==

Repair JMX Notification is sent from StorageService MBean(org.apache.cassandra.db:type=StorageService).

Before you run repair, you should subscribe to receive JMX notification otherwise you may miss some of messages.

Repair JMX Notification contains the following.

|| type      || "repair" ||
|| message   || repair status message ||
|| user data || int array containing command number and repair status ||

'''message''' is repair status message like "Starting repair ..." or error message.

'''user data''' is int array of 2 elements. The first element is ''command number'' which is assigned uniquely when repair is invoked through async API. You can obtain command number as return value of async APIs. The second element is repair status number as shown below.

|| 0 || STARTED         || repair command started ||
|| 1 || SESSION_SUCCESS || repair session (repair for one range in a keyspace) succeeded ||
|| 2 || SESSION_FAILED  || repair session failed ||
|| 3 || FINISHED        || repair command finished ||

(In the code, these are defined as ActiveRepairService.Status enum.)

''nodetool repair'' command also uses these status to track repair progress.

== Further improvement ==

Still, the granuality of tracking repair status is large. Repair involves several nodes who do validation compaction and file streaming. Each of those are monitored through ''nodetool compactionstat'' and ''nodetool netstat'' on each node.

Possible solution to track the whole repair process is to [[https://issues.apache.org/jira/browse/CASSANDRA-5483|Repair tracing]].