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
