Skip to content

Commit db848fc

Browse files
committed
Only pass supported attributes
1 parent f615b32 commit db848fc

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/Utilities/cachingoptimizer.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,10 @@ function reset_optimizer(m::CachingOptimizer, optimizer::MOI.AbstractOptimizer)
125125
m.optimizer = optimizer
126126
m.state = EMPTY_OPTIMIZER
127127
for attr in MOI.get(m.model_cache, MOI.ListOfOptimizerAttributesSet())
128+
# Skip attributes which don't apply to the new optimizer.
128129
if attr isa MOI.RawParameter
129-
# Skip RawParameters because they may not apply to the new
130-
# optimizer.
130+
continue
131+
elseif !MOI.is_copyable(attr) || !MOI.supports(m.optimizer, attr)
131132
continue
132133
end
133134
value = MOI.get(m.model_cache, attr)

test/Utilities/cachingoptimizer.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,7 @@ function MOI.get(model::Issue1220, ::MOI.ListOfOptimizerAttributesSet)
662662
return collect(keys(model.optimizer_attributes))
663663
end
664664
MOI.supports(::Issue1220, ::MOI.AbstractOptimizerAttribute) = true
665+
MOI.supports(::Issue1220, ::MOI.NumberOfThreads) = false
665666
function MOI.get(model::Issue1220, attr::MOI.AbstractOptimizerAttribute)
666667
return model.optimizer_attributes[attr]
667668
end
@@ -673,7 +674,9 @@ end
673674
model = MOIU.CachingOptimizer(Issue1220(), Issue1220())
674675
MOI.set(model, MOI.Silent(), true)
675676
MOI.set(model, MOI.RawParameter("foo"), "bar")
677+
MOI.set(model, MOI.NumberOfThreads(), 1)
676678
MOIU.reset_optimizer(model, Issue1220())
677679
@test MOI.get(model, MOI.Silent()) == true
678680
@test_throws KeyError MOI.get(model, MOI.RawParameter("foo"))
681+
@test_throws KeyError MOI.get(model, MOI.NumberOfThreads())
679682
end

0 commit comments

Comments
 (0)