Skip to content

Time marshaling is incorrect  #957

@crawlik

Description

@crawlik

Consider this snippet

$ jruby --1.9 /home/alex/.rvm/rubies/jruby-1.7.4/bin/irb
jruby-1.7.4 :001 > p Time.now.zone; p Marshal.load(Marshal.dump(Time.now)).zone
"CDT"
"GMT+5"
 => "GMT+5" 

Looks like jRuby in 1.9 mode doesn't marshal/unmarshal time correctly. Weird thing happens with timezone. I am in CDT and should have GMT-5.

Is it known problem? Is there a way to workaround it?

JRuby 1.8 looks ok

$ jruby --1.8 /home/alex/.rvm/rubies/jruby-1.7.4/bin/irb
jruby-1.7.4 :001 > require 'time'; tr = Time.now; tr == Marshal.load(Marshal.dump(tr))
 => true 
jruby-1.7.4 :002 > p Time.now.zone; p Marshal.load(Marshal.dump(Time.now)).zone
"CDT"
"CDT"
 => nil 

MRI 1.9.3 is broken too

ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]
irb(main):001:0> p Time.now.zone; p Marshal.load(Marshal.dump(Time.now)).zone
"CDT"
nil
=> nil

MRI 2.0 looks correct

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
2.0.0p247 :001 > p Time.now.zone; p Marshal.load(Marshal.dump(Time.now)).zone
"CDT"
"CDT"
 => "CDT" 
# original == to marshaled/unmarshalled
2.0.0p247 :002 > require 'time'; tr = Time.now; tr == Marshal.load(Marshal.dump(tr))
 => true 

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions