if ( (activePendingPut != null) && activePendingPut.key.equals(key) )
{
return activePendingPut.spec;
}
ChunkedByteArray data = null;
CCDB2IndexEntry entry = fIndex.get(key);
if ( entry != null )
{
synchronized(entry)
{
if ( entry.address == CCDB2IndexEntry.NOT_EXISTS_ADDRESS )
{
if ( wasDeleted != null )
{
wasDeleted.set(true);
}
}
else
{
data = (entry.bytesRef != null) ? entry.bytesRef.get() : null;
if ( data == null )
{
if ( entry.address >= CCDB2IndexEntry.MINIMUM_ACTIVE_ADDRESS )
{
data = readObject(entry.address);
if ( data == null )
{
if ( wasDeleted != null )
{
wasDeleted.set(true);
}
entry.address = CCDB2IndexEntry.NOT_EXISTS_ADDRESS;
}
else
{
data.lock();
entry.bytesRef = new SoftReference<ChunkedByteArray>(data);
fFromDiskGetQty.incrementAndGet();
}
}