Skip to content

Replacing use_economic_representation and use_milestone_years migration script failing #1222

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
DillonJ opened this issue May 26, 2025 · 5 comments
Assignees

Comments

@DillonJ
Copy link
Contributor

DillonJ commented May 26, 2025

@datejada I merged latest commits to test @Il-ara's improvements. The changes to the migration script are failing for my DB.

Describe the bug
Migration script is failing

To Reproduce
Execute the attached model in latest master with upgrade=true

Expected behavior
Clean migration

Model DB:
H2_IRL_AllScen.zip

Traceback as follows

Upgrading data structure to the latest version...
Replacing use_economic_representation and use_milestone_years
by multiyear_economic_discounting...
ERROR: LoadError: there's already a parameter_value_list with {'name': 'multiyear_economic_discounting_value_list'}
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:35
[2] _process_db_answer(result::Nothing, err::String)
@ SpineInterface c:\workspace\Spine\SpineInterface\src\api\db.jl:789
[3] _process_db_answer(answer::Dict{String, Any})
@ SpineInterface c:\workspace\Spine\SpineInterface\src\api\db.jl:773
[4] _do_run_server_request(server_uri::URIs.URI, full_request::Vector{Any}; timeout::Float64)
@ SpineInterface c:\workspace\Spine\SpineInterface\src\api\db.jl:718
[5] _do_run_server_request
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:692 [inlined]
[6] _run_server_request(server_uri::URIs.URI, request::String, args::Tuple{String}, kwargs::Dict{String, String})
@ SpineInterface c:\workspace\Spine\SpineInterface\src\api\db.jl:680
[7] #187
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:527 [inlined]
[8] _db
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:558 [inlined]
[9] #run_request#186
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:526 [inlined]
[10] run_request
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:525 [inlined]
[11] translate_use_economic_representation__use_milestone_years(db_url::URIs.URI, log_level::Int64)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\data_structure\versions\translate_use_economic_representation__use_milestone_years.jl:33
[12] _run_migration(url::URIs.URI, version::Int64, log_level::Int64)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\data_structure\migration.jl:117
[13] (::SpineOpt.var"#640#641"{Int64})(clean_url::URIs.URI)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\data_structure\migration.jl:107
[14] (::SpineInterface.var"#181#182"{SpineOpt.var"#640#641"{Int64}})(db::URIs.URI)
@ SpineInterface c:\workspace\Spine\SpineInterface\src\api\db.jl:504
[15] _db(f::SpineInterface.var"#181#182"{SpineOpt.var"#640#641"{Int64}}, url::String; upgrade::Bool)
@ SpineInterface c:\workspace\Spine\SpineInterface\src\api\db.jl:545
[16] _db
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:542 [inlined]
[17] without_filters
@ c:\workspace\Spine\SpineInterface\src\api\db.jl:499 [inlined]
[18] run_migrations
@ c:\workspace\Spine\SpineOpt\src\data_structure\migration.jl:106 [inlined]
[19] #_do_upgrade_db#91
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:333 [inlined]
[20] _do_upgrade_db
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:331 [inlined]
[21] _check_version(url_in::String; log_level::Int64, upgrade::Bool)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:325
[22] _check_version
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:315 [inlined]
[23] prepare_spineopt(url_in::String; log_level::Int64, upgrade::Bool, filters::Dict{String, String}, templates::Tuple{}, mip_solver::Nothing, lp_solver::Nothing, use_direct_model::Bool, use_model_names::Bool, add_bridges::Bool)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:264
[24] prepare_spineopt
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:251 [inlined]
[25] _run_spineopt(f::SpineOpt.var"#64#65", url_in::String, url_out::String; upgrade::Bool, filters::Dict{String, String}, templates::Tuple{}, mip_solver::Nothing, lp_solver::Nothing, use_direct_model::Bool, use_model_names::Bool, add_bridges::Bool, log_level::Int64, alternative::String, kwargs::@kwargs{optimize::Bool, update_names::Bool, write_as_roll::Int64, resume_file_path::Nothing})
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:149
[26] _run_spineopt
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:126 [inlined]
[27] #67
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:104 [inlined]
[28] _log_to_file
@ c:\workspace\Spine\SpineOpt\src\util\misc.jl:246 [inlined]
[29] #run_spineopt#66
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:103 [inlined]
[30] run_spineopt
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:83 [inlined]
[31] #run_spineopt#63
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:67 [inlined]
[32] top-level scope
@ C:\Users\jodyd.spinetoolbox\work\run_spineopt_local__02ee85c6cd9e4273b1540667fe532431__toolbox\run_spineopt.jl:3
[33] include(fname::String)
@ Base.MainInclude .\client.jl:489
[34] top-level scope
@ none:1
in expression starting at C:\Users\jodyd.spinetoolbox\work\run_spineopt_local__02ee85c6cd9e4273b1540667fe532431__toolbox\run_spineopt.jl:3
julia>

