move cleanup into the executing thread (#1214) #1218
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1214
Before this PR, dbt directly raised an exception on failures inside the thread. But dbt also uses the thread pool's
callback
argument to handle marking the node as completed and put new nodes into the queue. That was great as long as the call in the thread always succeeded, but on exception the callback isn't called so the queue never gets finished and dbt hangs forever, resulting in the linked issue.To fix this, instead the thread will mark an error message.
In the case of multiple concurrent error messages and some precise thread scheduling behavior, we will overwrite one or the other. This isn't really any different from before.