Andrew Wong has posted comments on this change. ( http://gerrit.cloudera.org:8080/8859 )
Change subject: KUDU-2115: avoid compacting already-compacted rowsets ...................................................................... Patch Set 4: (2 comments) http://gerrit.cloudera.org:8080/#/c/8859/3//COMMIT_MSG Commit Message: http://gerrit.cloudera.org:8080/#/c/8859/3//COMMIT_MSG@19 PS3, Line 19: rowsets and the verification, the component_lock_ is dropped, allowing : the following race: : > The race wasn't immediately clear to me from the commit message but I looke Yep, the biggest piece of this is that the component_lock_ is dropped while running compaction selection policy. T1: makes copy {A,B} and drops component_lock_ T2: makes copy {A,B} and drops component_lock_ T1: considers {A,B}, and selects them for compaction, taking their compact_flush_lock_ T1: finishes compaction, removes rowsets from tree, drops {A,B}'s compact_flush_lock_ T2: considers {A,B}, and selects them for compaction, taking their compact_flush_lock_ T2: can't proceed because it can't find them in {A,B} in the rowset tree http://gerrit.cloudera.org:8080/#/c/8859/3//COMMIT_MSG@24 PS3, Line 24: T2: snapshots the rowset tree (which still contains {A, B}) > Ignoring and proceeding could have the side effect of running a fairly usel I'm not super convinced (a) would be able to avoid the race without holding the component lock while selecting, so I'm going with (b). -- To view, visit http://gerrit.cloudera.org:8080/8859 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I4dab330d61facb18717f6faf179f9b94a9e55236 Gerrit-Change-Number: 8859 Gerrit-PatchSet: 4 Gerrit-Owner: Andrew Wong <[email protected]> Gerrit-Reviewer: Andrew Wong <[email protected]> Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Mike Percy <[email protected]> Gerrit-Reviewer: Todd Lipcon <[email protected]> Gerrit-Comment-Date: Thu, 04 Jan 2018 19:00:21 +0000 Gerrit-HasComments: Yes
