s3ql 5.3 test failure on debian trixie

30 views
Skip to first unread message

Joseph Maher

unread,
Aug 15, 2025, 1:35:01 PMAug 15
to s3...@googlegroups.com

Thanks for all your work on s3ql!

I'm building s3ql on debian trixie, and I'm getting the following test
failure, any advice much appreciated!

Joseph

========================================================== FAILURES
==========================================================
__________________________________________________
test_aborted_write2[ssl]
__________________________________________________
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341, in
from_call
result: TResult | None = func()
~~~~^^
File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 242, in
<lambda>
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in
__call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)

~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in
_hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 182, in
_multicall
return outcome.get_result()
~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/pluggy/_result.py", line 100, in
get_result
raise exc.with_traceback(exc.__traceback__)
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in
_multicall
teardown.throw(outcome._exception)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line
92, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/usr/lib/python3/dist-packages/_pytest/threadexception.py", line
68, in thread_exception_runtest_hook
yield
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in
_multicall
teardown.throw(outcome._exception)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py",
line 95, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/usr/lib/python3/dist-packages/_pytest/unraisableexception.py",
line 70, in unraisable_exception_runtest_hook
yield
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in
_multicall
teardown.throw(outcome._exception)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 846, in
pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 829, in
_runtest_for
yield
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in
_multicall
teardown.throw(outcome._exception)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/_pytest/capture.py", line 898, in
pytest_runtest_call
return (yield)
^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in
_multicall
teardown.throw(outcome._exception)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/_pytest/skipping.py", line 257, in
pytest_runtest_call
return (yield)
^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in
_multicall
res = hook_impl.function(*args)
File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 174, in
pytest_runtest_call
item.runtest()
~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1627, in
runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513, in
__call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)

