You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Mark Thomas (Jira)" <ji...@apache.org> on 2023/04/20 10:41:00 UTC

[jira] (DAEMON-458) The changes in DAEMON-446 cause existing DependsOn values to be removed

    [ https://issues.apache.org/jira/browse/DAEMON-458 ]


    Mark Thomas deleted comment on DAEMON-458:
    ------------------------------------

was (Author: markt):
I see a couple of issues with the management of dependencies as this point.
 # There is no need to explicitly specify Tcpip and Afd - they get added automatically.
 # Changes made outside of procrun are lost the next time procrun makes a change (the basis of this bug report).

Note: The use of '++' and '–' work as expected with the 'DependsOn' option.

> The changes in DAEMON-446 cause existing DependsOn values to be removed
> -----------------------------------------------------------------------
>
>                 Key: DAEMON-458
>                 URL: https://issues.apache.org/jira/browse/DAEMON-458
>             Project: Commons Daemon
>          Issue Type: Bug
>    Affects Versions: 1.3.2, 1.3.3
>            Reporter: Brian Andle
>            Priority: Major
>
> As part of DAEMON-446 a regression was introduced that causes existing service DependsOn services to be removed when working with the //US option.
>  
> Replication:
> Run:
> {code:java}
> prunsrv.exe //IS/MyService --Startup=auto --Description=MyService --DisplayName=MyService
> sc config MyService depend=Tcpip/Afd/Dhcp {code}
> View the services and note that *MyService* depends on Dhcp (the sc config command is being used to represent a separate script call)
> Now run:
> {code:java}
> prunsrv.exe //US/MyService --Startup=manual {code}
> View the services and note that MyService no longer depends on Dhcp
> The offending code appears to be the following in service.c:
> {code:java}
>     /* Add the mandatory dependencies */
>     if (lpDependencies) {
>         lpDependencies = apxMultiSzCombine(NULL, lpDependencies,
>                                            L"Tcpip\0Afd\0", NULL);
>     } else {
>         lpDependencies = L"Tcpip\0Afd\0";
>     }{code}
> Which means if DependsOn isn't defined we'll always pass down Tcpip and Afd, vs the NULL that happened before. Wiping existing custom dependancies out.
> I didn't test it but this code may not work properly with the – vs ++ logic defined under [https://commons.apache.org/proper/commons-daemon/procrun.html] The DAEMON-446 ticket talks about --DependsOn (full replace) although I only see ++Depends on documented, so maybe DAEMON-446 was actually invalid to begin with?
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)