Why does my CCM plugin cause a StackOverflowError in Launch callback handler?
I have been developing a server-side participant plugin against my development copy of CCM 4.0.3. I was successfully able to deploy and use it locally during development.
After I installed Jazz and CCM 4.0.6 locally to match our new production environment, and deployed my plugin to this new installation, I am getting the following error in my Tomcat window:
INFO: Deploying web application archive C:\Program Files\IBM\JazzTeamServer_406_Dev\server\tomcat\webapps\ccm.war Exception in thread "Launch callback handler" java.lang.StackOverflowError at java.nio.CharBuffer.wrap(CharBuffer.java:361) at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:399) at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:159) at java.io.OutputStreamWriter.emptyBuffer(OutputStreamWriter.java:289) at java.io.OutputStreamWriter.write(OutputStreamWriter.java:251) at java.io.PrintWriter.write(PrintWriter.java:423) at java.io.PrintWriter.write(PrintWriter.java:440) at java.io.PrintWriter.print(PrintWriter.java:570) at java.io.PrintWriter.println(PrintWriter.java:706) at com.ibm.team.repository.provision.internal.ProvisionService.installFeature(ProvisionServi ce.java:382) at com.ibm.team.repository.provision.internal.ProvisionService.installFeature(ProvisionServi ce.java:408) at com.ibm.team.repository.provision.internal.ProvisionService.installFeature(ProvisionServi ce.java:408) (*above line repeats many times *) at com.ibm.team.repository.provision.internal.ProvisionService.installFromProfileProperties( ProvisionService.java:952) at com.ibm.team.repository.provision.internal.ProvisionService.installFromProfiles(Provision Service.java:1009) at com.ibm.team.repository.provision.internal.ProvisionService.installFromProfileNoWait(Prov isionService.java:1143) at com.ibm.team.repository.provision.internal.ProvisionService.installFromProfile(ProvisionS ervice.java:1081) at com.ibm.team.repository.provision.internal.ProvisionService.installFromContextConfigurati onUrl(ProvisionService.java:1160) at com.ibm.team.jfs.app.install.Activator$1.run(Activator.java:172) at java.lang.Thread.run(Thread.java:761)
The steps I took are:
- Install Jazz server and apps (v.4.0.6).
- Upgrade my RTC client from 4.0.3 to 4.0.6.
- Clear feature and plugin jars from my plugin's update-site.
- "Rebuild All" in update site and copy update site to server/conf/ccm/sites to match previous setup
- Copy old provision profile .ini file to new location
- Start server
Please let me know what other information I might need to provide to diagnose this.
One answer
I figured out my issue. I must have clicked "compute dependencies" on my plugin feature.
To fix, I recreated my dependencies by manually replacing the computed dependencies (plugins) with their respective server features as explained in the IBM Rational Team Concert 4.x Extensibility Lab.
Looking at the source of
To fix, I recreated my dependencies by manually replacing the computed dependencies (plugins) with their respective server features as explained in the IBM Rational Team Concert 4.x Extensibility Lab.
Looking at the source of
installFeature
, it looks like it calls itself recursively as it walks your dependency graph. So I'm guessing my dependencies were circular, causing
installFeature
to overflow the stack.