When trying to deploy a probe to a robot which reports to a downstream hub with its own distsrv the deployment may fail with a 'Dependency problem' error.
Cause
When the environment is configured to use 'Use remote distsrv on distribution' and the downstream distsrv is not using its local archive (meaning it will pull the package from the upstream distsrv) the downstream distsrv will check and validate that the upstream distsrv has ALL dependencies from ALL tabs present.
In the following log snippet the websphere 1.80 package was being deployed to a downstream x86 Linux robot. The downstream distsrv failed the deployment as it could not find the zLinux jre package in the upstream archive. Although the deployment is going to an Intel based Linux system the remote distsrv looks for all dependencies to be present in the up stream archive.
ex. downstream distsrv.log snippet
Feb 6 13:43:12:800 [7968] distsrv: ExtractVersion - 1.80 -> 1.800000 Feb 6 13:43:12:800 [1272] distsrv: --- CheckRemoteJobAdd done Feb 6 13:43:12:801 [7968] distsrv: TmpPackageFile (websphere, 1.80, 1) -> websphere=1.80.zip Feb 6 13:43:12:801 [7968] distsrv: Enter: unzip_this_file: is_defined _WIN32 Feb 6 13:43:12:803 [7968] distsrv: unzip successful for: jobs/polgr01-primary+system-2/websphere=1.80.zip Feb 6 13:43:12:803 [7968] distsrv: VerifyCrC 8107 bytes read by nimMD5Sum Feb 6 13:43:12:803 [7968] distsrv: VerifyCrc xUdJKJFSfaUsqz03Z08dtQ== is ok Feb 6 13:43:12:803 [7968] distsrv: cfgReader file open: C:\Nimsoft/archive/temp_d6/info.pkg Feb 6 13:43:12:804 [7968] distsrv: cfgReader file close: C:\Nimsoft/archive/temp_d6/info.pkg Feb 6 13:43:12:805 [7968] distsrv: TmpPackageFile - name = jre_zlinux, version = 1.70, match = 1 Feb 6 13:43:12:805 [7968] distsrv: ExtractVersion - 1.70 -> 1.700000 Feb 6 13:43:12:805 [7968] distsrv: TmpPackageFile (jre_zlinux, 1.70, 1) -> jre_zlinux=1.70.zip Feb 6 13:43:12:805 [7968] distsrv: RequestQueueGetResult - id=105: not found Feb 6 13:43:12:805 [7968] distsrv: RequestQueueRemove - id=105 Feb 6 13:43:12:805 [7968] distsrv: do_dependency_check - websphere to /polenta851win/secondaryHub/polgr01-robot Error when attempting to fetch package jre_zlinux - not found - will let the distribution fail Feb 6 13:43:12:805 [7968] distsrv: TmpPackageFile - name = jre_solaris, version = 1.6.0, match = 1 Feb 6 13:43:12:805 [7968] distsrv: ExtractVersion - 1.6.0 -> 1.060000 Feb 6 13:43:12:805 [7968] distsrv: TmpPackageFile (jre_solaris, 1.6.0, 1) -> jre_solaris=1.06.zip Feb 6 13:43:12:805 [7968] distsrv: Executing 'job_remote_request' to /polenta851win/primaryHub/polgr01-primary/distsrv (source=/polenta851win/secondaryHub/polgr01-secondary/distsrv, job_id=polgr01-primary+system-2, package=jre_solaris)... Feb 6 13:43:12:805 [7968] distsrv: RequestQueueAdd - address=/polenta851win/primaryHub/polgr01-primary/distsrv, request=job_remote_request, timeout=60 Feb 6 13:43:12:805 [7968] distsrv: request for jre_solaris performed (0/1) Feb 6 13:43:12:805 [7968] distsrv: websphere - Some dependency package is not yet fetched
Environment
Multiple Hubs with the Upstream Hub's distsrv configured to use 'Use remote distsrv on distribution' and the remote distsrv is not using its local archive.
Resolution
Ensure that the upstream archive contains all the necessary dependency packages. This can be done by editing the package in the IM Client and checking the 'Dependencies' Tab under each OS section Tab and then downloading any missing dependencies.
Note: The downstream hub will only deploy the necessary packages for the target robot OS. For example even though in this example it checks for jre_zlinux it will not deploy this package when the target is Intel Linux. The distsrv would check for java_jre 1.60 or greater as specified under the Linux Tab
An alternative would be to populate the downstream archive with the necessary packages (robot, websphere 1.80, java_jre) and then configure the downstream distsrv to use its local archive ('Use local archive for accepted remote distributions'). When this is enabled it will not check every dependency, it will only check the dependencies for the target OS in its local archive.