Bug description

Superset shows message "Unable to migrate query editor state to backend. Superset will retry later. Please contact your administrator if this problem persists." every second

How to reproduce the bug

Cereate a query in MySQL using multiple schemas.

Screenshots/recordings

No response

Superset version

master / latest-dev

Python version

3.10

Node version

Not applicable

Browser

Chrome

Additional context

Custom project structure:

project/
├── docker-compose.yml
├── env
└── superset
    └── superset main repository files

Superset Logs

superset_app          | 2024-09-20 15:53:35,980:WARNING:superset.views.error_handling:Exception
superset_app          | Traceback (most recent call last):
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
superset_app          |     rv = self.dispatch_request()
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
superset_app          |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_appbuilder/security/decorators.py", line 177, in wraps
superset_app          |     return f(self, *args, **kwargs)
superset_app          |   File "/app/superset/views/sql_lab/views.py", line 94, in post
superset_app          |     database_id=query_editor["dbId"],
superset_app          | KeyError: 'dbId'
superset_app          | 2024-09-20 15:53:35,981:ERROR:superset.views.error_handling:'dbId'
superset_app          | Traceback (most recent call last):
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
superset_app          |     rv = self.dispatch_request()
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
superset_app          |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
superset_app          |   File "/usr/local/lib/python3.10/site-packages/flask_appbuilder/security/decorators.py", line 177, in wraps
superset_app          |     return f(self, *args, **kwargs)
superset_app          |   File "/app/superset/views/sql_lab/views.py", line 94, in post
superset_app          |     database_id=query_editor["dbId"],
superset_app          | KeyError: 'dbId'
superset_app          | 187.105.178.160 - - [20/Sep/2024:15:53:35 +0000] "POST /tabstateview/ HTTP/1.1" 500 205 "http://140.238.182.144:8088/sqllab" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
superset_app          | 187.105.178.160 - - [20/Sep/2024:15:53:36 +0000] "GET /api/v1/me/ HTTP/1.1" 200 150 "http://140.238.182.144:8088/sqllab" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"

Custom docker-compose.yml


x-common-build: &common-build
  context: superset
  target: dev

x-depends-on: &depends-on
  redis:
    condition: service_started
  superset_init:
    condition: service_completed_successfully

x-superset-base: &superset-base
  restart: always
  env_file:
    - path: ./superset/docker/.env
      required: true
    - path: ./.env
      required: false
  build:
    <<: *common-build
  volumes:
    - superset:/app/superset_home
    - ./superset/docker:/app/docker
  networks:
    - superset
    - postgres


services:
  redis:
    image: redis:7-alpine
    container_name: superset_cache
    restart: always
    volumes:
      - redis:/data
    networks:
      - superset

  superset_init:
    <<: *superset-base
    container_name: superset_init
    command: ["/app/docker/docker-init.sh"]
    restart: "no"
    healthcheck:
      disable: true

  superset_app:
    <<: *superset-base
    container_name: superset_app
    command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"]
    ports:
      - 8088:8088
    depends_on:
     <<: *depends-on

  superset-worker:
    <<: *superset-base
    container_name: superset_worker
    command: ["/app/docker/docker-bootstrap.sh", "worker"]
    depends_on:
     <<: *depends-on
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "celery -A superset.tasks.celery_app:app inspect ping -d celery@$$HOSTNAME",
        ]

  superset_worker_beat:
    <<: *superset-base
    container_name: superset_worker_beat
    command: ["/app/docker/docker-bootstrap.sh", "beat"]
    depends_on:
     <<: *depends-on
    healthcheck:
      disable: true

volumes:
  redis:
  superset:

networks:
  superset:
    driver: bridge
    name: superset
  postgres:
    name: postgres
    external: true

.env

DATABASE_HOST=postgres
DATABASE_PASSWORD=[...]
DATABASE_DB=superset

POSTGRES_PASSWORD=${DATABASE_PASSWORD}
POSTGRES_DB=${DATABASE_DB}

FLASK_DEBUG=false
SUPERSET_ENV=production
SUPERSET_LOAD_EXAMPLES=false

SUPERSET_SECRET_KEY=[...]
ADMIN_PASSWORD=[...]

Checklist

  • [X] I have searched Superset docs and Slack and didn't find a solution to my problem.
  • [X] I have searched the GitHub issue tracker and didn't find a similar bug report.
  • [X] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

Comment From: eduardopilatinuvemshop

Apparently all functions work normally. It just keeps displaying this error all the time.

Comment From: ideologysec

You do not appear to have a database connected, which Superset needs for metadata storage to my understanding (Postgres is the default in docker compose).

https://superset.apache.org/docs/installation/docker-compose/#docker-compose-tips--configuration

Comment From: zsw4579

Apparently all functions work normally. It just keeps displaying this error all the time.

May I ask if it has been solved at present? How was it solved?

Comment From: giucas-falchetto

I have the same problem/error. Any solution?

Comment From: rusackas

For those who are still facing this, what version are you running? Curious if this is happening after 5.0, or if indeed @ideologysec is correct that a metadata database is not configured (or is an unsuported db for that purpose).

Comment From: zsw4579

For those who are still facing this, what version are you running? Curious if this is happening after 5.0, or if indeed @ideologysec is correct that a metadata database is not configured (or is an unsuported db for that purpose).

I found it after version 4.0.2