Skip to content

Serialization: cannot deserialize files saved before the last major refactoring #4774

Closed
@StevellM

Description

@StevellM

Describe the bug
I have written files with some lattice data before the last refactoring of serialization, which cannot be open anymore. I get the following error:

julia> load("Schreibtisch/Projects/Storage/enum_gen/tmpFermat.mrdi")
┌ Warning: Attempted loading file stored using a DEV version with commit 8795e0f5719119e18ebbadc07b0c4022819a60e0
└ @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:804
ERROR: MethodError: no method matching load_object(::Oscar.DeserializerState{Oscar.JSONSerializer}, ::Type{ZZLat})

Closest candidates are:
  load_object(::Oscar.DeserializerState, ::Type, ::Nothing)
   @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:381
  load_object(::Oscar.DeserializerState, ::Type, ::Union{Int64, Symbol})
   @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:368
  load_object(::Oscar.DeserializerState, ::Type{ZZLat}, ::Dict)
   @ Oscar ~/.julia/dev/Oscar/src/Serialization/QuadForm.jl:31
  ...

Stacktrace:
  [1] (::Oscar.var"#7889#7890"{ZZLat, Oscar.DeserializerState{Oscar.JSONSerializer}})(::Tuple{Int64, JSON3.Array{JSON3.Array, Base.CodeUnits{…}, SubArray{…}}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/containers.jl:105
  [2] (::Oscar.var"#7811#7814"{Int64, Oscar.var"#7889#7890"{…}})(x::JSON3.Array{JSON3.Array, Base.CodeUnits{…}, SubArray{…}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:240
  [3] load_node(f::Oscar.var"#7811#7814"{Int64, Oscar.var"#7889#7890"{ZZLat, Oscar.DeserializerState{Oscar.JSONSerializer}}}, s::Oscar.DeserializerState{Oscar.JSONSerializer}, key::Int64)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:232
  [4] #7810
    @ ./none:0 [inlined]
  [5] iterate
    @ ./generator.jl:47 [inlined]
  [6] collect(itr::Base.Generator{Base.Iterators.Enumerate{JSON3.Array{…}}, Oscar.var"#7810#7813"{Oscar.var"#7889#7890"{…}, Oscar.DeserializerState{…}}})
    @ Base ./array.jl:834
  [7] (::Oscar.var"#7809#7812"{Oscar.var"#7889#7890"{…}, Oscar.DeserializerState{…}})(array::JSON3.Array{JSON3.Array, Base.CodeUnits{…}, SubArray{…}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:240
  [8] load_node(f::Oscar.var"#7809#7812"{Oscar.var"#7889#7890"{…}, Oscar.DeserializerState{…}}, s::Oscar.DeserializerState{Oscar.JSONSerializer}, key::Nothing)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:232
  [9] load_array_node (repeats 2 times)
    @ ~/.julia/dev/Oscar/src/Serialization/serializers.jl:239 [inlined]
 [10] load_object(s::Oscar.DeserializerState{Oscar.JSONSerializer}, T::Type{Vector{ZZLat}}, ::Nothing)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/containers.jl:104
 [11] (::Oscar.var"#7853#7854"{Oscar.DeserializerState{Oscar.JSONSerializer}})(::JSON3.Array{JSON3.Array, Base.CodeUnits{UInt8, String}, SubArray{UInt64, 1, Vector{…}, Tuple{…}, true}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:362
 [12] load_node(f::Oscar.var"#7853#7854"{Oscar.DeserializerState{Oscar.JSONSerializer}}, s::Oscar.DeserializerState{Oscar.JSONSerializer}, key::Symbol)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:232
 [13] load_typed_object(s::Oscar.DeserializerState{Oscar.JSONSerializer}; override_params::Nothing)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:361
 [14] load(io::IOStream; params::Nothing, type::Nothing, serializer::Oscar.JSONSerializer, with_attrs::Bool)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:784
 [15] load
    @ ~/.julia/dev/Oscar/src/Serialization/main.jl:718 [inlined]
 [16] #8323
    @ ~/.julia/dev/Oscar/src/Serialization/main.jl:814 [inlined]
 [17] open(f::Oscar.var"#8323#8324"{Nothing, Nothing, Oscar.JSONSerializer}, args::String; kwargs::@Kwargs{})
    @ Base ./io.jl:396
 [18] open
    @ ./io.jl:393 [inlined]
 [19] #load#8322
    @ ~/.julia/dev/Oscar/src/Serialization/main.jl:813 [inlined]
 [20] load(filename::String)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:810
 [21] top-level scope
    @ REPL[1]:1
Some type information was truncated. Use `show(err)` to see complete types.

julia> load("Schreibtisch/Projects/Storage/OG10bir/tmpOG10.mrdi")
┌ Warning: Attempted loading file stored using a DEV version with commit 8795e0f5719119e18ebbadc07b0c4022819a60e0
└ @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:804
ERROR: MethodError: no method matching load_object(::Oscar.DeserializerState{Oscar.JSONSerializer}, ::Type{ZZLat})

Closest candidates are:
  load_object(::Oscar.DeserializerState, ::Type, ::Nothing)
   @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:381
  load_object(::Oscar.DeserializerState, ::Type, ::Union{Int64, Symbol})
   @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:368
  load_object(::Oscar.DeserializerState, ::Type{ZZLat}, ::Dict)
   @ Oscar ~/.julia/dev/Oscar/src/Serialization/QuadForm.jl:31
  ...

Stacktrace:
  [1] (::Oscar.var"#7889#7890"{ZZLat, Oscar.DeserializerState{Oscar.JSONSerializer}})(::Tuple{Int64, JSON3.Array{JSON3.Array, Base.CodeUnits{…}, SubArray{…}}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/containers.jl:105
  [2] (::Oscar.var"#7811#7814"{Int64, Oscar.var"#7889#7890"{…}})(x::JSON3.Array{JSON3.Array, Base.CodeUnits{…}, SubArray{…}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:240
  [3] load_node(f::Oscar.var"#7811#7814"{Int64, Oscar.var"#7889#7890"{ZZLat, Oscar.DeserializerState{Oscar.JSONSerializer}}}, s::Oscar.DeserializerState{Oscar.JSONSerializer}, key::Int64)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:232
  [4] #7810
    @ ./none:0 [inlined]
  [5] iterate
    @ ./generator.jl:47 [inlined]
  [6] collect(itr::Base.Generator{Base.Iterators.Enumerate{JSON3.Array{…}}, Oscar.var"#7810#7813"{Oscar.var"#7889#7890"{…}, Oscar.DeserializerState{…}}})
    @ Base ./array.jl:834
  [7] (::Oscar.var"#7809#7812"{Oscar.var"#7889#7890"{…}, Oscar.DeserializerState{…}})(array::JSON3.Array{JSON3.Array, Base.CodeUnits{…}, SubArray{…}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:240
  [8] load_node(f::Oscar.var"#7809#7812"{Oscar.var"#7889#7890"{…}, Oscar.DeserializerState{…}}, s::Oscar.DeserializerState{Oscar.JSONSerializer}, key::Nothing)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:232
  [9] load_array_node (repeats 2 times)
    @ ~/.julia/dev/Oscar/src/Serialization/serializers.jl:239 [inlined]
 [10] load_object(s::Oscar.DeserializerState{Oscar.JSONSerializer}, T::Type{Vector{ZZLat}}, ::Nothing)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/containers.jl:104
 [11] (::Oscar.var"#7853#7854"{Oscar.DeserializerState{Oscar.JSONSerializer}})(::JSON3.Array{JSON3.Array, Base.CodeUnits{UInt8, String}, SubArray{UInt64, 1, Vector{…}, Tuple{…}, true}})
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:362
 [12] load_node(f::Oscar.var"#7853#7854"{Oscar.DeserializerState{Oscar.JSONSerializer}}, s::Oscar.DeserializerState{Oscar.JSONSerializer}, key::Symbol)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/serializers.jl:232
 [13] load_typed_object(s::Oscar.DeserializerState{Oscar.JSONSerializer}; override_params::Nothing)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:361
 [14] load(io::IOStream; params::Nothing, type::Nothing, serializer::Oscar.JSONSerializer, with_attrs::Bool)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:784
 [15] load
    @ ~/.julia/dev/Oscar/src/Serialization/main.jl:718 [inlined]
 [16] #8323
    @ ~/.julia/dev/Oscar/src/Serialization/main.jl:814 [inlined]
 [17] open(f::Oscar.var"#8323#8324"{Nothing, Nothing, Oscar.JSONSerializer}, args::String; kwargs::@Kwargs{})
    @ Base ./io.jl:396
 [18] open
    @ ./io.jl:393 [inlined]
 [19] #load#8322
    @ ~/.julia/dev/Oscar/src/Serialization/main.jl:813 [inlined]
 [20] load(filename::String)
    @ Oscar ~/.julia/dev/Oscar/src/Serialization/main.jl:810
 [21] top-level scope
    @ REPL[2]:1
Some type information was truncated. Use `show(err)` to see complete types.

To Reproduce
See the files attached (apparently GitHub does not like .mrdi files)

System (please complete the following information):
I am on the latest commit.

julia> Oscar.versioninfo(full=true)
julia> Oscar.versioninfo(full=true)
OSCAR version 1.4.0-DEV - #main, ac4f96473c -- 2025-04-01 16:50:33 +0200
  combining:
    AbstractAlgebra.jl   v0.44.10
    GAP.jl               v0.13.1
    Hecke.jl             v0.35.15
    Nemo.jl              v0.49.3
    Polymake.jl          v0.11.28
    Singular.jl          v0.25.2
  building on:
    FLINT_jll                  v300.200.100+0
    GAP_jll                    v400.1400.3+0
    GAP_lib_jll                v400.1400.4+0
    Singular_jll               v404.100.104+0
    libpolymake_julia_jll      v0.13.2+0
    libsingular_julia_jll      v0.47.2+0
    polymake_jll               v400.1300.3+0
    polymake_oscarnumber_jll   v0.3.5+0
See `]st -m` for a full list of dependencies.

Julia Version 1.10.1
Commit 7790d6f0641 (2024-02-13 20:41 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 8 × Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, skylake)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Official https://julialang.org/ release

tmpOG10.txt

tmpFermat.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions