Method: MemCache#flush_all

Defined in:
lib/active_support/vendor/memcache-client-1.7.4/memcache.rb

#flush_all(delay = 0) ⇒ Object

Flush the cache from all memcache servers. A non-zero value for delay will ensure that the flush is propogated slowly through your memcached server farm. The Nth server will be flushed N*delay seconds from now, asynchronously so this method returns quickly. This prevents a huge database spike due to a total flush all at once.

Raises:



497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
# File 'lib/active_support/vendor/memcache-client-1.7.4/memcache.rb', line 497

def flush_all(delay=0)
  raise MemCacheError, 'No active servers' unless active?
  raise MemCacheError, "Update of readonly cache" if @readonly

  begin
    delay_time = 0
    @servers.each do |server|
      with_socket_management(server) do |socket|
        logger.debug { "flush_all #{delay_time} on #{server}" } if logger
        if delay == 0 # older versions of memcached will fail silently otherwise
          socket.write "flush_all#{noreply}\r\n"
        else
          socket.write "flush_all #{delay_time}#{noreply}\r\n"
        end
        break nil if @no_reply
        result = socket.gets
        raise_on_error_response! result
        result
      end
      delay_time += delay
    end
  rescue IndexError => err
    handle_error nil, err
  end
end