In the current implementation, unverified index row cells can be visible to clients. One scenario where this can happen is as follows. A client attempts to write a full data row but the data row write fails. This leaves an unverified index row corresponding to this data row. Later, the client attempts to write to the same row but this time it writes a partial data row such that one of the covered columns does not have a value in this partial write. After this, there will be two versions of the index row, the first one is unverified and the second one is verified. When the client reads the row back from the index table, since HBase will merge two versions of this index row, the client will get some cells from the unverified index row such that these cells are not in the verified index row. This is a bug. The fix is very simple. In GlobalIndexChecker, we need to remove the cells from the previous versions of the row. Please note that every index row is composed of cells with the same timestamp by design. By implementing this fix, we will ensure that this property always holds.