Can't delete any table, or folder.
When I click on "delete" on any table or folder of my project, I get this modal with this error "invalid argument : invalid loc : empty name". It works on recipe though.
I have all rights on the project and it used to work well.
Operating system used: Mac OS X
Answers
-
JordanB Dataiker, Dataiku DSS Core Designer, Dataiku DSS Adv Designer, Registered Posts: 296 Dataiker
Hi @jmomarty
,This error can stem from a recipe with invalid entries. When this happens, the recipe is typically not visible in the flow, however, it should be visible in the recipe list. You can check the recipe's in your flow against the recipes in the "Recipe" list (referenced below). To fix the issue, you would need to delete the invalid recipe from the recipe list.
If you cannot locate the invalid recipe, could you please reproduce the issue (attempt to delete a dataset/folder), then could you please open a support ticket and attach a diagnostic of the DSS instance (Administration > Maintenance > Diagnostic tool) and send us the resulting file?
Thanks!
Jordan
-
It worked Jordan, amazing
I removed the bad boy recipe and it works again, thanks.
-
Clement Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 1 ✭✭✭
Hello,
I stumbled upon the same issue on a project which is quiet voluminous therefore finding the culprit in the list of recipe was exhausting. Therefore I made a quick code using the Python API to perform those steps, hope it will help some other users facing the same issue!
Mainly I use the API to fidn all the recipe listed inside the recipe list and the flow and compute the difference:
#First get a handle over your project
client = dataiku.api_client()
Prj = client.get_project('Prj_key')#List of recipes from the project reicpe list
recipes_list = pd.json_normalize(Prj .list_recipes())[['name']]#Recover flow, graph and list of item inside the said flow:
flow = Prjget_flow()
graph = flow.get_graph()
items = pd.json_normalize(graph.get_items_in_traversal_order(as_type='dict'))#Recover list of recipes from the flow
recipe_list_from_flow = items[items['type'].str.contains('RECIPE')].reset_index(drop=True)[['ref']]
#At this point if you display recipe_list_from_flow and recipes_list
#you should see using the indexes that recipe_list_from_flow is missing one (or more) lines#Using python set we can find the differences between the two list ie the corrupted recipes!
set(recipes_list['name'].to_list()) - set(recipe_list_from_flow['ref'].to_list())Hope this help!
Clément