Henry Robinson has posted comments on this change. Change subject: IMPALA-3823: Add timer to measure Parquet footer reads ......................................................................
Patch Set 6: (1 comment) http://gerrit.cloudera.org:8080/#/c/4371/6/be/src/util/runtime-profile-counters.h File be/src/util/runtime-profile-counters.h: Line 228: int32_t total_num_values() const { return total_num_values_; } > Since it's only a read, I figured even if the CPU reorders the read instruc Without reader synchronization you can probably have the following sequence: Previously, counter.min = counter.max = 0 Writer: counter.min = V counter.max = V Reader: mn = counter->min_value() // == V mx = counter->max_value() // == 0 DCHECK_LE(mn, mx) << "Fails" So you would need to synchronize with the writer to ensure that an update appears atomic. TSO helps you avoid certain kinds of ordering bugs - but remember that others are trying to port this to PPC. You have, in RuntimeProfile::SummaryStatsCounter::UpdateCounter(): ++total_num_values_; sum_ += new_value; If you did an unsynchronized read of sum and total_num_values on a non-TSO architecture, you could easily get total_num_values == 0 but sum > 0. -- To view, visit http://gerrit.cloudera.org:8080/4371 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: Icf87bad90037dd0cea63b10c537382ec0f980cbf Gerrit-PatchSet: 6 Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-Owner: Sailesh Mukil <sail...@cloudera.com> Gerrit-Reviewer: Dan Hecht <dhe...@cloudera.com> Gerrit-Reviewer: Henry Robinson <he...@cloudera.com> Gerrit-Reviewer: Matthew Jacobs <m...@cloudera.com> Gerrit-Reviewer: Sailesh Mukil <sail...@cloudera.com> Gerrit-HasComments: Yes