diff --git a/terraform/node_resource_abstract_instance.go b/terraform/node_resource_abstract_instance.go index 1393d1abe..ad5574c85 100644 --- a/terraform/node_resource_abstract_instance.go +++ b/terraform/node_resource_abstract_instance.go @@ -905,7 +905,7 @@ func (n *NodeAbstractResourceInstance) plan( // If our prior value was tainted then we actually want this to appear // as a replace change, even though so far we've been treating it as a // create. - if action == plans.Create && priorValTainted != cty.NilVal { + if action == plans.Create && !priorValTainted.IsNull() { if createBeforeDestroy { action = plans.CreateThenDelete } else { diff --git a/terraform/node_resource_plan_instance.go b/terraform/node_resource_plan_instance.go index e6cfc1dc7..1f57e85c8 100644 --- a/terraform/node_resource_plan_instance.go +++ b/terraform/node_resource_plan_instance.go @@ -128,11 +128,12 @@ func (n *NodePlannableResourceInstance) managedResourceExecute(ctx EvalContext) // Refresh, maybe if !n.skipRefresh { - instanceRefreshState, refreshDiags := n.refresh(ctx, instanceRefreshState) + s, refreshDiags := n.refresh(ctx, instanceRefreshState) diags = diags.Append(refreshDiags) if diags.HasErrors() { return diags } + instanceRefreshState = s diags = diags.Append(n.writeResourceInstanceState(ctx, instanceRefreshState, n.Dependencies, refreshState)) if diags.HasErrors() {