If I launch an hbase shell that uses HBase and ZooKeeper without HBASE-5155, against HBase servers with HBASE-5155, then is_enabled for a table always returns false even if the table is considered enabled by the servers from the logs. If I then do the same thing but with an HBase shell and ZooKeeper with HBASE-5155, then is_enabled returns as expected.
If I launch an HBase shell that uses HBase and ZooKeeper without HBASE-5155, against HBase servers also without HBASE-5155, then is_enabled works as you'd expect. But if I then do the same thing but with an HBase shell and ZooKeeper with HBASE-5155, then is_enabled returns false even though the table is considered enabled by the servers from the logs.
Additionally, if I then try to enable the table from the HBASE-5155-containing shell, it hangs because the ZooKeeper code waits for the ZNode to be updated with "ENABLED" in the data field, but what actually happens is that the ZNode gets deleted since the servers are running without HBASE-5155.
I think the culprit is that the indication of how a table is considered enabled inside ZooKeeper has changed with HBASE-5155. Before HBASE-5155, a table was considered enabled if the ZNode for it did not exist. After HBASE-5155, a table is considered enabled if the ZNode for it exists and has "ENABLED" in its data. I think the current code is incompatible when running clients and servers where one side has HBASE-5155 and the other side does not.
|Field||Original Value||New Value|
|Attachment||HBASE-5904.patch [ 12525881 ]|
|Status||Open [ 1 ]||Patch Available [ 10002 ]|
|Assignee||David S. Wang [ dsw ]|
|Fix Version/s||0.90.7 [ 12319481 ]|
|Priority||Major [ 3 ]||Blocker [ 1 ]|
|Status||Patch Available [ 10002 ]||Resolved [ 5 ]|
|Hadoop Flags||Reviewed [ 10343 ]|
|Release Note||This reverts a patch included in 0.90.6 that broke compatibility.|
|Resolution||Fixed [ 1 ]|