Skip to content

Bug report: Application crashed with MissingEntryPointError (WorkGraph) #1209

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
giovannipizzi opened this issue Mar 13, 2025 · 8 comments · Fixed by #1216
Closed

Bug report: Application crashed with MissingEntryPointError (WorkGraph) #1209

giovannipizzi opened this issue Mar 13, 2025 · 8 comments · Fixed by #1216
Assignees
Labels
automated-report bug Something isn't working

Comments

@giovannipizzi
Copy link
Member

Automated report

This issue was created with the app's automated bug reporting feature.
Attached to this issue is the full traceback as well as an environment
fingerprint that contains information about the operating system as well as all
installed libraries.

Additional comments (optional):

I opened the demo server, installed the most recent version of the AiiDAlab app, imported benzene and one of the three LiF muons examples (not sure anymore which of these three, it's the one with UUID 13ca2fc7-96e0-4b4d-b1ca-702ec2694bea). This error shows trying to open the LiF example. I guess one just needs to install the workgraph? (I confirm that a pip install aiida-workgraph fixes the problem).

Attachments

Traceback
/opt/conda/lib/python3.9/functools.py in wrapper(*args, **kw)
    886                             '1 positional argument')
    887 
--> 888         return dispatch(args[0].__class__)(*args, **kw)
    889 
    890     funcname = getattr(func, '__name__', 'singledispatch function')

/opt/conda/lib/python3.9/site-packages/aiida/orm/convert.py in _(backend_entity)
    116     from .utils.node import load_node_class
    117 
--> 118     node_class = load_node_class(backend_entity.node_type)
    119     return from_backend_entity(node_class, backend_entity)
    120 

/opt/conda/lib/python3.9/site-packages/aiida/orm/utils/node.py in load_node_class(type_string)
     63     if base_path.startswith('process'):
     64         entry_point_name = strip_prefix(base_path, 'nodes.')
---> 65         return load_entry_point('aiida.node', entry_point_name)
     66 
     67     # At this point we really have an anomalous type string. At some point, storing nodes with unresolvable type strings

