hetz commented on issue #9683:
URL: https://github.com/apache/superset/issues/9683#issuecomment-3227720477
Thanks for reporting this issue.
To apply a temporary fix, you can patch the SQLAlchemy `default.py` file
inside the `superset_app` container to conditionally skip the `rollback()` call
when connecting to a specific MySQL port (e.g., 3307). This is useful in
scenarios where the underlying database (like some MySQL setups) does not
expect or properly handle explicit rollback calls.
You can apply the patch and restart the container using the following
commands:
```bash
docker exec -i superset_app bash <<'EOF'
sed -i."$(date +%Y%m%d_%H%M%S)_bak" '/def do_rollback(self,
dbapi_connection):/{
N
s/dbapi_connection\.rollback()/\
try:\\n if getattr(dbapi_connection, "port", None) == 3307:\\n
return\\nexcept Exception:\\n pass\\n dbapi_connection.rollback()/
}' /app/.venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py
EOF
docker restart superset_app
```
**Explanation:**
- The `sed` command creates a timestamped backup of the original file.
- It modifies the `do_rollback` method to skip calling `rollback()` if the
connection's port is 3307 (commonly used for certain MySQL proxies or read
replicas).
- This change is ephemeral and will be lost if the container is rebuilt, so
consider baking this into a custom image for production use.
> ⚠️ **Note**: Modifying files inside a running container is not recommended
for production environments. This workaround is intended for testing or
temporary mitigation. A more robust solution would involve upgrading
SQLAlchemy, patching the application, or adjusting the database driver behavior.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]