This is a step by step tour of how to reproduce Jenkins issue 5413
Note that ClearCase is not needed. The configuration is just bogus, but the ClearCase entities must be fully qualified.
- Download the modified clearcase-ucm-plugin or build it from the source.
- In Manage Jenkins -> Configure System -> ClearCase UCM, check Allow polling on slaves.
- Create some remote slave.
- Create a new Jenkins job, using the ClearCase UCM plugin
When the job is created, create a file in the job folder named .lastbaseline(Remember the prefixed dot) and put baseline@\PVOB in it.Observe the polling hang, either with patience or the Monitoring plugin.
- Name the Stream stream@\PVOB.
- Name the Component comp@\PVOB.
- Set the Promotion Level to ANY.
- Restrict the job to be executed on the previously created slave.
- Make Jenkins poll the SCM as often as you like.
I have attached a configuration file, to ease the setup. Remember to force the job to run on a remote slave!
The remote operation failing has a completely empty invoke
body only returning a string.
When watching the thread in the Monitoring plugin, it is stuck in our logger object, trying to pass down logging information from the slave to the master log.
This is the method redirect()
, uncommenting this procedure will result in an uncaught null pointer exception. This null pointer
seems to be caused by the asynchronous operation's get operation. Because the invocation of the Callable object fails, the Future is null.
The exact same Callable object can be run, without problems, as long it's not in the polling phase.
An output snippet:
Started on Nov 14, 2011 11:23:35 AM
[CCUCM] Getting baselines for :
[CCUCM] * Stream: stream@\PVOB
[CCUCM] * Component: comp@\PVOB
[CCUCM] * Promotion level: ANY
[CCUCM] polling streams: self
Before getting last baseline
Trying to load baseline:baseline@\PVOB
This is where the polling hangs from.