A user wanted to know if it is possible to manually repair a Nodesync-enabled table if the Nodesync service is turned off/disabled.
By design, tables which have Nodesync configured cannot have an anti-entropy repair run on them. An attempt to run a repair on a Nodesync-enabled table will be rejected, even if the Nodesync service is disabled.
Let me illustrate with this example table:
CREATE TABLE community.members ( email text PRIMARY KEY, name text, ... ) WITH nodesync = {'enabled': 'true'};
In this series of commands, I check the status of the Nodesync service and shut it down:
$ nodetool nodesyncservice status The NodeSync service is running
$ nodetool nodesyncservice disable $ nodetool nodesyncservice status The NodeSync service is not running
An attempt to manually repair the table will be rejected by Cassandra:
$ nodetool repair -pr community members [2020-05-05 12:17:46,575] Cannot run anti-entropy repair on tables with NodeSync enabled (and NodeSync is enabled on [community.members]) [2020-05-05 12:17:46,577] Repair command #1 finished with error error: Repair job has failed with the error message: [2020-05-05 12:17:46,575] Cannot run anti-entropy repair on tables with NodeSync enabled (and NodeSync is enabled on [community.members]) -- StackTrace -- java.lang.RuntimeException: Repair job has failed with the error message: [2020-05-05 12:17:46,575] Cannot run anti-entropy repair on tables with NodeSync enabled (and NodeSync is enabled on [community.members]) at org.apache.cassandra.tools.RepairRunner.progress(RepairRunner.java:136) at org.apache.cassandra.utils.progress.jmx.JMXNotificationProgressListener.handleNotification(JMXNotificationProgressListener.java:77) at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.dispatchNotification(ClientNotifForwarder.java:583) at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.doRun(ClientNotifForwarder.java:533) at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.run(ClientNotifForwarder.java:452) at com.sun.jmx.remote.internal.ClientNotifForwarder$LinearExecutor$1.run(ClientNotifForwarder.java:108)
For more information, see Nodesync service. Cheers!
8 People are following this question.
Is it OK to completely disable repairs and just use NodeSync?
OpsCenter reports "Cannot run anti-entropy repair on tables with NodeSync enabled"
Can we ALTER TABLE and disable NodeSync service and run nodetool repair?
Can I enable nodesync and run OpsCenter repairs continuously?
OpsCenter shows 24% of the data was not synced before the NodeSync deadline
DataStax Enterprise is powered by the best distribution of Apache Cassandra ™
© 2023 DataStax, Titan, and TitanDB are registered trademarks of DataStax, Inc. and its subsidiaries in the United States and/or other countries.
Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries.
Privacy Policy Terms of Use