Do you mean to say you see this from the RFile Reader?
Dylan Hutchison wrote:
While debugging a custom iterator today to find the source of a logical
error, I discovered something an iterator developer may not expect. The
getTopValue() of RFile returns a reference to the RFile's internal Value
private variable. The private variable is modified inside RFile via
val.readFields(currBlock);
which means that if an iterator stores the reference from getTopValue(),
that is, without copying the Value to a new Object, then the value will
be updated in the iterator when the RFile's next() method is called.
Here is an example snippet to demonstrate:
Value v1 = source.getTopValue();
source.next(); // v1 is modified!
The following code would not have a problem:
Value v1 = new Value(source.getTopValue());
source.next();
I bet this is done for performance reasons. Is this expected?
Regards, Dylan