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.
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 |