You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bool isBOutputProxy = std::regex_match(b.name.data(), m, matcher);
145
148
146
149
// If none is expendable. We simply return false and sort as usual.
147
150
if (!isAExpendable && !isBExpendable) {
148
151
bool sporadic = sporadicDataDeps(a, b);
149
-
if (sporadic) {
152
+
if (sporadic && !isBOutputProxy) {
150
153
O2_SIGNPOST_END(topology, sid, "expendableDataDeps", "true. Neither %s nor %s are expendable. However the former has sporadic inputs so we sort it after.",
151
154
a.name.c_str(), b.name.c_str());
152
155
returntrue;
@@ -158,7 +161,7 @@ bool expendableDataDeps(DataProcessorSpec const& a, DataProcessorSpec const& b)
158
161
// If both are expendable. We return false and sort as usual.
159
162
if (isAExpendable && isBExpendable) {
160
163
bool sporadic = sporadicDataDeps(a, b);
161
-
if (sporadic) {
164
+
if (sporadic && !isBOutputProxy) {
162
165
O2_SIGNPOST_END(topology, sid, "expendableDataDeps", "true. Both %s and %s are expendable. However the former has sporadic inputs, so we sort it after.",
163
166
a.name.c_str(), b.name.c_str());
164
167
returntrue;
@@ -171,7 +174,7 @@ bool expendableDataDeps(DataProcessorSpec const& a, DataProcessorSpec const& b)
171
174
// If a is expendable but b is resilient, we can keep the same order.
172
175
if (isAExpendable && bResilient) {
173
176
bool sporadic = sporadicDataDeps(a, b);
174
-
if (sporadic) {
177
+
if (sporadic && !isBOutputProxy) {
175
178
O2_SIGNPOST_END(topology, sid, "expendableDataDeps", "true. %s is expendable but %s is resilient, however the former also has sporadic inputs, so we sort it after.",
176
179
a.name.c_str(), b.name.c_str());
177
180
returntrue;
@@ -191,7 +194,7 @@ bool expendableDataDeps(DataProcessorSpec const& a, DataProcessorSpec const& b)
191
194
returntrue;
192
195
}
193
196
bool sporadic = sporadicDataDeps(a, b);
194
-
if (sporadic) {
197
+
if (sporadic && !isBOutputProxy) {
195
198
O2_SIGNPOST_END(topology, sid, "expendableDataDeps", "%s is expendable. No inverse dependency from %s to %s. However the former has an occasioanl input => true.",
O2_SIGNPOST_END(topology, sid, "alwaysDependent", "false. Dependent %s is an output proxy and ancestor %s has sporadic inputs", dependent.name.c_str(), ancestor.name.c_str());
267
-
returnfalse;
268
-
}
269
-
270
268
O2_SIGNPOST_END(topology, sid, "alwaysDependent", "true by default. Ancestor %s is not an output proxy.", ancestor.name.c_str());
0 commit comments