Method: Roma::Command::SystemCommandReceiver#ev_rzset

Defined in:
lib/roma/command/sys_command_receiver.rb

#ev_rzset(s) ⇒ Object

<command name> <key> <digest> <exptime> <bytes> [noreply]rn <compressed data block>rn



336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
# File 'lib/roma/command/sys_command_receiver.rb', line 336

def ev_rzset(s)
  key,hname = s[1].split("\e")
  hname ||= @defhash
  d = s[2].to_i
  d = Digest::SHA1.hexdigest(key).hex % @rttable.hbits if d == 0
  zdata = read_bytes(s[5].to_i)
  read_bytes(2)
  vn = @rttable.get_vnode_id(d)
  unless @storages.key?(hname)
    send_data("SERVER_ERROR #{hname} does not exists.\r\n")
    return
  end

  data = Zlib::Inflate.inflate(zdata)
# @log.debug("data = #{data}")
  if @storages[hname].rset(vn, key, d, s[3].to_i, s[4].to_i, data)
    send_data("STORED\r\n")
  else
    @log.error("rzset NOT_STORED:#{@storages[hname].error_message} #{vn} #{s[1]} #{d} #{s[3]} #{s[4]}")
    send_data("NOT_STORED\r\n")
  end
  @stats.redundant_count += 1
rescue Zlib::DataError => e
  @log.error("rzset NOT_STORED:#{e} #{vn} #{s[1]} #{d} #{s[3]} #{s[4]}")
  send_data("NOT_STORED\r\n")
end