Adar Dembo has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/8423 )
Change subject: cfile_set: make FindRow more robust to errors ...................................................................... cfile_set: make FindRow more robust to errors Previously, FindRow() would not handle certain error cases well. I.e. when seeking on a key, it wouldn't consider all errors before returning the seek results. For example, currently, FindRow() scans over CFiles and if 1) it hits a Status::NotFound() error, or 2) the key search returned without being an exact match, it returns success, returning the row is not present. However, 2) does not take into account the OK-ness of the returned scans, and thus may return healthily saying it couldn't find the row, even though this may not be the case. This allows the currently-running operation to continue under the potentially incorrect assumption that the key is not present, when it should actually return with the appropriate error. In the case of DuplicatingRowSet::MutateRow(), this is particularly nasty: it expects operations to be mirrored to two separate rowsets, and the above scenario may present itself as a fatal failure to do so. In practice, this hasn't been an issue because we might only expect various fs-level errors (e.g. corruption, disk errors) here, which we already don't handle gracefully. However, this needs to change to be robust to disk failures. Similarly, FindRow() will now return early if it hits a disk failure in the bloom look-up. A small test is added to diskrowset-test to ensure errors are returned appropriately. Change-Id: I41b56cbbf1b3b00fdb4dbf1ec08f12ced97088e7 Reviewed-on: http://gerrit.cloudera.org:8080/8423 Tested-by: Kudu Jenkins Reviewed-by: Adar Dembo <a...@cloudera.com> --- M src/kudu/tablet/cfile_set.cc M src/kudu/tablet/diskrowset-test.cc 2 files changed, 37 insertions(+), 1 deletion(-) Approvals: Kudu Jenkins: Verified Adar Dembo: Looks good to me, approved -- To view, visit http://gerrit.cloudera.org:8080/8423 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I41b56cbbf1b3b00fdb4dbf1ec08f12ced97088e7 Gerrit-Change-Number: 8423 Gerrit-PatchSet: 2 Gerrit-Owner: Andrew Wong <aw...@cloudera.com> Gerrit-Reviewer: Adar Dembo <a...@cloudera.com> Gerrit-Reviewer: Andrew Wong <aw...@cloudera.com> Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Todd Lipcon <t...@apache.org>