Skip to content
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

"too many plugins" error #2133

Closed
markus2330 opened this issue Jul 28, 2018 · 6 comments
Closed

"too many plugins" error #2133

markus2330 opened this issue Jul 28, 2018 · 6 comments
Assignees
Labels

Comments

@markus2330
Copy link
Contributor

Due to a stupid optimization the number of plugins at a single position is limited to some arbitrary (very small) number. With Elektra getting more and more modular this is getting a major problem.

Steps to Reproduce the Problem

For example, in #914 the problem was already reported quite some time ago and you easily hit the problem if

  1. you have many validation plugins,
  2. write your own modular extensions,
  3. having modular storage plugins.

Expected Result

Mounting should work, regardless of the number of plugins.

Proposal

  1. The easiest but maybe most hacky way would be to use the list plugin. Here we would only need to adapt the mount logic and no other part of Elektra. It basically boils down to extend Backend::serialize in src/libs/tools/src/backend.cpp
  2. Another easy and very compatible way is to allow subpositions if the regular positions are all occupied. For example, if we need 2 postsetplugins, we would simply use setplugins/#6.0#sync#sync and setplugins/#6.1#otherplugin#otherplugin. Here we would need to adapt the mount logic and implement subpositions in elektraProcessPlugins, and fix the data structure _Backend.
  3. Redesign system/elektra/mountpoints to not contain any bounded numbers. Here we would need to pump the major number except if we have keep the old way to mount plugins as legacy.

Anyone interested in helping out here?

@markus2330 markus2330 changed the title resolve too many plugins error "too many plugins" error Jul 31, 2018
@markus2330 markus2330 assigned ghost Aug 10, 2018
@markus2330
Copy link
Contributor Author

There might be a 4th option (just a short reminder for myself, on interest I can explain more detailed):

4.) We could simply extend the mount tool and the bootstrapping process that there is no maximum number, even though we keep the numbering. The trick is that we dynamically tell at which number the commit should happen. This way the bootstrap only needs a constant number of ksLookups more, and at run-time there would be no changes in performance (no list needed). Big advantage of this way: current mountpoints would work without any modification. Disadvantage: No lazy loading of plugins, we would need a "lazy" plugin that loads plugins only on demand.

@ghost
Copy link

ghost commented Aug 19, 2018

Is there anybody here who could fix this crucial error? It is also needed for LCDproc.

I would do it myself if I had the necessary skills for it.

@markus2330
Copy link
Contributor Author

I think the first step is to decide what to do and give a more detailed description of how to do it. Can you do such a preparation work?

@ghost
Copy link

ghost commented Aug 20, 2018

I fear that my C/C++ skills are not enough for the preparation work unfortunately. I do not even understand any of your 1-4 possible suggested solutions 😞

@markus2330 markus2330 unassigned ghost Jan 23, 2019
@markus2330 markus2330 linked a pull request Mar 3, 2021 that will close this issue
14 tasks
@markus2330 markus2330 mentioned this issue Mar 7, 2021
20 tasks
@stale
Copy link

stale bot commented Apr 11, 2021

I mark this issue stale as it did not have any activity for one year. I'll close it in two weeks if no further activity occurs. If you want it to be alive again, ping the issue by writing a message here or create a new issue with the remainder of this issue.
Thank you for your contributions 💖

@stale stale bot added the stale label Apr 11, 2021
@stale
Copy link

stale bot commented Apr 25, 2021

I closed this issue now because it has been inactive for more than one year. If I closed it by mistake, please do not hesitate to reopen it or create a new issue with the remainder of this issue.
Thank you for your contributions 💖

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants