accumulo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dylan Hutchison <>
Subject Unexpected aliasing from RFile getTopValue()
Date Wed, 15 Apr 2015 00:55:26 GMT
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


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();;                                   // v1 is modified!

The following code would not have a problem:

Value v1 = new Value(source.getTopValue());;

I bet this is done for performance reasons.  Is this expected?

Regards, Dylan

View raw message