boto / s3transfer

Amazon S3 Transfer Manager for Python
Apache License 2.0
215 stars 134 forks source link

Test faliure on 3.14 #320

Open limburgher opened 2 days ago

limburgher commented 2 days ago

See: https://bugzilla.redhat.com/show_bug.cgi?id=2326933

=================================== FAILURES =================================== TestBaseManager.test_can_provide_signal_handler_initializers_tostart

self =

@skip_if_windows('os.kill() with SIGINT not supported on Windows')
def test_can_provide_signal_handler_initializers_to_start(self):
    manager = self.create_pid_manager()
  manager.start(signal.signal, (signal.SIGINT, signal.SIG_IGN))

tests/unit/test_compat.py:97:


/usr/lib64/python3.14/multiprocessing/managers.py:565: in start self._process.start() /usr/lib64/python3.14/multiprocessing/process.py:121: in start self._popen = self._Popen(self) /usr/lib64/python3.14/multiprocessing/context.py:300: in _Popen return Popen(process_obj) /usr/lib64/python3.14/multiprocessing/popen_forkserver.py:35: in init super().init(process_obj) /usr/lib64/python3.14/multiprocessing/popen_fork.py:20: in init self._launch(process_obj) /usr/lib64/python3.14/multiprocessing/popen_forkserver.py:47: in _launch reduction.dump(process_obj, buf)


obj = file = <_io.BytesIO object at 0x7f2b60580630>, protocol = None

def dump(obj, file, protocol=None):
    '''Replacement for pickle.dump() using ForkingPickler.'''
  ForkingPickler(file, protocol).dump(obj)

E _pickle.PicklingError: Can't pickle local object <class 'tests.unit.test_compat.TestBaseManager.create_pid_manager..PIDManager'> E when serializing tuple item 0 E when serializing method reconstructor arguments E when serializing method object E when serializing dict item '_target' E when serializing multiprocessing.context.ForkServerProcess state E when serializing multiprocessing.context.ForkServerProcess object

/usr/lib64/python3.14/multiprocessing/reduction.py:60: PicklingError

According to https://docs.python.org/dev/whatsnew/3.14.html#multiprocessing

The default start method (see Contexts and start methods) changed from fork to forkserver on platforms other than macOS & Windows where it was already spawn. If you require the threading incompatible fork start method you must explicitly request it using a context from multiprocessing.get_context() (preferred) or change the default via multiprocessing.set_start_method(). (Contributed by Gregory P. Smith in gh-84559.)

nateprewitt commented 2 days ago

Thanks for the issue @limburgher. The 3.14 alpha is still relatively new (<1 month old). We generally will not start looking at work to resolve compatibility issues until the build is at least in beta. We can keep this to track the issue for later work.

limburgher commented 2 days ago

Sounds good. If neither of us have fixed this by the time we start building Fedora with 3.14, I'll just skip that test.