Skip to content

Unit Test Failure: AttributeError 'NoneType' object has no attribute 'cancelled' in test_copy_from_query_to_sink #8

@setoru

Description

@setoru

Description:
When executing the test case tests/test_copy.py::TestCopyFrom::test_copy_from_query_to_sink, an AttributeError is thrown. The error occurs because a NoneType object is being accessed for the cancelled attribute, which is expected to exist on a valid object (likely an asyncio Future or similar).

Logs:

Traceback (most recent call last):
  File "/usr/lib64/python3.9/unittest/case.py", line 59, in testPartExecutor
    yield
  File "/usr/lib64/python3.9/unittest/case.py", line 592, in run
    self._callTestMethod(testMethod)
  File "/usr/lib64/python3.9/unittest/case.py", line 550, in _callTestMethod
    method()
  File "/home/gaussdbuser/gaussdb-python-async/.venv/lib64/python3.9/site-packages/async_gaussdb/_testbase/__init__.py", line 92, in wrapper
    self.loop.run_until_complete(coro)
  File "/usr/lib64/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/home/gaussdbuser/gaussdb-python-async/tests/test_copy.py", line 244, in test_copy_from_query_to_sink
    await self.con.copy_from_query(...)
  File "/home/gaussdbuser/gaussdb-python-async/.venv/lib64/python3.9/site-packages/async_gaussdb/connection.py", line 932, in copy_from_query
    return await self._copy_out(copy_stmt, output, timeout)
  File "/home/gaussdbuser/gaussdb-python-async/.venv/lib64/python3.9/site-packages/async_gaussdb/connection.py", line 1197, in _copy_out
    return await self._protocol.copy_out(copy_stmt, writer, timeout)
  File "async_gaussdb/protocol/protocol.pyx", line 400, in copy_out
  File "async_gaussdb/protocol/protocol.pyx", line 401, in async_gaussdb.protocol.protocol.BaseProtocol.copy_out
    done, status_msg = await waiter
  File "async_gaussdb/protocol/coreproto.pyx", line 110, in async_gaussdb.protocol.protocol.CoreProtocol._read_server_messages
    self._process_copy_out_data(mtype)
  File "async_gaussdb/protocol/coreproto.pyx", line 387, in async_gaussdb.protocol.protocol.CoreProtocol._process_copy_out_data
    self._parse_copy_data_msgs()
  File "async_gaussdb/protocol/coreproto.pyx", line 456, in async_gaussdb.protocol.protocol.CoreProtocol._parse_copy_data_msgs
    self._on_result()
  File "async_gaussdb/protocol/protocol.pyx", line 935, in async_gaussdb.protocol.protocol.BaseProtocol._on_result
    self._dispatch_result()
  File "async_gaussdb/protocol/protocol.pyx", line 855, in async_gaussdb.protocol.protocol.BaseProtocol._dispatch_result
    if waiter.cancelled():
AttributeError: 'NoneType' object has no attribute 'cancelled'

How to reproduce it:

pytest --durations=0 -s -v tests/test_copy.py

Expected Behavior
Test completes successfully without AttributeError.

Actual Behavior
The test fails with an AttributeError, as a NoneType object is accessed for the cancelled attribute during the copy-from-query operation.

Environment

  • OS: Huawei Cloud EulerOS 2.0
  • Python Version: 3.9
  • Database: GaussDB Kernel 505.2.1.SPC0800 build 3e43b3bc

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions