Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re^4: Win32::Daemon service doesn't reach RUNNING state

by SwaJime (Scribe)
on May 30, 2019 at 17:22 UTC ( #11100733=note: print w/replies, xml ) Need Help??

in reply to Re^3: Win32::Daemon service doesn't reach RUNNING state
in thread Win32::Daemon service doesn't reach RUNNING state

More info:

On this system it turns out there are two copies of Win32::Daemon. When I get a chance I will confirm which one is active, but I am pretty sure at the moment it is the newer one. So I have been programming for and testing with a copy of the older version. But this system we deployed to appears to be trying to load the newer and erroring out.

Version coded for: $VERSION = 20131206;

Version erroring out: $VERSION = '20181025';

  • Comment on Re^4: Win32::Daemon service doesn't reach RUNNING state

Replies are listed 'Best First'.
Re^5: Win32::Daemon service doesn't reach RUNNING state
by SwaJime (Scribe) on May 31, 2019 at 12:57 UTC

    So for this I'm obviously going to have to change the service so that it can detect the version and compile whether it is 20131206 or 20181025/higher ... That should be an interesting task.

    If anybody has already done this please let me know!

    The issues reported so far in this thread rg 20131206 are still unresolved. :-(

    On one system, Callback_Running is never called.

    On another system, Callback_Running is called but Win32::Daemon::State() never returns SERVICE_RUNNING when queried by Callback_Running, even though it is set by Callback_Start. I have not been able to confirm that doubling the line mentioned earlier resolves this issue.

    Thanks for all the help so far. This has been difficult to coordinate client screentime with Monk availability.

      Good news! We found the call to set the delay has a max somewhere between 5000 and 10000 on the affected systems. So the workaround, which is working:
      our $isleep = 15; # Number of seconds to sleep between iterations { my $counter = 0; sub Callback_Running { my($Event, $Context) = @_; if(SERVICE_RUNNING == Win32::Daemon::State()) { $counter += 5; print $fh $counter . "\n"; if ($counter >= $iSleep * 60) { print $fh "Checking in.\n"; # do stuff; $counter = 0; } $Context->{last_state} = SERVICE_RUNNING; Win32::Daemon::State( SERVICE_RUNNING ); } } }
      However, resume after pause still does not work
      C:\Users\john\test>net continue TestService . The Test Service (TestService) service failed to resume. More help is available by typing NET HELPMSG 3538.

      After pausing Repeated messages "The Test Service (TestService) service has reported an invalid current state 0." in event viewer. Continue does not work.

        Trying to implement the 2018 version of Daemon into my code.

        Basing on

        However it seems SERVICE_STOPPED and SERVICE_RUNNING ate not defined ???

        Undefined subroutine &Win32::Daemon::SERVICE_STOPPED called at test-sv line xxx.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11100733]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2022-05-22 12:02 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (80 votes). Check out past polls.