class BlockActor

The maximum size for a block blob is 200 GB, and a block blob can include no more than 50,000 blocks. msdn.microsoft.com/en-us/library/azure/ee691964.aspx

Public Class Methods

new(service, container, blob, options = {}) click to toggle source
# File lib/azure-contrib/blob_service.rb, line 20
def initialize(service, container, blob, options = {})
  @service, @container, @blob, @options = service, container, blob, options
end

Public Instance Methods

log(message) click to toggle source
# File lib/azure-contrib/blob_service.rb, line 43
def log(message)
  puts message
end
upload(block_id, chunk, retries = 0) click to toggle source
# File lib/azure-contrib/blob_service.rb, line 24
def upload(block_id, chunk, retries = 0)
  Timeout::timeout(@options[:timeout] || 30){
    log "Uploading block #{block_id}"
    options = @options.dup
    options[:content_md5] = Base64.strict_encode64(Digest::MD5.digest(chunk))
    content_md5 = @service.create_blob_block(@container, @blob, block_id, chunk, options)
    log "Done uploading block #{block_id} #{content_md5}"
    [block_id, :uncommitted]
  }
rescue Timeout::Error, Azure::Core::Error => e
  log "Failed to upload #{block_id}: #{e.class} #{e.message}"
  if retries < 5
    log "Retrying upload (#{retries})"
    upload(block_id, chunk, retries += 1)
  else
    log "Complete failure to upload #{retries} retries"
  end
end