You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2022/04/29 13:35:49 UTC

[GitHub] [superset] lakeron opened a new issue, #19896: Some Binary UUID can be read with mysql-connector-python 8.0.29

lakeron opened a new issue, #19896:
URL: https://github.com/apache/superset/issues/19896

   Once the `mysql-connecot-python` upgraded to 8.0.29 we start to see this error
   
   Here is screenshot form corrupted dashboard
   ![](https://files.slack.com/files-pri/T025EMW7D-F03D1ADCZQF/screenshot_2022-04-29_at_08.41.13.png)
   
   ### Traceback 
   ```
   │ superset Traceback (most recent call last):                                                                                                                                                                                                                                         
   │ superset   File "/usr/local/lib/python3.7/site-packages/flask_appbuilder/api/__init__.py", line 85, in wraps                                                                                                                                                                        
   │ superset     return f(self, *args, **kwargs)                                                                                                                                                                                                                                        
   │ superset   File "/app/superset/views/base_api.py", line 85, in wraps                                                                                                                                                                                                                
   │ superset     raise ex                                                                                                                                                                                                                                                               
   │ superset   File "/app/superset/views/base_api.py", line 82, in wraps                                                                                                                                                                                                                
   │ superset     duration, response = time_function(f, self, *args, **kwargs)                                                                                                                                                                                                           
   │ superset   File "/app/superset/utils/core.py", line 1429, in time_function                                                                                                                                                                                                          
   │ superset     response = func(*args, **kwargs)                                                                                                                                                                                                                                       
   │ superset   File "/app/superset/utils/log.py", line 241, in wrapper                                                                                                                                                                                                                  
   │ superset     value = f(*args, **kwargs)                                                                                                                                                                                                                                             
   │ superset   File "/app/superset/dashboards/api.py", line 393, in get_charts                                                                                                                                                                                                          
   │ superset     charts = DashboardDAO.get_charts_for_dashboard(id_or_slug)                                                                                                                                                                                                             
   │ superset   File "/app/superset/dashboards/dao.py", line 56, in get_charts_for_dashboard                                                                                                                                                                                             
   │ superset     return DashboardDAO.get_by_id_or_slug(id_or_slug).slices                                                                                                                                                                                                               
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/attributes.py", line 287, in __get__                                                                                                                                                                         
   │ superset     return self.impl.get(instance_state(instance), dict_)                                                                                                                                                                                                                  
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/attributes.py", line 723, in get                                                                                                                                                                             
   │ superset     value = self.callable_(state, passive)                                                                                                                                                                                                                                 
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/strategies.py", line 760, in _load_for_state                                                                                                                                                                 
   │ superset     session, state, primary_key_identity, passive                                                                                                                                                                                                                          
   │ superset   File "<string>", line 1, in <lambda>                                                                                                                                                                                                                                     
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/strategies.py", line 902, in _emit_lazyload                                                                                                                                                                  
   │ superset     .with_post_criteria(set_default_params)                                                                                                                                                                                                                                
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/ext/baked.py", line 544, in all                                                                                                                                                                                  
   │ superset     return list(self)                                                                                                                                                                                                                                                      
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/loading.py", line 100, in instances                                                                                                                                                                          
   │ superset     cursor.close()                                                                                                                                                                                                                                                         
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__                                                                                                                                                                       
   │ superset     with_traceback=exc_tb,                                                                                                                                                                                                                                                 
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 182, in raise_                                                                                                                                                                             
   │ superset     raise exception                                                                                                                                                                                                                                                        
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/loading.py", line 80, in instances                                                                                                                                                                           
   │ superset     rows = [proc(row) for row in fetch]                                                                                                                                                                                                                                    
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/loading.py", line 80, in <listcomp>                                                                                                                                                                          
   │ superset     rows = [proc(row) for row in fetch]                                                                                                                                                                                                                                    
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/loading.py", line 588, in _instance                                                                                                                                                                          
   │ superset     populators,                                                                                                                                                                                                                                                            
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/orm/loading.py", line 725, in _populate_full                                                                                                                                                                     
   │ superset     dict_[key] = getter(row)                                                                                                                                                                                                                                               
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/type_api.py", line 1278, in process                                                                                                                                                                          
   │ superset     return process_value(impl_processor(value), dialect)                                                                                                                                                                                                                   
   │ superset   File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/sqltypes.py", line 946, in process                                                                                                                                                                           
   │ superset     value = bytes(value)                                                                                                                                                                                                                                                   
   │ superset TypeError: string argument without an encoding                                                                                                                                                                                                                             
   ```
   
   ### Hotfix
   During debugging we found out that the problem is connected to UUID that is stored as BINARY. 
   To remedy the problem: 
   - find the problematic UUID and change the UUID to any random value and the system start to work
   - downgrade to `mysql-connecot-python==8.0.28`
   
   
   ### Root case
   We tried to discover whats the problem with UUIDs but we hadn't figure out why some of them are unable to read. Due to we are unsure how to solve the situation. 
   
   #### Regenerate UUID
   We thought about regenerate all UUIDs. But if the problem is that some BINARY stored UUID are unable to ready than regeneration wont help. Also we are not sure if it could cause other issue.
   
   #### Change UUID type to VARCHAR
   Not sure if it would work. But it could be option. We don't like that we introduce a change that will create discrepancy between superset master and our implementation.


-- 
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: notifications-unsubscribe@superset.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] rusackas commented on issue #19896: Some Binary UUID can be read with mysql-connector-python 8.0.29

Posted by "rusackas (via GitHub)" <gi...@apache.org>.
rusackas commented on issue #19896:
URL: https://github.com/apache/superset/issues/19896#issuecomment-1572888827

   Is anyone still facing this, or is ti resolved? Hoping that the thread went silent for good reason :) 


-- 
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: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] Some Binary UUID can be read with mysql-connector-python 8.0.29 [superset]

Posted by "rusackas (via GitHub)" <gi...@apache.org>.
rusackas closed issue #19896: Some Binary UUID can be read with mysql-connector-python 8.0.29
URL: https://github.com/apache/superset/issues/19896


-- 
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: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] Some Binary UUID can be read with mysql-connector-python 8.0.29 [superset]

Posted by "rusackas (via GitHub)" <gi...@apache.org>.
rusackas commented on issue #19896:
URL: https://github.com/apache/superset/issues/19896#issuecomment-1975649245

   Closing this as stale since it's been silent for so long, and we're trying to steer toward a more actionable Issues backlog. If people are still encountering this in current versions (currently 3.x) please re-open this issue, open a new Issue with updated context, or raise a PR to address the problem. Thanks!
   


-- 
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: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org