multinet-app / multinet-client

Multinet web client application
https://multinet-app.readthedocs.io
4 stars 3 forks source link

Issue making network with the network builder #256

Closed JackWilb closed 2 years ago

JackWilb commented 2 years ago

Here's the stack track from prod:

 Aug 24 09:03:59 next-multinet heroku/router at=info method=POST path="/api/workspaces/jack-movies/networks/from_tables/" host=api.multinet.app request_id=3b526b04-01a7-42f6-8069-330abb8a61d5 fwd="107.3.114.71" dyno=web.1 connect=0ms service=1477ms status=500 bytes=499 protocol=https
Aug 24 09:03:59 next-multinet app/web.1 [16:03:59] ERROR    Internal Server Error:                            log.py:224
Aug 24 09:03:59 next-multinet app/web.1                     /api/workspaces/jack-movies/networks/from_tables/           
Aug 24 09:03:59 next-multinet app/web.1                     Traceback (most recent call last):                          
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/django/core/handlers/exception.py", line             
Aug 24 09:03:59 next-multinet app/web.1                     47, in inner                                                
Aug 24 09:03:59 next-multinet app/web.1                         response = get_response(request)                        
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/django/core/handlers/base.py", line 181,             
Aug 24 09:03:59 next-multinet app/web.1                     in _get_response                                            
Aug 24 09:03:59 next-multinet app/web.1                         response = wrapped_callback(request,                    
Aug 24 09:03:59 next-multinet app/web.1                     *callback_args, **callback_kwargs)                          
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/sentry_sdk/integrations/django/views.py",            
Aug 24 09:03:59 next-multinet app/web.1                     line 67, in sentry_wrapped_callback                         
Aug 24 09:03:59 next-multinet app/web.1                         return callback(request, *args, **kwargs)               
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/django/views/decorators/csrf.py", line 54,           
Aug 24 09:03:59 next-multinet app/web.1                     in wrapped_view                                             
Aug 24 09:03:59 next-multinet app/web.1                         return view_func(*args, **kwargs)                       
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/rest_framework/viewsets.py", line 125, in            
Aug 24 09:03:59 next-multinet app/web.1                     view                                                        
Aug 24 09:03:59 next-multinet app/web.1                         return self.dispatch(request, *args,                    
Aug 24 09:03:59 next-multinet app/web.1                     **kwargs)                                                   
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/rest_framework/views.py", line 509, in               
Aug 24 09:03:59 next-multinet app/web.1                     dispatch                                                    
Aug 24 09:03:59 next-multinet app/web.1                         response = self.handle_exception(exc)                   
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/rest_framework/views.py", line 469, in               
Aug 24 09:03:59 next-multinet app/web.1                     handle_exception                                            
Aug 24 09:03:59 next-multinet app/web.1                         self.raise_uncaught_exception(exc)                      
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/rest_framework/views.py", line 480, in               
Aug 24 09:03:59 next-multinet app/web.1                     raise_uncaught_exception                                    
Aug 24 09:03:59 next-multinet app/web.1                         raise exc                                               
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/rest_framework/views.py", line 506, in               
Aug 24 09:03:59 next-multinet app/web.1                     dispatch                                                    
Aug 24 09:03:59 next-multinet app/web.1                         response = handler(request, *args, **kwargs)            
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/multinet/api/auth/decorators.py",              
Aug 24 09:03:59 next-multinet app/web.1                     line 53, in wrapper                                         
Aug 24 09:03:59 next-multinet app/web.1                         return func(*args, **kwargs)                            
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/multinet/api/views/network.py", line           
Aug 24 09:03:59 next-multinet app/web.1                     136, in from_tables                                         
Aug 24 09:03:59 next-multinet app/web.1                         network = create_csv_network(workspace,                 
Aug 24 09:03:59 next-multinet app/web.1                     serializer)                                                 
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/multinet/api/tasks/upload/csv.py",             
Aug 24 09:03:59 next-multinet app/web.1                     line 230, in create_csv_network                             
Aug 24 09:03:59 next-multinet app/web.1                         ArangoQuery(                                            
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/multinet/api/utils/arango.py", line            
Aug 24 09:03:59 next-multinet app/web.1                     147, in execute                                             
Aug 24 09:03:59 next-multinet app/web.1                         return                                                  
Aug 24 09:03:59 next-multinet app/web.1                     self.db.aql.execute(query=self.query_str,                   
Aug 24 09:03:59 next-multinet app/web.1                     bind_vars=self.bind_vars, **kwargs)                         
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/arango/aql.py", line 403, in execute                 
Aug 24 09:03:59 next-multinet app/web.1                         return self._execute(request,                           
Aug 24 09:03:59 next-multinet app/web.1                     response_handler)                                           
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/arango/api.py", line 74, in _execute                 
Aug 24 09:03:59 next-multinet app/web.1                         return self._executor.execute(request,                  
Aug 24 09:03:59 next-multinet app/web.1                     response_handler)                                           
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/arango/executor.py", line 65, in execute             
Aug 24 09:03:59 next-multinet app/web.1                         return response_handler(resp)                           
Aug 24 09:03:59 next-multinet app/web.1                       File "/app/.heroku/python/lib/python3.8/site-pa           
Aug 24 09:03:59 next-multinet app/web.1                     ckages/arango/aql.py", line 400, in                         
Aug 24 09:03:59 next-multinet app/web.1                     response_handler                                            
Aug 24 09:03:59 next-multinet app/web.1                         raise AQLQueryExecuteError(resp, request)               
Aug 24 09:03:59 next-multinet app/web.1                     arango.exceptions.AQLQueryExecuteError: [HTTP               
Aug 24 09:03:59 next-multinet app/web.1                     400][ERR 1233] AQL: edge attribute missing or               
Aug 24 09:03:59 next-multinet app/web.1                     invalid (while executing)                                   
Aug 24 09:03:59 next-multinet app/web.1 10.1.95.109 - - [24/Aug/2022:16:03:59 +0000] "POST /api/workspaces/jack-movies/networks/from_tables/ HTTP/1.1" 500 145 "https://multinet.app/" "Mozilla/5.0 (X11; Linux x86_64; rv:104.0) Gecko/20100101 Firefox/104.0"

This error happens when making a network from the movies tables (our cannonical example).

I think it's an issue where the edges are referencing nodes that don't yet exist. We should add all the nodes first and then make the edges that will join them.

jjnesbitt commented 2 years ago

All nodes are inserted before this query is run, this is being caused by failed joins (values in one table that don't have a corresponding value in the other) between the source/target table and the edge table.

This should be easy to fix.