Hello Kudu Jenkins, I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/6581 to look at the new patch set (#7). Change subject: fs: generate report during Open ...................................................................... fs: generate report during Open This patch modifies the FsManager and block managers to produce a filesystem report when opened. The report includes various filesystem statistics as well as all inconsistencies found and repaired. The heart of the patch is the FsReport nested data structure. Originally implemented as a protobuf to take advantage of DebugString(), I found it to be a poor fit once I began customizing the log output, so I rewrote it in its current form. The report includes fs-wide statistics as well as optional consistency checks that may or may not be performed by the block managers. Reports can be merged; the LBM takes advantage of this as it processes data directories in parallel. The consistency checks have structure, so as to simplify testing and ToString() customization. A sample report can be found at the end of this commit message. Thanks to the level of detail in the FsReport, the LBM now separates the act of finding inconsistencies from repairing them. This makes it much easier to enforce that repairs aren't done on a read-only filesystem, or if there were any fatal and irreparable errors. Thorough testing of the inconsistencies in the report is deferred to a different patch as this one was already quite large. Other changes of note: - The LBM treats data files without matching metadata files as incomplete containers; previously only metadata files without matching data files were treated in this way. - The LBM maps all containers by name so they can be looked up during the repair process; previously they were stored in a vector. - The checks performed by "kudu fs check" are in FsReport. I think this makes sense, and it's an acknowledgement that they should be performed by the block manager in the future. The code in tool_action_fs.cc was restructured to write its findings into the report before logging it. Block manager report -------------------- 1 data directories: /tmp/kudutest-1000/block_manager-stress-test.BlockManagerStressTest_1.StressTest.1491963221016069-10059 Total live blocks: 47 Total live bytes: 221524 Total live bytes (after alignment): 323582 Total number of LBM containers: 53 (21 full) Did not check for missing blocks Did not check for orphaned blocks Total full LBM containers with preallocated space: 0 (0 repaired) Total full LBM container preallocated space in bytes: 0 (0 repaired) Total incomplete LBM containers: 3 (3 repaired) Misaligned block in container /tmp/kudutest-1000/block_manager-stress-test.BlockManagerStressTest_1.StressTest.1491963221016069-10059/038a826c27db4e6da8237ce79853ece2: block_id { id: 9225972546088407965 } op_type: CREATE timestamp_us: 0 offset: 1052673 length: 16384 Misaligned block in container /tmp/kudutest-1000/block_manager-stress-test.BlockManagerStressTest_1.StressTest.1491963221016069-10059/0612d7730bdc4cfd83afbaed271d5289: block_id { id: 3148617980286357277 } op_type: CREATE timestamp_us: 0 offset: 1048577 length: 16384 Total LBM partial records: 7 (7 repaired) Change-Id: Idcc1d512e2bed103c8d41623a63b4d071532b35e --- M src/kudu/fs/CMakeLists.txt M src/kudu/fs/block_manager-stress-test.cc M src/kudu/fs/block_manager-test.cc 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/fs_manager.cc M src/kudu/fs/fs_manager.h A src/kudu/fs/fs_report.cc A src/kudu/fs/fs_report.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/server/server_base.cc M src/kudu/tools/kudu-tool-test.cc M src/kudu/tools/tool_action_fs.cc M src/kudu/util/pb_util.cc 17 files changed, 1,092 insertions(+), 216 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/81/6581/7 -- To view, visit http://gerrit.cloudera.org:8080/6581 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Idcc1d512e2bed103c8d41623a63b4d071532b35e Gerrit-PatchSet: 7 Gerrit-Project: kudu Gerrit-Branch: master Gerrit-Owner: Adar Dembo <a...@cloudera.com> Gerrit-Reviewer: Adar Dembo <a...@cloudera.com> Gerrit-Reviewer: Andrew Wong <aw...@cloudera.com> Gerrit-Reviewer: David Ribeiro Alves <dral...@apache.org> Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon <t...@apache.org>