~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in
_hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 182, in
_multicall
return outcome.get_result()
~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/pluggy/_result.py", line 100, in
get_result
raise exc.with_traceback(exc.__traceback__)
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103, in
_multicall
res = hook_impl.function(*args)
File "/usr/lib/python3/dist-packages/_pytest/python.py", line 159, in
pytest_pyfunc_call
result = testfunction(**testargs)
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/tests/t0_http.py",
line 986, in test_aborted_write2
assert_raises(ConnectionClosed, conn.read_response)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/_pytest/python_api.py", line 976,
in raises
func(*args[1:], **kwargs)
~~~~^^^^^^^^^^^^^^^^^^^^^
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/src/s3ql/http.py",
line 735, in read_response
return eval_coroutine(self.co_read_response())
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/src/s3ql/http.py",
line 1395, in eval_coroutine
next(it)
~~~~^^^^
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/src/s3ql/http.py",
line 759, in co_read_response
(status, reason) = await self._co_read_status()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/src/s3ql/http.py",
line 891, in _co_read_status
line = await self._co_readstr_until(b'\r\n', MAX_LINE_SIZE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/src/s3ql/http.py",
line 1179, in _co_readstr_until
res = self._try_fill_buffer()
File "/home/maher/src/s3ql/upstream/5.3/s3ql-5.3.0/src/s3ql/http.py",
line 1234, in _try_fill_buffer
len_ = self._sock.recv_into(memoryview(rbuf.d)[rbuf.e :])
File "/usr/lib/python3.13/ssl.py", line 1304, in recv_into
return self.read(nbytes, buffer)
~~~~~~~~~^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/ssl.py", line 1138, in read
return self._sslobj.read(len, buffer)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
ssl.SSLError: [SSL: UNEXPECTED_EOF_WHILE_READING] unexpected eof while
reading (_ssl.c:2649)
====================================================== warnings summary
======================================================
t0_http.py::test_read_text[plain]
t0_http.py::test_read_text2[plain]
t0_http.py::test_read_text3[plain]
t0_http.py::test_read_text[ssl]
t0_http.py::test_read_text2[ssl]
t0_http.py::test_read_text3[ssl]
/usr/lib/python3/dist-packages/_pytest/unraisableexception.py:85:
PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper
encoding='UTF-8'>

AttributeError: 'HTTPConnection' object has no attribute 'flush'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/_pytest/python.py", line 159, in
pytest_pyfunc_call
result = testfunction(**testargs)
AttributeError: 'HTTPConnection' object has no attribute 'close'. Did
you mean: 'closed'?

warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================================== short test summary info
===================================================
FAILED tests/t0_http.py::test_aborted_write2[ssl] - ssl.SSLError: [SSL:
UNEXPECTED_EOF_WHILE_READING] unexpected eof while reading (_ssl.c:2649)
========================================= 1 failed, 109 passed, 6 warnings
in 24.03s =============

Daniel Jagszent

unread,
Aug 17, 2025, 9:02:56 AMAug 17
to Joseph Maher, s3...@googlegroups.com

Hi Joseph,

I'm building s3ql on debian trixie, and I'm getting the following test failure, any advice much appreciated! […]

Is this a persistent error? Re-running the tests multiple times, do you always get the error?

We currently do not run tests with Python 3.13, and it looks like the Python 3.13 "ssl" package has changes that we need to address.

But when I run the tests with Python 3.13 (on Ubuntu 24.04 with uv, main-branch), I only get some warnings, not the error you get:

$ uv venv --python 3.13
$ source .venv/bin/activate
$ uv sync --extra dev
$ PYTHONTRACEMALLOC=20  py.test tests/t0_http.py
# […]
============== warnings summary ==============
t0_http.py::test_read_text[plain]
t0_http.py::test_read_text[ssl]
  /s3ql-source/.venv/lib/python3.13/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper encoding='UTF-8'>


 
  AttributeError: 'HTTPConnection' object has no attribute 'flush'
 
  During handling of the above exception, another exception occurred:
 
  Traceback (most recent call last):

    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 157, in pytest_pyfunc_call


      result = testfunction(**testargs)
  AttributeError: 'HTTPConnection' object has no attribute 'close'. Did you mean: 'closed'?
 
 

  Object allocated at:
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/main.py", line 367
      item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 117
      runtestprotocol(item, nextitem=nextitem)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 136
      reports.append(call_and_report(item, "call", log))
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 245
      call = CallInfo.from_call(
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 344


      result: TResult | None = func()

    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 246


      lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 178
      item.runtest()
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 1671
      self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 157
      result = testfunction(**testargs)
    File "/s3ql-source/tests/t0_http.py", line 486
      fh = TextIOWrapper(conn)
    warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

t0_http.py::test_read_text2[plain]
t0_http.py::test_read_text2[ssl]
  /s3ql-source/.venv/lib/python3.13/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper encoding='UTF-8'>


 
  AttributeError: 'HTTPConnection' object has no attribute 'flush'
 
  During handling of the above exception, another exception occurred:
 
  Traceback (most recent call last):

    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 157, in pytest_pyfunc_call


      result = testfunction(**testargs)
  AttributeError: 'HTTPConnection' object has no attribute 'close'. Did you mean: 'closed'?
 
 

  Object allocated at:
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/main.py", line 367
      item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 117
      runtestprotocol(item, nextitem=nextitem)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 136
      reports.append(call_and_report(item, "call", log))
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 245
      call = CallInfo.from_call(
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 344


      result: TResult | None = func()

    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 246


      lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 178
      item.runtest()
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 1671
      self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 157
      result = testfunction(**testargs)
    File "/s3ql-source/tests/t0_http.py", line 494
      fh = TextIOWrapper(conn)
    warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

t0_http.py::test_read_text3[plain]
t0_http.py::test_read_text3[ssl]
  /s3ql-source/.venv/lib/python3.13/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper encoding='UTF-8'>


 
  AttributeError: 'HTTPConnection' object has no attribute 'flush'
 
  During handling of the above exception, another exception occurred:
 
  Traceback (most recent call last):

    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 157, in pytest_pyfunc_call


      result = testfunction(**testargs)
  AttributeError: 'HTTPConnection' object has no attribute 'close'. Did you mean: 'closed'?
 
 

  Object allocated at:
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/main.py", line 367
      item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 117
      runtestprotocol(item, nextitem=nextitem)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 136
      reports.append(call_and_report(item, "call", log))
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 245
      call = CallInfo.from_call(
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 344


      result: TResult | None = func()

    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 246


      lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 178
      item.runtest()
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 1671
      self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512


      return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120


      return self._inner_hookexec(hook_name, methods, kwargs, firstresult)

    File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121
      res = hook_impl.function(*args)
    File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py", line 157
      result = testfunction(**testargs)
    File "/s3ql-source/tests/t0_http.py", line 503
      fh = TextIOWrapper(conn)
    warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))




Until we address Python 3.13 compatibility issues, you might want to install S3QL inside a venv with Python 3.12.

Joseph Maher

unread,
Aug 17, 2025, 9:56:59 PMAug 17
to Daniel Jagszent, s3...@googlegroups.com

Yes - it's a persistent error...

I don't get any errors on ubuntu 24.10 (oracular), but I do get the errors
on ubuntu 25.04 (plucky), so it looks like something changed between these
versions:


ubuntu 24.10 has:

libssl3t64:amd64 3.3.1-2ubuntu2.1
python3-openssl 24.2.1-1


ubuntu 25.04 has:

libssl3t64:amd64 3.4.1-1ubuntu3
python3-openssl 25.0.0-1



Joseph

dan...@jagszent.de

unread,
Aug 20, 2025, 12:18:11 PMAug 20
to s3ql
Hello Joseph,

I have created an issue for this here: https://github.com/s3ql/s3ql/issues/384

Could you please try this patch:

Index: src/s3ql/http.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/s3ql/http.py b/src/s3ql/http.py
--- a/src/s3ql/http.py (revision 751e14b08e3401acae81686c7c237300d350a7e6)
+++ b/src/s3ql/http.py (date 1755705524152)
@@ -1239,6 +1239,11 @@
             return None
         except (ConnectionResetError, BrokenPipeError, ssl.SSLEOFError):
             raise ConnectionClosed('connection was interrupted')
+        except ssl.SSLError as exc:
+            if exc.library == 'SSL' and exc.reason == 'UNEXPECTED_EOF_WHILE_READING':
+                raise ConnectionClosed('connection was interrupted')
+            else:
+                raise exc
 
         rbuf.e += len_
         log.debug('done (got %d bytes)', len_)



Locally, this patch fixed the failed test for me:

$ python3 -m pytest tests/t0_http.py::test_aborted_write2[ssl]

================================================================================== test session starts ===================================================================================

platform linux -- Python 3.13.5, pytest-8.3.5, pluggy-1.5.0 -- /usr/bin/python3

cachedir: .pytest_cache

rootdir: /.../s3ql-git/tests

configfile: pytest.ini

plugins: trio-0.8.0, typeguard-4.4.2

collected 1 item                                                                                                                                                                         


tests/t0_http.py::test_aborted_write2[ssl] PASSED                                                                                                                                  [100%]


=================================================================================== 1 passed in 0.72s ====================================================================================

jos...@maher.org.uk

unread,
Sep 6, 2025, 8:53:01 PM (14 days ago) Sep 6
to s3ql
Yes - this works!  Thanks ever so much - I notice this has already been applied to the 5.4 release.

One more issue I ran in to for trixie is that something seems to have changed for the type checking. If I set  --metadata-backup-interval=0 to disable automatic uploading I get this sort of error:

> TypeError: '<' not supported between instances of 'NoneType' and 'int' at mount.py:670with > trio.move_on_after(self.options.metadata_backup_interval):

The following patch fixes this for me, but obviously I don't know if this is the right thing to do:

--- s3ql-5.4.0.orig/src/s3ql/mount.py
+++ s3ql-5.4.0/src/s3ql/mount.py
@@ -684,6 +684,8 @@ class MetadataUploadTask:
         log.debug('started')
 
         while not self.quit:
+            if self.options.metadata_backup_interval is None:
+                break
             with trio.move_on_after(self.options.metadata_backup_interval):
                 await self.event.wait()



Thanks a lot!

Joseph

Nikolaus Rath

unread,
Sep 7, 2025, 5:32:54 AM (13 days ago) Sep 7
to noreply-spamdigest via s3ql


On Sun, 7 Sep 2025, at 01:53, 'jos...@maher.org.uk' via s3ql wrote:
Yes - this works!  Thanks ever so much - I notice this has already been applied to the 5.4 release.

One more issue I ran in to for trixie is that something seems to have changed for the type checking. If I set  --metadata-backup-interval=0 to disable automatic uploading I get this sort of error:

> TypeError: '<' not supported between instances of 'NoneType' and 'int' at mount.py:670with > trio.move_on_after(self.options.metadata_backup_interval):

Thanks for reporting this. I think this has been broken for a while (I reproduced with 5.2.3). Fixed it now (your patch isn't quite correct, it also disables uploading through s3qlctrl).

Best,
Nikolaus

jos...@maher.org.uk

unread,
Sep 7, 2025, 11:43:57 PM (12 days ago) Sep 7
to s3ql
Great - thanks!  All works well now!

Joseph

 
Reply all
Reply to author
Forward
0 new messages