dcapwell commented on code in PR #3662:
URL: https://github.com/apache/cassandra/pull/3662#discussion_r1838476009


##########
src/java/org/apache/cassandra/config/AccordSpec.java:
##########
@@ -38,6 +38,20 @@ public class AccordSpec
 
     public volatile boolean enable_journal_compaction = true;
 
+    /**
+     * Enables the virtual Accord debug keyspace with tables
+     * that expose internal state to aid the developers working
+     * on Accord implementation.
+     * <p/>
+     * These tables can and will change and/or go away at any point,
+     * including in a minor release, and are NOT to be relied on for anything.
+     * <p/>
+     * Only enable this keyspace if you are working on Accord and
+     * need to debug an issue with Accord implementation, or if an Accord
+     * developer asked you to.
+     */
+    public boolean enable_virtual_debug_keyspace = false;

Review Comment:
   >  But, it is helpful to expose these details to operators for human 
interpretation of the cluster state only.
   
   If the assumption is to expose this for operators, then operators will build 
tools as manual work is a massive waste of operator time.  So breaking the 
table becomes a massive burden for operators, who you are saying are a target 
audience.  
   
   If the audience is tests, then flagging on for tests and off for prod is 
fine for me, we do this with system properties today.
   
   > To my knowledge it is not project policy that virtual tables must be 
consumable by applications,
   
   at no point have I said "consumable by applications", I said "public api".  
We have had a long stance that every table and every JMX is part of our public 
API and we can not break.  I have also said there is a desire and willingness 
to define breakable tables, but we must do it in a way that actually documents 
that tables are breakable, which is one of the main reasons the ML has focused 
on how do we expose this detail to users / operators.  If someone sees `debug` 
do they think this can change at a moments notice, or that this is useful to 
debug the issues you are facing?  The focus on the ML has been the word 
"experimental" as the focus was on tables not 100% ready for production, but 
this patch wants a different definition, one I don't think anyone is opposed 
to... my concern is articulating this to people, I want to avoid people being 
blind sided by a breaking change.
   
   Tl;DR - if this is for tests or people working on accord patches and won't 
be enabled for prod, I am mostly fine, but still think a better config name 
would help give this message.
   
   If the audience is operations this then means enabled on prod, then I don't 
think the config name or documentation tells operators what rules they should 
expect around the API changing.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to