Fix iterator API (1.2 based) #24

Merged
merged 2 commits into from Sep 4, 2012

Projects

None yet

3 participants

@rzezeski
Contributor
rzezeski commented Sep 4, 2012

Please see commit comments for details of the issue.

This fix is important because Riak Search handoff cannot complete without it and therefore cluster transitions will never finish.

There are no good work arounds for this issue but if you want handoff to complete you could try one of the following.

  1. Increase the segment_full_read_size--but this only delays the inevitable and causes more memory usage.
  2. Delete the merge index data--this means everything needs to be re-indexed.
rzezeski added some commits Aug 31, 2012
@rzezeski rzezeski Add failing iterator test
Add the iterator command to the EQC test to prove that it is broken.
9b068e8
@rzezeski rzezeski Fix iterator API
The iterator API will timeout any time there is a segment larger than
the `segment_full_read_size`.  In this scenario the segment file is
opened by the `mi_server` process but then reading is attempted by the
spawned iterator process.  Since the segment file is opened in raw mode
this will fail.  The port message will go to the `mi_server` causing
an `Unexpected info...` msg and the iteraor will hit the
`lookup_timeout`.

Many thanks to Arnaud Wetzel who discovered this bug and took time to
explain it to me.
9c2a4b7
@travisbot

This pull request passes (merged 9c2a4b7 into d56a99b).

@rzezeski rzezeski referenced this pull request Sep 4, 2012
Closed

Fix iterator API #23

@kellymclaughlin
Contributor

Changes look good. Verified that the modified test fails on master and passes on rz-fix-iter-1.2. +1 to merge.

@rzezeski rzezeski merged commit 9c2a4b7 into 1.2 Sep 4, 2012

1 check passed

default The Travis build passed
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment