Hi, I have seen some discussion related to pushing/loading coprocessors in the regions dynamically from the SQL client side when Trafodion is started or when a table is opened. The motivation here is to be able to install Trafodion without having to stop/restart HBase where a customer might have a previous HBase installation.
I want to point out that Trafodion uses a TrxRegionEndpoint and a TrxRegionObserver coprocessor. These two coprocessors work in tandem to ensure region split, region rebalance, and region recovery are possible for multi-table transactions. These two coprocessors ensure data consistency and form the basis of our ACID transaction implementation. We currently mandate that these two coprocessors have entries in the hbase-site.xml file. While I have no problem loading other coprocessors dynamically, I do not think it is a good idea to load these two on the fly without stopping/restarting HBase, at least not in the current design. The issue is that other components in the DTM may have code changes that assume the corresponding versions of these coprocessors are loaded and running. If the DTM components are not compatible with the coprocessors, unpredictable results could occur, including system hangs, process failures, and data corruption. Furthermore, if the coprocessors are loaded dynamically and the entries are not in the hbase-site.xml file, then Trafodion recovery would effectively be abandoned before the regions are started and there would be no way to correct the inconsistencies short of dropping and recreating the tables. So the 2 main points I hope the readers of this discussion will take away based on the current Trafodion design are: 1) The TrxRegionEndpoint and TrxRegionObserver coprocessors must remain in the hbase-site.xml file to ensure recovery occurs before the regions are started and open for HBase activity. 2) Trafodion and the above coprocessors must run compatible versions of software to ensure proper function. These two coprocessors are not static, so it is likely that if Trafodion code has changed, so have the coprocessors. Thanks, Sean
