Skip to content

Cached_input crashes #4167

@paranoidi

Description

@paranoidi

Tried to remedy by deleting clearing tables input_cache and input_cache_entry, did not help.

Log:

(click to expand)
BUG: Unhandled error in plugin crossmatch: 'NoneType' object is not iterable
Traceback (most recent call last):

  File "/home/paranoidi/.local/share/uv/python/cpython-3.12.8-linux-x86_64-gnu/lib/python3.12/threading.py", line 1032, in _bootstrap
    self._bootstrap_inner()
    │    └ <function Thread._bootstrap_inner at 0x7f8f7c646ca0>
    └ <Thread(task_queue, started daemon 140254156617472)>
  File "/home/paranoidi/.local/share/uv/python/cpython-3.12.8-linux-x86_64-gnu/lib/python3.12/threading.py", line 1075, in _bootstrap_inner
    self.run()
    │    └ <function Thread.run at 0x7f8f7c646980>
    └ <Thread(task_queue, started daemon 140254156617472)>
  File "/home/paranoidi/.local/share/uv/python/cpython-3.12.8-linux-x86_64-gnu/lib/python3.12/threading.py", line 1012, in run
    self._target(*self._args, **self._kwargs)
    │    │        │    │        │    └ {}
    │    │        │    │        └ <Thread(task_queue, started daemon 140254156617472)>
    │    │        │    └ ()
    │    │        └ <Thread(task_queue, started daemon 140254156617472)>
    │    └ <bound method TaskQueue.run of <flexget.task_queue.TaskQueue object at 0x7f8f77e3e600>>
    └ <Thread(task_queue, started daemon 140254156617472)>

  File "/home/paranoidi/.flexget/flexget/task_queue.py", line 46, in run
    self.current_task.execute()
    │    │            └ <function Task.execute at 0x7f8f79ff82c0>
    │    └ <flexget.task.Task object at 0x7f8f775b6150>
    └ <flexget.task_queue.TaskQueue object at 0x7f8f77e3e600>

  File "/home/paranoidi/.flexget/flexget/task.py", line 89, in wrapper
    return func(self, *args, **kw)
           │    │      │       └ {}
           │    │      └ ()
           │    └ <flexget.task.Task object at 0x7f8f775b6150>
           └ <function Task.execute at 0x7f8f79ff8220>

  File "/home/paranoidi/.flexget/flexget/task.py", line 717, in execute
    self._execute()
    │    └ <function Task._execute at 0x7f8f79ff8180>
    └ <flexget.task.Task object at 0x7f8f775b6150>

  File "/home/paranoidi/.flexget/flexget/task.py", line 686, in _execute
    self.__run_task_phase(phase)
    │                     └ 'filter'
    └ <flexget.task.Task object at 0x7f8f775b6150>

  File "/home/paranoidi/.flexget/flexget/task.py", line 515, in __run_task_phase
    response = self.__run_plugin(plugin, phase, args)
               │                 │       │      └ (<flexget.task.Task object at 0x7f8f775b6150>, {'from': [{'imdb_watchlist': {'list': 'ratings', 'user_id': 'urXXXXXX', 'forc...
               │                 │       └ 'filter'
               │                 └ <PluginInfo(name=crossmatch)>
               └ <flexget.task.Task object at 0x7f8f775b6150>

> File "/home/paranoidi/.flexget/flexget/task.py", line 548, in __run_plugin
    result = method(*args, **kwargs)
             │       │       └ {}
             │       └ (<flexget.task.Task object at 0x7f8f775b6150>, {'from': [{'imdb_watchlist': {'list': 'ratings', 'user_id': 'urXXXXXX', 'forc...
             └ <Event(name=plugin.crossmatch.filter,func=on_task_filter,priority=128)>

  File "/home/paranoidi/.flexget/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
           │    │     │       └ {}
           │    │     └ (<flexget.task.Task object at 0x7f8f775b6150>, {'from': [{'imdb_watchlist': {'list': 'ratings', 'user_id': 'urXXXXXX', 'forc...
           │    └ <bound method CrossMatch.on_task_filter of <flexget.plugins.filter.crossmatch.CrossMatch object at 0x7f8f78d4dfa0>>
           └ <Event(name=plugin.crossmatch.filter,func=on_task_filter,priority=128)>

  File "/home/paranoidi/.flexget/flexget/plugins/filter/crossmatch.py", line 49, in on_task_filter
    match_entries = aggregate_inputs(task, config['from'])
                    │                │     └ {'from': [{'imdb_watchlist': {'list': 'ratings', 'user_id': 'urXXXXXX', 'force_language': 'en-us', 'type': ['all']}}], 'fiel...
                    │                └ <flexget.task.Task object at 0x7f8f775b6150>
                    └ <function aggregate_inputs at 0x7f8f7a480c20>

  File "/home/paranoidi/.flexget/flexget/utils/tools.py", line 512, in aggregate_inputs
    result = method(task, input_config)
             │      │     └ {'list': 'ratings', 'user_id': 'urXXXXXX', 'force_language': 'en-us', 'type': ['all']}
             │      └ <flexget.task.Task object at 0x7f8f775b6150>
             └ <Event(name=plugin.imdb_watchlist.input,func=wrapped_func,priority=128)>

  File "/home/paranoidi/.flexget/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
           │    │     │       └ {}
           │    │     └ (<flexget.task.Task object at 0x7f8f775b6150>, {'list': 'ratings', 'user_id': 'urXXXXXX', 'force_language': 'en-us', 'type':...
           │    └ <bound method cached.__call__.<locals>.wrapped_func of <flexget.components.imdb.imdb_watchlist.ImdbWatchlist object at 0x7f8f...
           └ <Event(name=plugin.imdb_watchlist.input,func=wrapped_func,priority=128)>

  File "/home/paranoidi/.flexget/flexget/utils/cached_input.py", line 178, in wrapped_func
    cache = IterableCache(response, self.store_to_db if self.persist else None)
            │             │         │    │              │    └ datetime.timedelta(seconds=7200)
            │             │         │    │              └ <flexget.utils.cached_input.cached object at 0x7f8f780bd220>
            │             │         │    └ <function cached.store_to_db at 0x7f8f78dd4720>
            │             │         └ <flexget.utils.cached_input.cached object at 0x7f8f780bd220>
            │             └ None
            └ <class 'flexget.utils.cached_input.IterableCache'>

  File "/home/paranoidi/.flexget/flexget/utils/cached_input.py", line 226, in __init__
    self.iterable = iter(iterable)
    │                    └ None
    └ <flexget.utils.cached_input.IterableCache object at 0x7f8f75a9b1a0>

TypeError: 'NoneType' object is not iterable
Traceback (most recent call last):
  File "/home/paranoidi/.flexget/flexget/task.py", line 548, in __run_plugin
    result = method(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/paranoidi/.flexget/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/paranoidi/.flexget/flexget/plugins/filter/crossmatch.py", line 49, in on_task_filter
    match_entries = aggregate_inputs(task, config['from'])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/paranoidi/.flexget/flexget/utils/tools.py", line 512, in aggregate_inputs
    result = method(task, input_config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/paranoidi/.flexget/flexget/event.py", line 21, in __call__
    return self.func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/paranoidi/.flexget/flexget/utils/cached_input.py", line 178, in wrapped_func
    cache = IterableCache(response, self.store_to_db if self.persist else None)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/paranoidi/.flexget/flexget/utils/cached_input.py", line 226, in __init__
    self.iterable = iter(iterable)
                    ^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not iterable

Additional information:

  • FlexGet version: 0a91b2e
  • Python version: 3.12
  • Installation method: uv
  • Using daemon (yes/no): no

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions