code: def flush(self):
      
      # Write data to in-memory buffer first.
      buf = cStringIO.StringIO()
      with records.RecordsWriter(buf) as w:
        for record in self._buffer:
          w.write(record)
        w._pad_block()
      str_buf = buf.getvalue()
      buf.close()
  
      if not self._exclusive and len(str_buf) > _FILE_POOL_MAX_SIZE:
        # Shouldn't really happen because of flush size.
        raise errors.Error(
            "Buffer too big. Can't write more than %s bytes in one request: "
            "risk of writes interleaving. Got: %s" %
            (_FILE_POOL_MAX_SIZE, len(str_buf)))
  
      # Write data to file.
      start_time = time.time()
      self._write(str_buf)
      if self._ctx:
        operation.counters.Increment(
            COUNTER_IO_WRITE_BYTES, len(str_buf))(self._ctx)
        operation.counters.Increment(
            COUNTER_IO_WRITE_MSEC,
            int((time.time() - start_time) * 1000))(self._ctx)
  
      # reset buffer
      self._buffer = []
      self._size = 0
      gc.collect()
docs: Flush pool contents.