Toolkit Spiral Dependency Problem

Follow

PROBLEM:

Due to toolkit dependency rules, you can have a toolkit which will indirectly be dependent on an older version of itself.  In other words, a snapshot is referencing itself as a dependency which is a spiral (not circular) reference.  A simple way to illustrate this is:

A -> B -> C ->

A' -> B' -> C' ->

etc.

Where A, B, and C are all the latest snapshots but A' is the next oldest snapshot and so on.

SYMPTOMS:

When you try and deploy or export a process app with the above scenario, it can fail due to the export trying to include all the dependencies from the spiral dependency tree.  The problem is the export becomes very large and complex and this causes an exception to be thrown.

In the SystemOut.log, you should see something similar to:

[2/6/14 12:19:15:451 CST] 00000079 FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider
log Incident FFDC1003I: FFDC Incident emitted on /opt/ibm/WebSphere/AppServer/
profiles/BPMPSNode01/logs/ffdc/
ProcessServerTest.AppTarget.BPMTSTNode01.0_2d8fc131_14.02.06_12.19.15.4517093272585472957108.txt
processContributionDependencies 0x04 [2/6/14 12:19:15:451 CST] 00000079 IFDSRepoAdapt E There are 2 contributions called
XXXXXXXXXXXXXXXXXXXX. Please fix the dependency tree from YYYYYYYYYYYYYYYYYYYY
so that there is only 1.
com.lombardisoftware.core.TeamWorksException: There are 2 contributions called
XXXXXXXXXXXXXXXXXXXX. Please fix the dependency tree from YYYYYYYYYYYYYYYYYYYY
so that there is only 1.

And the FFDC, ProcessServerTest.AppTarget.BPMTSTNode01.0_2d8fc131_14.02.06_12.19.15.4517093272585472957108.txt:

[2/6/14 12:19:15:451 CST]     FFDC Exception:com.lombardisoftware.core.TeamWorksException
SourceId:processContributionDependencies ProbeId:0x04 Reporter:com.ibm.bpm.fds.repo.
adapter.JavaAdapter@8d94597c com.lombardisoftware.core.TeamWorksException: There are
2 contributions called XXXXXXXXXXXXXXXXXXXX. Please fix the dependency tree from
YYYYYYYYYYYYYYYYYYYY so that there is only 1.
...

REASON:

The reason the system can throw an error is due to the increasing complexity of the export file.  When you initiate an export/deployment, the BPM server will try and export the process app and all its toolkit dependencies.  Let's say one toolkit requested A, relies on toolkit B which relies on C and C, relies on an older version of A called A' (which relies on B' which relies on C' and so on).

As you can see the complexity of the export grows and at each step, the process app being included is probed for any additional dependencies causing the export to grow very large.

RESOLUTION:

Assuming you can spot this type of issue, it's simple enough to resolve by finding the item listed in YYYYYYYYYYYYYYYYYYYY above and checking it's dependency XXXXXXXXXXXXXXXXXXXX.  You may have to go a few levels deep to find the spiral dependency.

CAN BP3 HELP:

Yes, absolutely.  BP3 has tools available to BPLabs customer to detect and troubleshoot this kind of problem.  BP Labs customers can access our Dependency Checker tool here: https://bp3.zendesk.com/hc/en-us/articles/203100827.  If you are not a Labs customer or need help with the Dependency Checker, simply submit a ticket request at http://support.bp-3.com or email us at support@bp-3.com.  

CONCLUSION:

While this can be difficult to spot initially for exports, once identified and the dependency tree is fixed, you should be able to export or deploy your application.

Have more questions? Submit a request

Comments

Powered by Zendesk