You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kudu.apache.org by "David Ribeiro Alves (Code Review)" <ge...@ip-10-146-233-104.ec2.internal> on 2016/01/23 05:38:51 UTC

[kudu-CR] KUDU-1297 - Fix RowSetTree sorting on mac osx

David Ribeiro Alves has uploaded a new change for review.

  http://gerrit.cloudera.org:8080/1885

Change subject: KUDU-1297 - Fix RowSetTree sorting on mac osx
......................................................................

KUDU-1297 - Fix RowSetTree sorting on mac osx

We use a sorting function, RSEndpointBySliceCompare(), for the std::sort()
call in RowSetTree::Reset().

Sorting functions have a hard requirement that they should only return
true iif a < b and should return false in all other cases. Our function would
behave well in all cases except when a == b, in which case it might return
true or false depending on whether a.endpoint_ == START or a.endpoint_ == STOP.

Apparently when this requirement is not met, in some cases, segfaults ensue:
https://schneide.wordpress.com/2010/11/01/bug-hunting-fun-with-stdsort/

The fix is to return false if a == b. I've made sure that this fixes
the failing test (rowset_tree-test) in mac osx.

Change-Id: I315b4a71438cccb7bdc12e8929b064e9e5074f71
---
M src/kudu/tablet/rowset_tree-test.cc
M src/kudu/tablet/rowset_tree.cc
2 files changed, 4 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/85/1885/1
-- 
To view, visit http://gerrit.cloudera.org:8080/1885
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I315b4a71438cccb7bdc12e8929b064e9e5074f71
Gerrit-PatchSet: 1
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: David Ribeiro Alves <da...@cloudera.com>