Hello Tidy Bot, Kudu Jenkins, Adar Dembo, I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/8465 to look at the new patch set (#6). Change subject: KUDU-2202 avoid block ID reuse for missing dirs ...................................................................... KUDU-2202 avoid block ID reuse for missing dirs The block manager is initially only aware of the blocks it reads when first loading the FS layout. If the opening of a directory fails (e.g. due to a disk failure), the server can still start up, but will fail any tablet configured to use that directory. By not scanning the failed directory, the server will "forget" about some blocks. Since LBM block IDs are sequentially allocated just past the end of the greatest known ID, it's possible for new tablet to create blocks with IDs already assigned to a failed tablet. If that failed tablet is deleted, the live data belonging to the second tablet will be deleted. To prevent this, a new API has been added to the block managers to grant external components the ability to notify the block manager of block IDs. In loading a tablet's metadata, once all rowsets and orphaned blocks have been seen, the block manager is notified of the highest block ID in the the superblock. This patch only targets the LBM, which assigns blocks sequentially, and therefore only needs to know about the largest block ID referenced by tablets. A unit test is added to log_block_manager-test and an integration test is added to ts_recovery-itest to ensure block ID reuse does not happen. Also includes some C++11/stylistic cleanup. Change-Id: I06f10e95278dafdedcab432a7d4d1dc5c59bf4cc --- M src/kudu/fs/block_id.h M src/kudu/fs/block_manager.h M src/kudu/fs/file_block_manager.cc M src/kudu/fs/file_block_manager.h M src/kudu/fs/log_block_manager-test.cc M src/kudu/fs/log_block_manager.cc M src/kudu/fs/log_block_manager.h M src/kudu/integration-tests/ts_recovery-itest.cc M src/kudu/tablet/diskrowset.cc M src/kudu/tablet/metadata-test.cc M src/kudu/tablet/rowset_metadata.cc M src/kudu/tablet/rowset_metadata.h M src/kudu/tablet/tablet-test-util.h M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h 15 files changed, 246 insertions(+), 58 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/65/8465/6 -- To view, visit http://gerrit.cloudera.org:8080/8465 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I06f10e95278dafdedcab432a7d4d1dc5c59bf4cc Gerrit-Change-Number: 8465 Gerrit-PatchSet: 6 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: Tidy Bot