def flush(self):
    """Flush pool contents."""
    # 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()
def flush ( self ) : 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 : 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 ) ) ) 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 ) self . _buffer = [ ] self . _size = 0 gc . collect ( )
Flush pool contents.