/opt/conda/lib/python3.9/site-packages/aiida/plugins/entry_point.py in load_entry_point(group, name)
    274     :raises aiida.common.LoadingEntryPointError: entry point could not be loaded
    275     """
--> 276     entry_point = get_entry_point(group, name)
    277 
    278     try:

/opt/conda/lib/python3.9/site-packages/aiida/plugins/entry_point.py in get_entry_point(group, name)
    322     found = eps_select(group=group, name=name)
    323     if name not in found.names:
--> 324         raise MissingEntryPointError(f"Entry point '{name}' not found in group '{group}'")
    325     # If multiple entry points are found and they have different values we raise, otherwise if they all
    326     # correspond to the same value, we simply return one of them

MissingEntryPointError: Entry point 'process.workflow.workgraph' not found in group 'aiida.node'
Environment fingerprint
eNptWF1z47oN_SsZ9_XKE33YSfbtdt92dttts_fe6XQ6HkqiJcYUyZCUHeXO_veCAGgrnT76kCJB4OAA8J-bs_RBWbP5VP6ycVrE
o_XT5tOfG-G7UUXZxdnLzad_b_ZNq-Lml83mP7BviaM1h-unm3r7tC1rWL1Bf3l8LH5rZxPnu-
dv3-9-jPPdF2Huyv1d-fSpfPy0a-5--_H5rrqvdpufcKToTmKQAa_uX-YQf8i3COeU23p7DycLpXpRdDZZs6m2-219BcfFSf86yz
kt3W-r1X4X5NxbPOZhBb_OAgybZHBehpDWG3jBbf0ijFHSP93jXdX_Wyku1p-O2l4C7lkZqUWboA8nAnYY7YS277blx4VXhj-ecb
iofpAxHFoR6M0Nr9vCqZMAaL993JYEQah8tFYHdEGZTYZgvmJ8atqo5dSqDv3Bnxpjo4iyLyJ4kb5mT5mgqjFOGnc_bSvEFmXxvD
1_vZCV-B1zQDjXKx_ws2bbEDLZnqLzSIcndp1l4UQcEW7ofD9YUxXd8ajSi6-xv8FFq0yvzBBond-JDqq3VUVWhRjtSRqKDFyJ2G
K6wyCN9CJaj8aV-G2MaGv6Fg_7q2ilxi_LeyRZC9TshNYrciXIWR_D9jibDv1eaD8XnehGiWfv8eFt5xcXkV5kWivFHNVx1sHOrs
GFsqQVLeFjQHZgMQHKnCRZuku_4Ukj8wDNstHWlCAPEHBGOEFWoLdRK7esIvs5WfnZmugtPaokdqD1mUTJ4gbBEKVTxs0UZHYbwW
8QDUQpTt3VmXAgBrQDVioK5j1kBPCybDLMNpFjOORw-o5-j8IHGQsDDBZavaMjUohwUfluZqYTnzqtuhMAQGoMN_4uAtht8Mub3V
ZbLybBpNtlaCIiwjvoPGt6Qax4ugEFq1QxCtNDeAZODd4Q7ezxUZm3GH07eOHGBDdNPn3pdDaLnt_Ldh74W5K2XkIomao7fncvj3
OQ_dukOZoEgoiB50l2M4t7FU4H276AgIeYOUHk7U0gAcftRIkeiOMowHsMHAAhenjiwaVAsLF7XHGyZx4-pN-
zvqiOshjclSAJ2Tabo9U9kyOFRIL2SBM54xu-WE5C6cMZQtzzY7PeymmC-DOfIYmb7d53iTxwCPjVKhOJAoi9ddIlFwweEosfW-
GC7CDjOFTkxiNw9yVYE4DuyARwGr36qLTUFplUJwx3axUPbEbNPj9CsG-JstthxI4z1Uq4h8IMuliwvoJlzFe8BylxVu_kNJKZwU
tptIxsaILGHVKiTgmaDhyVS6pJypp-z5MwR68ksBG5Q_eq3gj8LO1RExAWRbtKmoDrU9IurdoCPCzA71RL8tfXVaiNwOgOq8Luuu
wWUCWDErlPPmIQ6ANX9esSrK40e9jWzRoqQIghKlytbrvBBYxUhHANxCMe6D1XsIAGAV6OZMyhVTH0wgwSWBBWXHqRvcpykbZ9Ue
ZFVORavOol9QLEzJL198WCArdcxXAPUGbHhW7Hv0EEJJGAvPOBVk12z8sMb5P-AKoE5CV_0BF5geh1LQaMF5B4Zy4B5dOHlYjpBI
nArFpdM87tSskYpKYEKIG5eAMLtwwpLcPK77fVw9WAKgnz_yzegoPuT-ad1OVWax4YCFbnV5BkaOFPqxyFrhPyFxqEbmW3Fu_LQV
tglL9mOcRjElMrWCipUmh9niBFiTgNJQpwfmCNf6Dq-U2cLF9Z4wY4ZnXIN7CotxfqZR8YmN2zOMpV3YEi4XQqpy33vM0HsFDIB4
7I_uOaTm1FkfmS-6BJhTgbyY0KHgcaZifSoIbrCGBxoRqaSsETQl4W66avTMqNm10hHLG9IWECxC1-tKuaN7kps52vCEMqbhxLRG
YdVa-6SImOmGk7LULADjIflTCmdW4wALIGQk5Upwpn2iNWWdQSUlZwBQhkasyU5VjsEY6pt36jlo52Dvqs5IXpkRgMqipba09oXE
OtTsaKMKpplRdmnio4sSfH76gFAbAlhuzv8y7mVUXNm4VWbcyxJjtWIpdkIllrfcp5khK4MHmEugSqORUpuYPOO0YBTR534wROUo
tVwQDg1a3GCQdthsg6VjNgO6hSEPjALqON0NOoE6k8N_-pblumGn4r35zsqBkl8rkhzJz26b0OhNmiC-
Ay3gFdlJYBejHJ4cX3KQ1zT7o-c-W74vhXeJNyNABRW-lOQ9L6QyonIAQHIyZuUakly1MnDw3psz3CkDgL0iV1johwiOCeErPUaa
6PuOxhwIqjnEOxYmTJ38Kii0XKlpOKTKSaV1zu23M36kKyGO-mwceFBRqkoULnPGEGZihNJMIvH1cGI7i1JuVwMF15C6V0PWE5aB
cKeRZ6pb1uaUEMCaCS-X35rI7__AM905Bn4OIgcrdWE3Jt0-CckqDZa0zAhjTOLVAaI-
Yuzja7FXa4DtbVA9tBC1CCYszzFnc_aS2M2G1fT5FH4lYqjnu0-lpWqty-fF--
_PEDAWbtAnoAnUCeDh7Je4xC6yT0ElQo6PCQt4ERvC9JJZVNKtnfl2_L8z--
shk1In8Tn_U6U5a_O2men79mhhKYvEcJm3hBxwMCM06m0SPf8AzSHPgPBXIGNjTQRUnmTAUPqVYroErmvGosGE-yUWg7DBy166IX
C7fNDQHv9PKSX_SvX799Rdm752veccYH1aLXvMoiF4UsJF6-ziC2DJGWZGw1tBL5_Zx0absIHjPKB2LUCt92pIuJtfvrUpGWijw6
JTHcPqbbQw1vMuGYpwhqXkOnIBML7E_XfGccxmFveB4qCWZ55mk1SNFab_IAWyEkT9cu7gkVIsiJeo-a3fUMLWP1wxOBS1bCAGGG
ykyFlMUYiD-77Mj9bks6Alp4kqb1UpxYyfeIQss8z6rPYU4ODuqN7KW6HCbhYwHDEzXEJJzBKBh87aoQpz8GgpJnyeGrts6GiFe7
gbye8weo_qtOzebCBKrxxWGEloIa9Hv-zyhEKEkFd_r33POEZTp2fHNDv28eTg_AenVY_cFDHgR4Ti0bp1k6HxguOoU9yhO7DyrU
BMLYW54cCRzBcb0Dp3ZR8_9IiIMX0ux1U4KaYLN0IVSrBj_azEo2Bn6rVf6kgL2v_wODoZKtoBEvvvYTasaeAgrUVCbEPD-
XVzBq6m13-Y2LS-MwDh2B5zn8RwNPfWfnovkJmbktuA5Os0n_esBlUWELWLPiz-54iPbA2_NwAdp9---DW-eacCBBnfsULHy_C5j
YltV4eVYhRyetX0Tsxt4OPKcg1EFY-a-3Ci-8yFYaaMJZ6zNJAA6geGkSzzW15FS4jJJJVpMUElMOTnplU-N4bXfK1XIw7dWFzIB
k8gUmYh596bC3Sa_mczJmEZ60vKSW5l05x534_ebnz_8C99JxZw==

By submitting this issue I confirm that I am aware that this information can
potentially be used to determine what kind of calculation was performed at the
time of error.

@giovannipizzi
Copy link
Member Author

Ah OK, I realize the issue is actually another! The plugin is not installed.
Is it possible to detect that we imported a calculation but the corresponding plugin is not installed, and still show the tabs (e.g. a Muon tab) but inside them have a message that says "Please install plugin XXX from the [PLUGIN REGISTRY] (link) to see the content of this result panel".

@mikibonacci
Copy link
Member

I was testing the loading of the muon calculation in case no muon plugin was there, but actually workgraph was installed, that's why I did not catch the issue.

However, looking at the code in the qe app, I am not sure we can easily show the other result panels and just put a message in the muon one. The problem seems to be the called_descendants attribute of the node, which is accessed before the loop on the single plugin output results. But maybe I am wrong (@edan-bainglass, @superstar54).

Would it be fine to just not show any result in case the plugin is not installed, but showing a message like the one you wrote, @giovannipizzi? I think this is much easier to be implemented and, in the end, we need the plugin to be installed.

@giovannipizzi
Copy link
Member Author

You mean that message somewhere in the results panel(s)? Yes, I think that's enough

@mikibonacci
Copy link
Member

yes, precisely

@edan-bainglass
Copy link
Member

Sure, we can do this

@mikibonacci
Copy link
Member

I solved this here: #1216.

we actually put a check when trying to import an example:

Image

@superstar54
Copy link
Member

Hi @mikibonacci , thanks for the quick fix. Add the warning message here, which can indeed let people be aware when importing the examples.
Apart from this, I am thinking we need a general solution to handle this, because people can share the calculations using QEapp with others, which should not crash the app even if the plugin is not installed.
One way is: in the result panel, when reading the outputs/nodes of the main QEapp WorkChain, we may use try...except to catch the error, and show the result accordingly.

@mikibonacci
Copy link
Member

Hi @superstar54 , I agree with you, we should also handle the issue if a direct upload of a node is done. Let's keep this in mind, because the solution may not be as simple as this. For example, the error printed in this case would be that the workgraph process is not recognized (because aiida-workgraph was not installed), and this was not detected during the muon panel rendering, but when called_descendants was called somewhere in step 4 (you can reproduce the error uninstalling the plugin and loading a muon calc). So, the user will not understand that the plugin needs to be installed. I have no clear solution in mind, right now.

Let's discuss when I come back

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automated-report bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants