As part of fixing 3229, I have some questions about usage scenarios of 
coprocessor in table operations, e.g., MasterObserver::preEnableTable, etc.

1.      Operations like preAddColumn, etc. don't honor coprocessor's request to 
bypass default behavior, as in MasterCoProcessorHost.java. Is that a bug or 
there is some reason for that?  It seems useful feature if coprocessor can 
disallow addColumn, for example.
2.      Some of these operations like EnableTable is async. postEnableTable is 
called right after the request is queued to the thread pool. So there is no 
guarantee the process is done by the time postEnableTable is called. Yes, 
postEnableTable won't be called if the validation in the constructor of 
EnableTableHandler throws exception. Still, what are the scenarios that 
postEnableTable can be useful in the async implementation?
3.      Method signature in MasterObserver::preCreateTable uses 
tableDescriptor+splitKey; MasterObserver:: postCreateTable signature uses 
HRegionInfo. They are essential the same thing. Why can't we use the same 
signature, like HRegionInfo instead?

If these are indeed issues, I can follow up and fix them.

Ming

Reply via email to