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: [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]

Reply via email to