code: public synchronized void updateHole(final ODataHoleInfo iHole, final long iNewDataOffset, final int iNewRecordSize)
        throws IOException {
      final long timer = OProfiler.getInstance().startChrono();
  
      final boolean offsetChanged = iNewDataOffset != iHole.dataOffset;
      final boolean sizeChanged = iNewRecordSize != iHole.size;
  
      if (maxHoleSize < iNewRecordSize)
        maxHoleSize = iNewRecordSize;
  
      // IN MEMORY
      if (offsetChanged)
        availableHolesByPosition.remove(iHole);
      if (sizeChanged)
        availableHolesBySize.remove(iHole);
  
      if (offsetChanged)
        iHole.dataOffset = iNewDataOffset;
      if (sizeChanged)
        iHole.size = iNewRecordSize;
  
      if (offsetChanged)
        availableHolesByPosition.put(iHole, iHole);
      if (sizeChanged)
        availableHolesBySize.put(iHole, iHole);
  
      // TO FILE
      final long holePosition = iHole.holeOffset * RECORD_SIZE;
      if (offsetChanged)
        file.writeLong(holePosition, iNewDataOffset);
      if (sizeChanged)
        file.writeInt(holePosition + OBinaryProtocol.SIZE_LONG, iNewRecordSize);
  
      OProfiler.getInstance().stopChrono(PROFILER_DATA_HOLE_UPDATE, timer);
    }
docs: Update hole data
  
  @param iUpdateFromMemory
  
  @throws IOException