faust icon indicating copy to clipboard operation
faust copied to clipboard

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

Open pedro-a-n-moreira opened this issue 10 months ago • 0 comments

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.

pedro-a-n-moreira avatar Jan 30 '25 15:01 pedro-a-n-moreira