Skip to content

BUG | When using Aerospike with tumbling windows, the config is not loaded #656

@pedro-a-n-moreira

Description

@pedro-a-n-moreira

So, I'm using the latest version of Faust with an Aerospike database for persistence. I have followed the instructions in the project's README.md, but I still get this issue with tumbling windows:

Here is my code:

sum_transactions_table = (
    app.Table(
        'transactions-sum',
        default=float,
        partitions=config.faust.partitions,
        on_window_close=window_processor,
        options={'namespace': 'default', 'client': {'hosts': [('127.0.0.1', 3000)]}},
    )
    .tumbling(
        config.faust.window_closing_time,
        expires=timedelta(hours=config.faust.window_expires),
        key_index=True
    )
)

This produces the following error output:

[2025-01-30 12:42:00,764] [10813] [ERROR] Error configuring aerospike client 'NoneType' object has no attribute 'get' 
[2025-01-30 12:42:00,764] [10813] [ERROR] [^Worker]: Error: AttributeError("'NoneType' object has no attribute 'get'") 
Traceback (most recent call last):
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/worker.py", line 277, in execute_from_commandline
    self.loop.run_until_complete(self._starting_fut)
  File "/Users/pedro/.local/share/uv/python/cpython-3.12.7-macos-aarch64-none/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 830, in start
    await self._default_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 837, in _default_start
    await self._actually_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 861, in _actually_start
    await child.maybe_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 889, in maybe_start
    await self.start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 830, in start
    await self._default_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 837, in _default_start
    await self._actually_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 861, in _actually_start
    await child.maybe_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 889, in maybe_start
    await self.start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 830, in start
    await self._default_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 837, in _default_start
    await self._actually_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 854, in _actually_start
    await self.on_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/tables/manager.py", line 142, in on_start
    await self._update_channels()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/tables/manager.py", line 158, in _update_channels
    await table.maybe_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 889, in maybe_start
    await self.start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 830, in start
    await self._default_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 837, in _default_start
    await self._actually_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/mode/services.py", line 854, in _actually_start
    await self.on_start()
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/tables/base.py", line 218, in on_start
    await self.add_runtime_dependency(self.data)
                                      ^^^^^^^^^
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/tables/base.py", line 213, in data
    self._data = self._new_store()
                 ^^^^^^^^^^^^^^^^^
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/tables/base.py", line 192, in _new_store
    return self._new_store_by_url(self._store or self.app.conf.store)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/tables/base.py", line 195, in _new_store_by_url
    return stores.by_url(url)(
           ^^^^^^^^^^^^^^^^^^^
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/stores/aerospike.py", line 70, in __init__
    raise ex
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/stores/aerospike.py", line 63, in __init__
    self.client = AeroSpikeStore.get_aerospike_client(options)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pedro/Projects/poc_faust/.venv/lib/python3.12/site-packages/faust/stores/aerospike.py", line 80, in get_aerospike_client
    client_config: Dict[Any, Any] = aerospike_config.get(
                                    ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get'

Note that removing the .tumbling() method makes it work. So looks like it is not loading the config from the table.

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