|
The error messages written to the log file were always of the following form:
2008-02-28 15:39:55,566 INFO [BAM::10.11.11.234::Agent] [BuildAgentControllerImpl] Build TST-AM-1 started building on agent 10.11.11.234 The actual error messages from the p4 executable were truncated in the log file. Initially, when we had indicated the perforce server port as 'perforce:1666' ('perforce' being the name of the server machine) the full error message was: Perforce client error: To work around this problem we changed the port definition in the plan configuration to '<ip_address>:1666' only to end up with the following error: Perforce client error: This error message put us on the right track substituting a custom script in the agent's perforce capability for the actual p4 executable which works as described above: @set SystemRoot=C:\WINNT Now it works fine. Interestingly, the problem seems to occur only with the source code synchronization and not with the actual building step. Hi Thomas,
Thanks for your help. It seems the perforce library was putting in an arbitrary default value for the SystemRoot value. This has been amended, so it should now get the SystemRoot from your environment variables instead. This fix will be going out in the next beta release along with improved logging from Perforce. Cheers, |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Some rather lengthy debugging sessions revealed that the root cause of the problem seems to be that the system environment is transferred from the server to the agent. In our case the server is running on XP and the agent on W2K. When the perforce process was spawned on the agent machine the 'SystemRoot' variable had the (XP) value 'C:\WINDOWS' instead of the W2K value 'C:\WINNT' which seems to cause all sorts of strange behavior (such as inability to resolve the perforce server or 'WSAEPROVIDERFAILEDINIT' errors when trying to connect to the server). Using a wrapper script which sets the variable to the correct value before executing the actual p4 process solved the problem. Evidently, this is only a workaround and the problem should be fixed for the release version.