pulumi/pkg/resource
Sean Gillespie 9a5f4044fa
Serialize SourceEvents coming from the refresh source (#1725)
* Serialize SourceEvents coming from the refresh source

The engine requires that a source event coming from a source be "ready
to execute" at the moment that it is sent to the engine. Since the
refresh source sent all goal states eagerly through its source iterator,
the engine assumed that it was legal to execute them all in parallel and
did so. This is a problem for the snapshot, since the snapshot expects
to be in an order that is a legal topological ordering of the dependency
DAG.

This PR fixes the issue by sending refresh source events one-at-a-time
through the refresh source iterator, only unblocking to send the next
step as soon as the previous step completes.

* Fix deadlock in refresh test

* Fix an issue where the engine "completed" steps too early

By signalling that a step is done before committing the step's results
to the snapshot, the engine was left with a race where dependent
resources could find themselves completely executed and committed before
a resource that they depend on has been committed.

Fixes pulumi/pulumi#1726

* Fix an issue with Replace steps at the end of a plan

If the last step that was executed successfully was a Replace, we could
end up in a situation where we unintentionally left the snapshot
invalid.

* Add a test

* CR: pass context.Context as first parameter to Iterate

* CR: null->nil
2018-08-08 13:45:48 -07:00
..
config Add license headers 2018-05-22 15:02:47 -07:00
deploy Serialize SourceEvents coming from the refresh source (#1725) 2018-08-08 13:45:48 -07:00
graph Implement first-class providers. (#1695) 2018-08-06 17:50:29 -07:00
plugin Implement first-class providers. (#1695) 2018-08-06 17:50:29 -07:00
provider Add URN argument to `HostClient#Log` 2018-08-01 11:00:48 -07:00
stack Implement first-class providers. (#1695) 2018-08-06 17:50:29 -07:00
testdata Fix asset bugs; write more tests 2017-10-24 09:00:11 -07:00
asset.go Support empty text assets (#1599) 2018-07-05 14:30:35 -07:00
asset_test.go Support empty text assets (#1599) 2018-07-05 14:30:35 -07:00
errors.go Add license headers 2018-05-22 15:02:47 -07:00
properties.go Support Pulumi programs written in Go 2018-06-08 10:36:10 -07:00
properties_diff.go Add license headers 2018-05-22 15:02:47 -07:00
properties_diff_test.go Add license headers 2018-05-22 15:02:47 -07:00
properties_test.go Add license headers 2018-05-22 15:02:47 -07:00
resource_goal.go Implement first-class providers. (#1695) 2018-08-06 17:50:29 -07:00
resource_id.go Add license headers 2018-05-22 15:02:47 -07:00
resource_id_test.go Add license headers 2018-05-22 15:02:47 -07:00
resource_state.go Implement first-class providers. (#1695) 2018-08-06 17:50:29 -07:00
stack.go Add license headers 2018-05-22 15:02:47 -07:00
status.go Partial status for resource providers 2018-07-02 13:32:23 -07:00
urn.go Add license headers 2018-05-22 15:02:47 -07:00
urn_test.go Add license headers 2018-05-22 15:02:47 -07:00