You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The issue with this is that if we allow plugins to process other plugins when they dynamically loaded, we are going to get deadlocks.
For example, the following sequence of plugins will cause a deadlock because the first plugin will depend on the second one to load, and the second one depends on the first to load.
P1 -> P2.
Deadlock: P1 triggers P2 to load so that P1 can be processed by P2. When P1 is loading P2, P2 then needs to load P1 so that P2 can be processed by P1. This is a deadlock...
So, we should only do forward processing. Meaning, P1 can load P2 so that P2 can process P1, but P2 cannot load P1 so that P1 can process P2. This approach is a bit fragile because users will need to be aware of this. Ultimately, we completely block plugins from processing other plugins by automatically adding dynamic plugins to the ignore list.
The text was updated successfully, but these errors were encountered:
The issue with this is that if we allow plugins to process other plugins when they dynamically loaded, we are going to get deadlocks.
For example, the following sequence of plugins will cause a deadlock because the first plugin will depend on the second one to load, and the second one depends on the first to load.
P1 -> P2.
Deadlock: P1 triggers P2 to load so that P1 can be processed by P2. When P1 is loading P2, P2 then needs to load P1 so that P2 can be processed by P1. This is a deadlock...
So, we should only do forward processing. Meaning, P1 can load P2 so that P2 can process P1, but P2 cannot load P1 so that P1 can process P2. This approach is a bit fragile because users will need to be aware of this. Ultimately, we completely block plugins from processing other plugins by automatically adding dynamic plugins to the
ignore
list.The text was updated successfully, but these errors were encountered: