If I turn on tracing in the TestMarhsalNestedLattices test, Bud crashes because MsgPack cannot marshal lattices:
test_marshal(TestMarshalNestedLattices):
RuntimeError: ERROR! #<Bud::BudDbmTable:0x007fb2d492a2f0> << ["lb_snd", 0, ["localhost", [<lmax: 0>]]] (etxt undefined method `to_msgpack' for <lmax: 0>:Bud::MaxLattice) in
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/monkeypatch.rb:51:in `to_msgpack'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/monkeypatch.rb:51:in `to_msgpack'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/storage/dbm.rb:129:in `pack'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/storage/dbm.rb:129:in `merge_tuple_to_db'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/storage/dbm.rb:187:in `insert'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:67:in `block in add_rows'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:52:in `each'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:52:in `add_rows'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:82:in `block in do_cards'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:76:in `each'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:76:in `do_cards'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:1146:in `tick_internal'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:653:in `block in run_bg'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:964:in `block in schedule_and_wait'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:250:in `call'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:250:in `block in schedule'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:959:in `call'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:959:in `block in run_deferred_callbacks'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:956:in `times'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:956:in `run_deferred_callbacks'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run_machine'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:942:in `block in start_reactor'
in
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:70:in `rescue in block in add_rows'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:66:in `block in add_rows'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:52:in `each'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:52:in `add_rows'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:82:in `block in do_cards'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:76:in `each'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud/viz.rb:76:in `do_cards'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:1146:in `tick_internal'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:653:in `block in run_bg'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:964:in `block in schedule_and_wait'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:250:in `call'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:250:in `block in schedule'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:959:in `call'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:959:in `block in run_deferred_callbacks'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:956:in `times'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:956:in `run_deferred_callbacks'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run_machine'
/usr/local/Cellar/ruby/1.9.3-p374/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run'
/Users/joshrosen/Documents/cloud_programming/bud/lib/bud.rb:942:in `block in start_reactor'
In order to produce this full traceback, I had to slightly modify the exception handling in viz.rb:
diff --git a/lib/bud/viz.rb b/lib/bud/viz.rb
index 22074ca..65aba32 100644
--- a/lib/bud/viz.rb
+++ b/lib/bud/viz.rb
@@ -66,7 +66,8 @@ class VizOnline #:nodoc: all
begin
@logtab << newrow
rescue
- raise "ERROR! #{@logtab} << #{newrow.inspect} (etxt #{$!})"
+ raise "ERROR! #{@logtab} << #{newrow.inspect} (etxt #{$!}) in\n " +
+ $!.backtrace.join("\n ") + "\nin"
end
end
end
This is the same problem that #295 fixed, so one solution would be to extract the fix from that commit into its own serialization wrapper that we could re-use. The other alternative would be to replace MsgPack. In either case, hiding the choice of serialization module behind our own interface would make it easier to experiment with different serializers.
If I turn on tracing in the TestMarhsalNestedLattices test, Bud crashes because MsgPack cannot marshal lattices:
In order to produce this full traceback, I had to slightly modify the exception handling in viz.rb:
This is the same problem that #295 fixed, so one solution would be to extract the fix from that commit into its own serialization wrapper that we could re-use. The other alternative would be to replace MsgPack. In either case, hiding the choice of serialization module behind our own interface would make it easier to experiment with different serializers.