@Override public Value chunkIdx( int cidx ) {
    final long nchk = nChunks();
    assert 0 <= cidx && cidx < nchk;
    Key dkey = chunkKey(cidx);
    Value val1 = DKV.get(dkey);// Check for an existing one... will fetch data as needed
    if( val1 != null ) return val1; // Found an existing one?
    // Lazily create a DVec for this chunk
    int len = (int)(cidx < nchk-1 ? CHUNK_SZ : (_len-chunk2StartElem(cidx)));
    // DVec is just the raw file data with a null-compression scheme
    Value val2 = new Value(dkey,len,null,TypeMap.C1NCHUNK,_be);
    val2.setdsk(); // It is already on disk.
    // If not-home, then block till the Key is everywhere.  Most calls here are
    // from the parser loading a text file, and the parser splits the work such
    // that most puts here are on home - so this is a simple speed optimization: 
    // do not make a Futures nor block on it on home.
    Futures fs = dkey.home() ? null : new Futures();
    // Atomically insert: fails on a race, but then return the old version
    Value val3 = DKV.DputIfMatch(dkey,val2,null,fs);
    if( !dkey.home() && fs != null ) fs.blockForPending();
    return val3 == null ? val2 : val3;
  }
@ Override public Value chunkIdx ( int cidx ) { final long nchk = nChunks ( ) ; assert 0 <= cidx && cidx < nchk ; Key dkey = chunkKey ( cidx ) ; Value val1 = DKV . get ( dkey ) ; if ( val1 != null ) return val1 ; int len = ( int ) ( cidx < nchk - 1 ? CHUNK_SZ : ( _len - chunk2StartElem ( cidx ) ) ) ; Value val2 = new Value ( dkey , len , null , TypeMap . C1NCHUNK , _be ) ; val2 . setdsk ( ) ; Futures fs = dkey . home ( ) ? null : new Futures ( ) ; Value val3 = DKV . DputIfMatch ( dkey , val2 , null , fs ) ; if ( ! dkey . home ( ) && fs != null ) fs . blockForPending ( ) ; return val3 == null ? val2 : val3 ; }
Touching the DVec will force the file load.