The iterator always read one transaction ahead (see implementation of the next() method). A failure in readNextTransaction() must be reported when next() is invoked for that transaction and not the one before. Here we dealing with the failure immediately because we are positioning the iterator the initial timestamp.