Suor / django-cacheops

A slick ORM cache with automatic granular event-driven invalidation.
BSD 3-Clause "New" or "Revised" License
2.09k stars 227 forks source link

@user_script: 36: Unknown Redis command called from Lua script #483

Open feyzabakir-b opened 3 weeks ago

feyzabakir-b commented 3 weeks ago

Hello, I am getting this error. I have two computers, it works fine on one, I am getting this problem on the other computer and I couldn't solve it. I am connecting to Redis with Docker. What could be causing this error? Python: 3.12.4 Django-cacheops: 7.0.2 redis-server: 7.0.4

Suor commented 3 weeks ago

It will help if you provide a stack trace.

feyzabakir-b commented 3 weeks ago

image image image

It performs operations on the database but does not fetch them from the cache. There is a problem with the response.

redis.exceptions.ResponseError: Error running script (call to f_0605214935a9ffcd4b9e5779300302540ff08da4): @user_script:36: @user_script: 36: Unknown Redis command called from Lua script [20/Aug/2024 09:28:04] "POST /basket/add/1/ HTTP/1.1" 500 31473

Suor commented 3 weeks ago

Still not a stack trace )

feyzabakir-b commented 3 weeks ago

I didn't understand what you wanted

Suor commented 3 weeks ago

Also may get redis log to see what command is problematic.

Suor commented 3 weeks ago

Although cache_thing.lua doesn't have command on line 36, and invalidate.lua calls unlink. It is only not present in some old redis versions. So maybe you are using that not 7.0.4

feyzabakir-b commented 3 weeks ago
[20/Aug/2024 11:02:54] "GET /basket/ HTTP/1.1" 200 445
Internal Server Error: /basket/add/2/
Traceback (most recent call last):
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\views\decorators\csrf.py", line 65, in _view_wrapper
    return view_func(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\views\generic\base.py", line 104, in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\rest_framework\views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\rest_framework\generics.py", line 194, in post
    return self.create(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\rest_framework\mixins.py", line 19, in create
    self.perform_create(serializer)
  File "C:\Users\PC_1920\Desktop\project-nexus\basket\views.py", line 26, in perform_create
    basket_item = basket_service.add_item_to_basket(self.request.user, product_id, quantity)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\query.py", line 109, in wrapper
    result = func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\basket\services.py", line 27, in add_item_to_basket
    basket_item.save()
  File "C:\Users\PC_1920\Desktop\project-nexus\common\models.py", line 49, in save
    super().save(*args, **kwargs)
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\db\models\base.py", line 822, in save
    self.save_base(
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\db\models\base.py", line 924, in save_base
    post_save.send(
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\django\dispatch\dispatcher.py", line 189, in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 47, in wrapper
    return deco(call, *dargs, **dkwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\invalidation.py", line 21, in skip_on_no_invalidation
    return call()
           ^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 68, in __call__
    return self._func(*self._args, **self._kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\query.py", line 439, in _post_save
    invalidate_obj(old, using=using)
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 47, in wrapper
    return deco(call, *dargs, **dkwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\invalidation.py", line 21, in skip_on_no_invalidation
    return call()
           ^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 68, in __call__
    return self._func(*self._args, **self._kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\invalidation.py", line 50, in invalidate_obj
    invalidate_dict(model, get_obj_dict(model, obj), using=using)
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 47, in wrapper
    return deco(call, *dargs, **dkwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\invalidation.py", line 21, in skip_on_no_invalidation
    return call()
           ^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 68, in __call__
    return self._func(*self._args, **self._kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 47, in wrapper
    return deco(call, *dargs, **dkwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\transaction.py", line 63, in queue_when_in_transaction
    return call()
           ^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 68, in __call__
    return self._func(*self._args, **self._kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 47, in wrapper
    return deco(call, *dargs, **dkwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\redis.py", line 16, in handle_connection_failure
    return call()
           ^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\funcy\decorators.py", line 68, in __call__
    return self._func(*self._args, **self._kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\cacheops\invalidation.py", line 40, in invalidate_dict
    load_script(script)(keys=[prefix], args=[model._meta.db_table, serialized_dict])
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\commands\core.py", line 6296, in __call__
    return client.evalsha(self.sha, len(keys), *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\commands\core.py", line 5672, in evalsha
    return self._evalsha("EVALSHA", sha, numkeys, *keys_and_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\commands\core.py", line 5656, in _evalsha
    return self.execute_command(command, sha, numkeys, *keys_and_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\client.py", line 548, in execute_command
    return conn.retry.call_with_retry(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\retry.py", line 62, in call_with_retry
    return do()
           ^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\client.py", line 549, in <lambda>
    lambda: self._send_command_parse_response(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\client.py", line 525, in _send_command_parse_response
    return self.parse_response(conn, command_name, **options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\client.py", line 565, in parse_response
    response = connection.read_response()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\PC_1920\Desktop\project-nexus\venv\Lib\site-packages\redis\connection.py", line 536, in read_response
    raise response
redis.exceptions.ResponseError: Error running script (call to f_0605214935a9ffcd4b9e5779300302540ff08da4): @user_script:36: @user_script: 36: Unknown Redis command called from Lua script
[20/Aug/2024 11:03:00] "POST /basket/add/2/ HTTP/1.1" 500 31560
feyzabakir-b commented 3 weeks ago
1:C 20 Aug 2024 07:08:11.803 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 20 Aug 2024 07:08:11.803 # Redis version=7.0.4, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 20 Aug 2024 07:08:11.803 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 20 Aug 2024 07:08:11.803 * monotonic clock: POSIX clock_gettime
1:M 20 Aug 2024 07:08:11.804 * Running mode=standalone, port=6379.
1:M 20 Aug 2024 07:08:11.804 # Server initialized
1:M 20 Aug 2024 07:08:11.805 * Ready to accept connections

Logs are not falling here