Redash: InvalidToken error when execute query

Created on 5 May 2019  ·  7Comments  ·  Source: getredash/redash

Issue Summary

error detail

worker_1    | [2019-05-05 10:18:15,608][PID:139][ERROR][ForkPoolWorker-7] Task redash.tasks.execute_query[671b61be-a3c7-4b39-83b4-c71ea499f9d9] raised unexpected: InvalidToken()
worker_1    | Traceback (most recent call last):
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 382, in trace_task
worker_1    |     R = retval = fun(*args, **kwargs)
worker_1    |   File "/app/redash/worker.py", line 64, in __call__
worker_1    |     return TaskBase.__call__(self, *args, **kwargs)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 641, in __protected_call__
worker_1    |     return self.run(*args, **kwargs)
worker_1    |   File "/app/redash/tasks/queries.py", line 390, in execute_query
worker_1    |     scheduled_query).run()
worker_1    |   File "/app/redash/tasks/queries.py", line 290, in __init__
worker_1    |     self.data_source = self._load_data_source()
worker_1    |   File "/app/redash/tasks/queries.py", line 377, in _load_data_source
worker_1    |     return models.DataSource.query.get(self.data_source_id)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 924, in get
worker_1    |     ident, loading.load_on_pk_identity)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 1007, in _get_impl
worker_1    |     return db_load_fn(self, primary_key_identity)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 250, in load_on_pk_identity
worker_1    |     return q.one()
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2954, in one
worker_1    |     ret = self.one_or_none()
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2924, in one_or_none
worker_1    |     ret = list(self)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 98, in instances
worker_1    |     util.raise_from_cause(err)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
worker_1    |     reraise(type(exception), exception, tb=exc_tb, cause=cause)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 79, in instances
worker_1    |     rows = [proc(row) for row in fetch]
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 511, in _instance
worker_1    |     loaded_instance, populate_existing, populators)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/loading.py", line 611, in _populate_full
worker_1    |     dict_[key] = getter(row)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/type_api.py", line 1226, in process
worker_1    |     return process_value(impl_processor(value), dialect)
worker_1    |   File "/app/redash/models/types.py", line 28, in process_result_value
worker_1    |     return ConfigurationContainer.from_json(super(EncryptedConfiguration, self).process_result_value(value, dialect))
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py", line 409, in process_result_value
worker_1    |     decrypted_value = self.engine.decrypt(value)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py", line 216, in decrypt
worker_1    |     decrypted = self.fernet.decrypt(value)
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/cryptography/fernet.py", line 103, in decrypt
worker_1    |     raise InvalidToken
worker_1    | InvalidToken

Steps to Reproduce

this is my yaml file

version: '2'
services:
  server:
    image: redash/redash:latest
    command: server
    depends_on:
      - postgres
      - redis
    ports:
      - "5000:5000"
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: "Q422k6vaXUk8"
      REDASH_WEB_WORKERS: 4
    restart: unless-stopped
  worker:
    image: redash/redash:latest
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
    restart: unless-stopped
  redis:
    image: redis:3.0-alpine
    ports:
    - "6379:6379"
    volumes:
      - ./data/redis_data:/data
    restart: always
  postgres:
    image: postgres:9.5.6-alpine
    ports:
    - "5432:5432"
    volumes:
      - ./data/postgresql_data:/var/lib/postgresql/data
    restart: unless-stopped
1,docker-compose -f docker-compose-prod.yaml run --rm server create_db

2,docker-compose -f docker-compose-prod.yaml up

3,visit http://127.0.0.1:5000/ and add mysql data source success

then visit http://127.0.0.1:5000/queries/new , create a new query and execute will get an error like the one above. InvalidToken

Technical details:

  • Redash Version: Version: 7.0.0+b18042 (4a978bad)
  • Browser/OS: Mac Os
  • How did you install Redash: docker-compose

Most helpful comment

You need to set the same REDASH_COOKIE_SECRET for all Redash Docker services. In your case: both server and worker.

All 7 comments

You need to set the same REDASH_COOKIE_SECRET for all Redash Docker services. In your case: both server and worker.

You need to set the same REDASH_COOKIE_SECRET for all Redash Docker services. In your case: both server and worker.

how to deal with this problem

@uniquewdl
just add a environment same parameter REDASH_COOKIE_SECRET and value form server to worker

services: server: image: redash/redash:latest command: server depends_on: - postgres - redis ports: - "5000:5000" environment: PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: "Q422k6vaXUk8" REDASH_WEB_WORKERS: 4 restart: always worker: image: redash/redash:latest command: scheduler environment: PYTHONUNBUFFERED: 0 REDASH_COOKIE_SECRET: "Q422k6vaXUk8" REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" QUEUES: "queries,scheduled_queries,celery" WORKERS_COUNT: 2 restart: always

@uniquewdl
just add a environment same parameter REDASH_COOKIE_SECRET and value form server to worker

  server:
    image: redash/redash:latest
    command: server
    depends_on:
      - postgres
      - redis
    ports:
      - "5000:5000"
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: "Q422k6vaXUk8"
      REDASH_WEB_WORKERS: 4      
    restart: always
  worker:
    image: redash/redash:latest
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_COOKIE_SECRET: "Q422k6vaXUk8"
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
    restart: always

how to generate REDASH_COOKIE_SECRET

just copy from server environment,you can see https://github.com/getredash/setup just run with docker-compose up

只需从服务器环境中复制,您就可以看到https://github.com/getredash/setup 刚与docker-compose up一起运行

不好意思,我不太理解您说的从服务器环境中复制。我描述一下我的疑问:我在配置redash-compose.yml的时候需要填写REDASH_COOKIE_SECRET,那我的REDASH_COOKIE_SECRET是从哪里获取呢。

Hey even after setting the same REDASH_COOKIE_SECRET for worker and server and scheduler (all three) I am getting this InvalidToken issue. Need help on this.

Was this page helpful?
0 / 5 - 0 ratings