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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions