swarm-trigger.pl -t shelvedel on windows creates new child process every secondswarm trigger perl windows
Posted 26 August 2019 - 07:26 PM
We run perforce server on windows (2018.2) and swarm on linux (2018.3). Every time any p4 user deletes file(s) from shelve it triggers (as expected) "swarm-trigger.pl -t shelvedel ..." which starts new child perl process with extra -z parameter every second until multiple perl processes eat up to 100% CPU then start slowly dying.
Any ideas what is wrong?
Posted 19 February 2020 - 11:51 PM
Posted 24 February 2020 - 05:25 PM
For example (modifying for your own trigger script and perl.exe locations):
swarm.shelvedel shelve-delete //... "%quote%C:\Strawberry\perl\bin\perl.exe%quote% %quote%C:\P4Triggers\Swarm\triggers\swarm-trigger.pl%quote% -t shelvedel -v %change% -w %client% -u %user% -s 2018.1 -a %quote%%argsQuoted%%quote% -d %quote%%clientcwd%%quote%"
In certain cases it looks like the -d arg that should contain just the clientcwd can slurp up all the rest of the args and leave the -s (server version) empty (as well as -a argsQuoted).
Posted 24 February 2020 - 11:51 PM
Posted 25 February 2020 - 11:48 PM
Posted 26 February 2020 - 09:59 AM
I noticed in one case the "p4 shelve -d" command the -d clientcwd argument was reported as being done from the A: drive and that was appearing with a "stray" unmatched double quote in the -d output right after the ":" char;
d = "a:" -a -df,-c,1191577 -s 2018.1"
I don't have a sensible explanation why it's being returned like that (some strangeness in the args pattern matching with a ":" at the end of the path?), I'm guessing that could be causing some odd parsing behaviour in the args array
Posted 26 February 2020 - 06:14 PM
Posted 26 February 2020 - 06:44 PM
It looks like the order of arguments is not important if server version is hard-coded. Moving -d argument at the end didn't help (kept -s %quote%%serverVersion%%quote%).
Posted 27 February 2020 - 12:04 PM
Posted 28 February 2020 - 08:09 PM
swarm.shelvedel shelve-delete //... "%quote%C:\Strawberry\perl\bin\perl.exe%quote% %quote%D:\swarmPerforce\triggers\swarm-trigger.pl%quote% -c %quote%D:\swarmPerforce\triggers\swarm-trigger.conf%quote% -t shelvedel -v %change% -w %client% -u %user% -d %quote%%clientcwd%%quote% -a %quote%%argsQuoted%%quote%"
It is missing the server version param, because it seemed that anything after it would not read in correctly. The "-z" that would be added wouldn't be read, so swarm-trigger.pl would continue to stop and spawn a child process with an additional "-z" indefinitely. There were definitely spaces in the result of %quote%%serverVersion%%quote%" but that seemed to be as intended. Removing the version checking since we're running P4 2018.1 fixed everything.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users