Can't delete any table, or folder.

jmomarty
Level 1
Can't delete any table, or folder.

Screenshot 2022-11-28 at 21.01.41.png

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

0 Kudos
3 Replies
JordanB
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.

Screen Shot 2022-11-28 at 4.32.17 PM.png

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

jmomarty
Level 1
Author

It worked Jordan, amazing ๐Ÿ™‚

I removed the bad boy recipe and it works again, thanks.

Clement
Level 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