[bug]: Texting " dependency not fulfilled on any host"
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
Is it not the js-controller issue?
seems you are right. sorry. please move the issue if possible.
@Apollon77 kannst du den zum js-controller schieben?
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..
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).
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!
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.
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.
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.
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.
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" ?
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