Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 64df6b8

Browse files
TedSanderrkirov
authored andcommitted
fix(transformers): Fix deadlock issue in pub serve.
When not in release mode use a separate resolver for transformers which are run in parallel as to resolve a deadlock in pub serve.
1 parent 72ea368 commit 64df6b8

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

lib/transformer.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ import 'package:observe/transformer.dart' show ObservableTransformer;
2626
class AngularTransformerGroup implements TransformerGroup {
2727
final Iterable<Iterable> phases;
2828

29-
AngularTransformerGroup(TransformOptions options)
30-
: phases = _createPhases(options);
29+
AngularTransformerGroup(TransformOptions options, {BarbackMode mode})
30+
: phases = _createPhases(options, mode);
3131

3232
AngularTransformerGroup.asPlugin(BarbackSettings settings)
33-
: this(_parseSettings(settings.configuration));
33+
: this(_parseSettings(settings.configuration), mode: settings.mode);
3434
}
3535

3636
TransformOptions _parseSettings(Map args) {
@@ -147,12 +147,17 @@ Transformer _staticGenerator(TransformOptions options, Resolvers resolvers) {
147147
]);
148148
}
149149

150-
List<List<Transformer>> _createPhases(TransformOptions options) {
150+
List<List<Transformer>> _createPhases(
151+
TransformOptions options, BarbackMode mode) {
151152
var resolvers = new Resolvers(options.sdkDirectory);
152153
return [
153154
[ new ObservableTransformer() ],
154155
[ new HtmlDartReferencesGenerator(options) ],
155-
[ new di.InjectorGenerator(options.diOptions, resolvers ) ],
156+
// During a pub build share the resolver to save memory, but for pub serve
157+
// create a new resolver for any non-serial transformers or they will
158+
// deadlock.
159+
[ new di.InjectorGenerator(options.diOptions, mode == BarbackMode.RELEASE
160+
? resolvers : new Resolvers(options.sdkDirectory)) ],
156161
[ _staticGenerator(options, resolvers) ]
157162
];
158163
}

0 commit comments

Comments
 (0)