code: @Override public void onAck() {
      if( _val != null ) {        // Set transient fields after deserializing
        assert !_xkey.home() && _val._key == null;
        _val._key = _xkey;
      }
      // Now update the local store, caching the result.
  
      // We only started down the TGK path because we missed locally, so we only
      // expect to find a NULL in the local store.  If somebody else installed
      // another value (e.g. a racing TGK, or racing local Put) this value must
      // be more recent than our NULL - but is UNORDERED relative to the Value
      // returned from the Home.  We'll take the local Value to preserve ordering
      // and rely on invalidates from Home to force refreshes as needed.
  
      // Hence we can do a blind putIfMatch here over a null or empty Value
      // If it fails, what is there is also the TGK result.
      Value old = H2O.raw_get(_xkey);
      if( old != null && !old.isEmpty() ) old=null;
      Value res = H2O.putIfMatch(_xkey,_val,old);
      if( res != old ) _val = res;
    }
docs: Received an ACK; executes on the node asking&receiving the Value