diff --git a/distributed/protocol/pickle.py b/distributed/protocol/pickle.py index 04b27174638..8b4b7328e5b 100644 --- a/distributed/protocol/pickle.py +++ b/distributed/protocol/pickle.py @@ -67,19 +67,14 @@ def dumps(x, *, buffer_callback=None, protocol=HIGHEST_PROTOCOL): buffers.clear() pickler.dump(x) result = f.getvalue() - - if not _always_use_pickle_for(x) and ( + if b"__main__" in result or ( CLOUDPICKLE_GE_20 and getattr(inspect.getmodule(x), "__name__", None) in cloudpickle.list_registry_pickle_by_value() - or ( - len(result) < 1000 - # Do this very last since it's expensive - and b"__main__" in result - ) ): - buffers.clear() - result = cloudpickle.dumps(x, **dump_kwargs) + if len(result) < 1000 or not _always_use_pickle_for(x): + buffers.clear() + result = cloudpickle.dumps(x, **dump_kwargs) except Exception: try: buffers.clear()