thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nevo Hed <nhed+thrift...@aereo.com>
Subject Deserialization failure with ruby
Date Tue, 19 Jun 2012 04:38:57 GMT
This is tested with thrift 0.7.0, and as it is pretty sensitive (removing
or changing the type of any of these definitions seems to make the problem
go away)
The failures are typically those of validation errors as you see below, but
other have been seen as well.

Has anyone seen anything like this?

Thanks
   -Nevo

--8<------------test.thrift-----------------------------------------------
enum En1 {
  EN1_0 = 1
}

struct MapEl {
  1: required En1 x1 = En1.EN1_0,
  2: required i32 x2 = 2,
  7: optional i32 x3 = 3,
  8: optional i32 x4 = 4,
}

struct topStruct {
  1: required i32            y1 = 1,
  2: required i16            y2 = 2,
  3: required i32            y3 = 3,
  4: optional map<i32,MapEl> y4 = {},
}

--8<------------test.rb----------------------------------------------------

#!/usr/bin/ruby
require 'thrift'
require 'gen-rb/test_types'

begin
  v=TopStruct.new

  for i in 1..124 do
    v.y4[i]=MapEl.new()
  end

  ruby_binary_protocol =
Thrift::BinaryProtocol.new(Thrift::MemoryBufferTransport.new)

  v.write(ruby_binary_protocol)
  TopStruct.new.read(ruby_binary_protocol)
  # drop read data on the floor

rescue Exception => tx
  print "Caught #{tx.class} exception: #{tx.message}\n"
  print "Trace:\n  ", tx.backtrace.join("\n  "), "\n"
end
nil

--8<----------------------------------------------------------------------

$ /usr/bin/thrift --gen rb test.thrift && ruby test.rb
Caught Thrift::ProtocolException exception: Invalid value of field x1!
Trace:
  ./gen-rb/test_types.rb:34:in `validate'
  test.rb:15:in `read'
  test.rb:15

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message