@@ -186,6 +186,7 @@ async def expand_workflow(self, wf, rerun=False):
186
186
}
187
187
graph_checksums = dict (wf .inputs ._graph_checksums )
188
188
189
+ hashes_have_changed = False
189
190
for task , waiting_on in outstanding .items ():
190
191
if not waiting_on :
191
192
continue
@@ -197,13 +198,25 @@ async def expand_workflow(self, wf, rerun=False):
197
198
f"Current values and hashes: { pred .inputs } , "
198
199
f"{ pred .inputs ._hashes } \n "
199
200
)
201
+ hashes_have_changed = True
200
202
elif pred not in outstanding :
201
203
msg += (
202
- f" - undiagnosed issues in '{ pred .name } ' node "
203
- "( potentially related to the file-system) "
204
+ f" - undiagnosed issues in '{ pred .name } ' node, "
205
+ "potentially related to file-system access issues "
204
206
)
205
207
msg += "\n "
206
- msg += "Set loglevel to 'debug' in order to track hash changes"
208
+ if hashes_have_changed :
209
+ msg += (
210
+ "Set loglevel to 'debug' in order to track hash changes "
211
+ "throughout the execution of the workflow.\n \n "
212
+ "These issues may have been caused by `bytes_repr()` methods "
213
+ "that don't return stable hash values for specific object "
214
+ "types across multiple processes (see bytes_repr() "
215
+ '"singledispatch "function in pydra/utils/hash.py).'
216
+ "You may need to implement a specific `bytes_repr()` "
217
+ '"singledispatch overload"s or `__bytes_repr__()` '
218
+ "dunder methods to handle one or more types in "
219
+ )
207
220
raise RuntimeError (msg )
208
221
for task in tasks :
209
222
# grab inputs if needed
0 commit comments