ioBroker.js-controller icon indicating copy to clipboard operation
ioBroker.js-controller copied to clipboard

[bug]: Texting " dependency not fulfilled on any host"

Open mcm1957 opened this issue 10 months ago • 12 comments

No existing issues.

  • [x] There is no existing issue for my problem.

Describe the bug

If some adapter is installed (i.e. by using npm install) and the system does not fulfill required dependencies (i.e. amin dependency) the following error is logged:

startInstance system.adapter.kecontact.0 Adapter dependency not fulfilled on any host: required adapter "admin" has wrong version. Installed "7.2.6", required ">=7.4.10"!

In my oppinion this should read as dependency not fulfilled on AT LEAST ONE host: or dependency not fulfilled on SOME host:

In my understanding NAY indicates that the dependency must be fulfilled on any of the host only. But in fact ist must be fulfilles an ALL host.

@Apollon77 Please review - your english is better than mine :-)

To Reproduce

see description

Expected behavior

see description

Screenshots & Logfiles

n/a

Adapter version

7.2.6

js-controller version

7.0.6

Node version

v20.18.1

Operating system

raspian 10

Additional context

No response

mcm1957 avatar Mar 14 '25 11:03 mcm1957

Is it not the js-controller issue?

GermanBluefox avatar Mar 15 '25 18:03 GermanBluefox

seems you are right. sorry. please move the issue if possible.

mcm1957 avatar Mar 15 '25 19:03 mcm1957

@Apollon77 kannst du den zum js-controller schieben?

mcm1957 avatar Mar 29 '25 20:03 mcm1957

Hm it means "Abhängigkeit ist auf keinem Host erfüllt" why should it imply that it needs to be fulfilled on every host? Also you are proposing "some" which is pretty much the same as "any" just for positive sentences.. So for me this is not a real texting problem. Maybe a problem how some people are translating English to German..

foxriver76 avatar Mar 31 '25 07:03 foxriver76

An adapter requiring global dependency ie. admin 7.0.3 can only be installed if (in a multihost scenario) admin 7.0.3 is installed on ALL hosts. Often the master has admin 7.6.3 abut some slave exists with an older admin. In this case the adapter cannot be installed but the text "Abhängigkeit ist auf keinem Host erfüllt" is misleading here as admin is OK on the master but not on the slave.

So the text must be "Abhängigkeit ist nicht auf allen Hosts erfüllt" or "Abhängigkeit ist auf einem Hosts nicht erfüllt".

Maybe we need different text for dependency and globalDependency. But the existing text does not match for dependency either as in this case the dependency need to be fulfilled on the specified hot (and only there).

mcm1957 avatar Mar 31 '25 07:03 mcm1957

An adapter requiring global dependency ie. admin 7.0.3 can only be installed if (in a multihost scenario) admin 7.0.3 is installed on ALL hosts.

That is wrong. It needs an admin 7.0.3 on one (any) of the hosts!

foxriver76 avatar Mar 31 '25 07:03 foxriver76

An adapter requiring global dependency ie. admin 7.0.3 can only be installed if (in a multihost scenario) admin 7.0.3 is installed on ALL hosts.

That is wrong. It needs an admin 7.0.3 on one (any) of the hosts!

Do you have a multihost system running to tzest this in the near future? I would need to setup such a scenaio first

Forum discussions seem to proof that either

  • admin 7.6.3 must be running on master and NO admin is installed ion slave or
  • admin must be 7.6.3 an master AND slave

If admin is installed on slave and to old, then installation failes.

In my oppinion checking admin an all hosts is ok as an outdated admin would cause problems on slave if used there. Otherwise we would not need globalDependency at all as checking only the local host is done by dependency anyway.

(EDIT:) If someone has admin 7.6.3 installed on slave he would be able to install an adapter in slave requiring this release. But if he later tries to manage the adapter vom the master (whcih is the typical case) he would fail. I do not think that allowing an outdated version of a global Dependency is a good idea. So checking all node to either have the correct version or none is ok.

But its OK to suspend the text discussion until the checking has been verified.

mcm1957 avatar Mar 31 '25 07:03 mcm1957

The implementation of js-controller wants it to be on any host and thats the idea behind this, if its working wrong, then this would be a bug ticket not something to discuss about log messages. You can find the definition here https://github.com/ioBroker/ioBroker.js-controller?tab=readme-ov-file#define-adapter-dependencies-to-other-adapters

And yes if multiple admins are installed, then all need to match the version. Maybe in this scenario the logging is misleading.

foxriver76 avatar Mar 31 '25 07:03 foxriver76

The implementation of js-controller wants it to be on any host and thats the idea behind this, if its working wrong, then this would be a bug ticket not something to discuss about log messages. You can find the definition here https://github.com/ioBroker/ioBroker.js-controller?tab=readme-ov-file#define-adapter-dependencies-to-other-adapters

And yes if multiple admins are installed, then all need to match the version. Maybe in this scenario the logging is misleading.

No its not working wrong. It working eactly as you wrote:

Admin 7.6.3 must be installed at least on one host. BUT if it is installed on multiple hosts ALL must fulfill the version requirement

So in my oppinion its still a texting question. Maybe something like: "Abhängigkeit ist nicht erfüllt, prüfe andere Hosts" or "Abhängigkeit auf Host x.y.z nicht erfüllt" would be useful if multihost.

Back to the original Problem:

At forum often teh following "error" is posted: "I cannot instal ioBroker.xyz. It says that admin 7.6.3 is needed but requirement is not fulfilled. But I have admin 7.6.3 installed. Whats wrong?" In almost all cases the user has a slave and did not update admin there.

The goal of this issue is to make the problem selfexplaning to users. Any test which helps to solve the is ok for me.

mcm1957 avatar Mar 31 '25 08:03 mcm1957

Any suggestion to define to solution here?

Fact is: If i.e. Admin is installed at a node of the multihost system it must meet the requirement. If on any host amin ist ibstalled and is too old the installation check fails.

And the lgging is miskeading. So I still suggestvto change texting any node to some node or any other change which guides users to check their slave sydrems.

mcm1957 avatar Jul 03 '25 11:07 mcm1957

Maybe we adjust from "Adapter dependency not fulfilled on any host" to something like "Adapter dependency not fulfilled on all host where admin is installed" ?

Apollon77 avatar Aug 31 '25 12:08 Apollon77

Would be ok if Adapter dependency not fulfilled on all host where ADAPTER is installed" ?

The check 99,9% is used for admin only, but dependencies / globalDependencies is not hardcoded for admin

mcm1957 avatar Aug 31 '25 18:08 mcm1957