@DillonJ
Copy link
Contributor Author

DillonJ commented May 26, 2025

As a workaround, removing the parameter value list before the migration solved the issue - but the script should be updated to do this also.

@DillonJ
Copy link
Contributor Author

DillonJ commented May 26, 2025

OK, I spoke too soon... I then get the following error:

ERROR: LoadError: UndefVarError: multiyear_economic_discounting not defined
Stacktrace:
[1] build_model!(m::JuMP.Model; log_level::Int64)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt_basic.jl:80
[2] build_model!
@ c:\workspace\Spine\SpineOpt\src\run_spineopt_basic.jl:73 [inlined]
[3] do_run_spineopt!(m::JuMP.Model, url_out::String, ::Val{:basic_algorithm}; log_level::Int64, optimize::Bool, update_names::Bool, alternative::String, write_as_roll::Int64, resume_file_path::Nothing)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt_basic.jl:32
[4] #invokelatest#2
@ .\essentials.jl:894 [inlined]
[5] invokelatest
@ .\essentials.jl:889 [inlined]
[6] run_spineopt!(m::JuMP.Model, url_out::String; log_level::Int64, optimize::Bool, update_names::Bool, alternative::String, write_as_roll::Int64, resume_file_path::Nothing)
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:369
[7] run_spineopt!
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:358 [inlined]
[8] _run_spineopt(f::SpineOpt.var"#64#65", url_in::String, url_out::String; upgrade::Bool, filters::Dict{String, String}, templates::Tuple{}, mip_solver::Nothing, lp_solver::Nothing, use_direct_model::Bool, use_model_names::Bool, add_bridges::Bool, log_level::Int64, alternative::String, kwargs::@kwargs{optimize::Bool, update_names::Bool, write_as_roll::Int64, resume_file_path::Nothing})
@ SpineOpt c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:162
[9] _run_spineopt
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:126 [inlined]
[10] #67
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:104 [inlined]
[11] _log_to_file
@ c:\workspace\Spine\SpineOpt\src\util\misc.jl:246 [inlined]
[12] #run_spineopt#66
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:103 [inlined]
[13] run_spineopt
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:83 [inlined]
[14] #run_spineopt#63
@ c:\workspace\Spine\SpineOpt\src\run_spineopt.jl:67 [inlined]
[15] top-level scope
@ C:\Users\jodyd.spinetoolbox\work\run_spineopt_local__20745be7e2ec426797b799f3a929fd1d__toolbox\run_spineopt.jl:3
[16] include(fname::String)
@ Base.MainInclude .\client.jl:489
[17] top-level scope
@ none:1
in expression starting at C:\Users\jodyd.spinetoolbox\work\run_spineopt_local__20745be7e2ec426797b799f3a929fd1d__toolbox\run_spineopt.jl:3

@datejada
Copy link
Member

@nnhjy would you mind checking on this? since you developed this migration script. Thanks!

@nnhjy
Copy link
Member

nnhjy commented May 26, 2025

Sure, I'll take it over.

@nnhjy
Copy link
Member

nnhjy commented May 26, 2025

@DillonJ Please try the latest main branch to see whether this issue has been fixed~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants